人工神經網絡
人工神經網絡(Artificial Neural Network,ANN)是指一系列受生物學和神 經學啓發的數學模型。這些模型主要是通過對人腦的神經元網絡進行抽象,構 建人工神經元,並按照一定拓撲結構來建立人工神經元之間的連接,來模擬生 物神經網絡。在人工智能領域,人工神經網絡也常常簡稱爲神經網絡(Neural Network,NN)或神經模型(Neural Model)。
神經元
人工神經元(Artificial Neuron),簡稱神經元(Neuron)也叫感知器,是構成神經網絡的基本單元,其主要是模擬生物神經元的結構和特性,接受一組輸入信號 產出輸出。
生物學家在20世紀初就發現了生物神經元的結構。一個生物神經元通常具 有多個樹突和一條軸突。樹突用來接受信息(輸入層),軸突用來發送信息(輸出層)。當神經元所 獲得的輸入信號的積累超過某個閾值時(激活函數),它就處於興奮狀態,產生電脈衝。軸突尾端有許多末梢可以給其他個神經元的樹突產生連接(突觸),並將電脈衝信 號傳遞給其它神經元。
一個神經元(感知器)有如下組成部分:
-
輸入權值 一個感知器可以接收多個輸入,每個輸入上有一個權值 ,此外還有一個偏置項,就是上圖中的。
-
激活函數 感知器的激活函數可以有很多選擇,比如我們可以選擇下面這個階躍函數來作爲激活函數:
- 輸出 感知器的輸出由這個公式來計算
激活函數
激活函數在神經元中非常重要的。爲了增強網絡的表示能力和學習能 力,激活函數需要具備以下幾點性質:
- 連續並可導(允許少數點上不可導)的非線性函數。可導的激活函數可以 直接利用數值優化的方法來學習網絡參數。
- 激活函數及其導函數要儘可能的簡單,有利於提高網絡計算效率。
- 激活函數的導函數的值域要在一個合適的區間內,不能太大也不能太小, 否則會影響訓練的效率和穩定性。
常見的激活函數有sigmoid、tanh、relu,
推薦文章:26種神經網絡激活函數可視化,英文鏈接
前饋神經網絡
一個生物神經細胞的功能比較簡單,而人工神經元只是生物神經細胞的理 想化和簡單實現,功能更加簡單。要想模擬人腦的能力,單一的神經元是遠遠 不夠的,需要通過很多神經元一起協作來完成複雜的功能。這樣通過一定的連 接方式或信息傳遞方式進行協作的神經元可以看作是一個網絡,就是神經網絡。目前最常見的神經網絡結構有三種:前饋網絡、反饋網絡、圖網絡。本次只講前饋網絡。
前饋網絡中各個神經元按接受信息的先後分爲不同的組。每一組可以看作 一個神經層。每一層中的神經元接受前一層神經元的輸出,並輸出到下一層神 經元。整個網絡中的信息是朝一個方向傳播,沒有反向的信息傳播,可以用一 個有向無環路圖表示。前饋網絡包括全連接前饋網絡和卷積神經網絡等。
前饋神經網絡的目的是對於輸入 ,假設我們要模擬從輸入到輸出的真實函數 ,神經網絡想要找到這樣的映射 和合適的參數 使得其預測儘量接近於真實函數。
正則化
機器學習的關鍵問題是泛化性,即要避免過擬合。由於神經網絡的擬合能力強且過度參數化,導致模型的泛化性很差。如何提高神經網絡的泛化能力?通常做法是正則化、Dropout。
正則化(Regularization)是一類通過限制模型複雜度,從而避免過擬合,提 高泛化能力的方法,包括引入一些約束規則,增加先驗、提前停止等。
和正則化
正則化主要是在目標函數後額外添加一項,作爲懲罰項。
數據增強
深層神經網絡一般都需要大量的訓練數據才能獲得比較理想的效果。在數 據量有限的情況下,可以通過數據增強(Data Augmentation)來增加數據量,提 高模型魯棒性,避免過擬合。目前,數據增強還主要應用在圖像數據上,在文本等 其它類型的數據還沒有太好的方法。
權重衰減
在每次參數更新時,引入一個衰減系
提前停止
由於深層神經網絡的擬合能力非常強,因此比較容易在訓練集上過擬合。在 使用梯度下降法進行優化時,我們可以使用一個和訓練集獨立的樣本集合,稱 爲驗證集(Validation Set),並用驗證集上的錯誤來代替期望錯誤。當驗證集上 的錯誤率不再下降,就停止迭代。
丟棄法Dropout
當訓練一個深層神經網絡時,我們可以隨機丟棄一部分神經元(同時丟棄其 對應的連接邊)來避免過擬合,這種方法稱爲丟棄法(Dropout Method)。
後續補上
FastText
FastText模型架構和word2vec的CBOW模型架構非常相似。下面是fastText模型架構圖:
相同的是,和CBOW一樣,fastText模型也只有三層:輸入層、隱含層、輸出層(Hierarchical Softmax),輸入都是多個經向量表示的單詞,輸出都是一個特定的target,隱含層都是對多個詞向量的疊加平均。
不同的是,CBOW的輸入是目標單詞的上下文,fastText的輸入是多個單詞及其n-gram特徵,這些特徵用來表示單個文檔;CBOW的輸入單詞被onehot編碼過,fastText的輸入特徵是被embedding過;CBOW的輸出是目標詞彙,fastText的輸出是文檔對應的類標。
fastText的核心思想就是:將整篇文檔的詞及n-gram向量疊加平均得到文檔向量,然後使用文檔向量做softmax多分類。
例子:利用FastText模型進行文本分類
https://fasttext.cc/docs/en/supervised-tutorial.html
推薦文章:
神經網絡與深度學習:https://nndl.github.io/nndl-book.pdf
常見FastText問題:https://fasttext.cc/docs/en/faqs.html#content
FastText原理及實踐:http://www.52nlp.cn/fasttext
FastText文本分類例子:https://juejin.im/post/5c95fdfb6fb9a070b96f0f4c