深度學習 02:前饋神經網絡

2.1 神經元

人工神經元(Artificial Neuron),簡稱神經元,是構成神經網絡的基本單元。典型的神經元結構如下:

典型的神經元結構

其中,激活函數在神經元中是非常重要的。為瞭增強網絡的表示能力和學習能力,激活函數需要具備以下幾點性質:

(1)連續並可導(允許少數點上不可導)的非線性函數。

(2)激活函數及其導函數要盡可能簡單。

(3)激活函數的導函數的值域要在一個合適的區間內,不能太大也不能太小,否則會影響訓練的效率和穩定性。

接下來介紹幾種神經網絡常用的激活函數

2.1.1 Sigmoid型函數

Sigmoid型函數是指一類S型曲線函數,為兩端飽和函數。常用的Sigmoid型函數有Logistic函數和Tanh函數。

(1)Logistic函數

因為Logistic函數的性質,使得裝備瞭Logistic激活函數的神經元具有以下兩點性質:1)其輸出可以直接看作概率分佈,使得神經網絡可以更好地和統計學習模型進行結合。2)其可以看作一個軟性門(Soft Gate),用來空值其他神經元輸出信息的數量。

(2)Tanh函數

Tanh函數也是一種Sigmoid型函數,其可以看作放大並平移的Logistic函數,其值域是(-1.1)。

Logistic函數和Tanh函數

2.1.2 ReLU函數

ReLU函數 (Rectified Linear Unit, 線性修正單元),也叫做Rectifier函數,是目前深度神經網絡中經常使用的激活函數。

優點:

(1)采用ReLU的神經元隻需要進行加、乘和比較的操作,計算上更加高效

(2)ReLU函數被認為具有生物學合理性,如單側抑制、寬興奮邊界、較好的稀疏性,大約有50%的神經元會出於激活狀態(Sigmoid型函數會導致一個非稀疏的神經網絡)

(3)在優化方面,相比於Sigmoid型函數的兩端飽和,ReLU函數為左飽和函數,且在x>0時導數為1,在一定程度上緩解瞭神經網絡的梯度消失問題,加速梯度下降的收斂速度。

缺點:

(1)ReLU函數的輸出是非零中心化的,給後一層神經網絡引入偏置偏移,會影響梯度下降的效率。此外,ReLU神經元在訓練時比較容易“死亡”。在訓練時,如果參數在以此不恰當的更新後,第一個隱藏層中的某個ReLU神經元在所有訓練數據上都不能被激活,那麼這個神經元自身參數的梯度永遠都會是0,在以後的訓練過程中永遠也不能被激活。這種現象稱為死亡ReLU問題。

在實際應用中,為避免上面的情況,有幾種ReLU的變種也會被廣泛使用。如:ReLU、Leaky ReLU、ELU以及Softplus函數。

2.1.3 Swish函數

Swish函數是一種自門控(Self-Gated)激活函數,定義為:

swish(x)=xsigma(beta)

sigma(beta) 接近於1時,門出於“開”狀態,激活函數的輸出近似於x本身;當 sigma(beta) 接近於0時,門的狀態為“關”,激活函數的輸出近似於0。

Swish函數

2.1.4 Maxout單元

Maxout單元也是一種分段線性函數。Maxout單元的輸入是上一層神經元的全部原始輸出,是一個向量。

2.2 網絡結構

想要模擬人腦的能力,單一的神經元是遠遠不夠的,需要通過很多神經元一起寫作來完成復雜的功能。這樣通過一定的連接方式或信息傳遞方式進行協作的神經元可以看作一個網絡,就是神經網絡。

到目前為止,常用的神經網絡結構有以下三種

(1)前饋網絡

前饋網絡中各個神經元按接收信息的先後分為不同的組。每一組看作一個神基層。每一層中的神經元接收前一層神經元的輸出,並輸出到下一層神經元。整個網絡中的信息是朝一個方向傳播,沒有反向的信息傳播。前饋網絡可以看作一個函數,通過簡單的非線性函數的多次復合,實現輸入空間到輸出空間的復雜映射。

前饋網絡包括全連接前饋網絡和卷積神經網絡。

(2)記憶網絡

記憶網絡也稱為反饋網絡,網絡中的神經元不但可以接收其他神經元的信息,也可以接收自己的歷史信息。記憶網絡可以看作一個程序,具有更強的計算和記憶能力。

記憶網絡包括循環神經網絡、Hopfield網絡、玻爾茲曼機、受限玻爾茲曼機等。

(3)圖網絡

前饋網絡和記憶網絡的輸入都可以表示為向量或向量序列,但他們都很難處理圖結構的數據。在實際應用中,很多數據都是圖結構的數據,比如知識圖譜、社交網絡、分子網絡等。

圖網絡是定義在圖結構數據上的神經網絡。圖中的每個結點都由一個或一組神經元構成。節點之間可以是有向的,也可以是無向的。每個節點可以收到來自相鄰節點或自身的信息。

三種不同的網絡結構示例

上圖展示瞭三種網絡結構,其中圓形節點表示一個神經元,方形結點表示一組神經元。

2.3 前饋神經網絡

前饋神經網絡(Feedforward Neural Network, FNN) 是最早發明的簡單人工神經網絡。在前饋神經網絡中,各神經元分別屬於不同的層,每一層的神經元可以接收前一層神經元的信號,並產生信號輸出到下一層。第0層稱為輸入層,最後一層稱為輸出層,其他中間層稱為隱藏層。整個網絡中無反饋,信號從輸入層向輸出層單向傳播,可用一個有向無環圖表示。

多層前饋神經網絡

將前饋神經網絡的記號描述如下:

前饋神經網絡的記號

a^{0}=x ,前饋神經網絡通過不斷迭代下面的公式進行傳播:

首先根據第 l-1 層神經元的活性值(Activation) a^{l-1} 計算出第 l 層神經元的凈活性值(Net Activation) z^{l} ,然後經過一個激活函數得到第 l 層神經元的活性值。該式若使用激活函數描述,則也可以寫為:

2.3.1 通用近似定理

根據通用近似定理,我們認為前饋神經網絡具有很強的擬合能力,常見的連續非線性函數都可以用前饋神經網絡來近似。

根據通用近似定理,對於具有線性輸出層和至少一個使用“擠壓”性質的激活函數的隱藏層組成的前饋神經網絡,隻要其隱藏層神經元的數量足夠,它可以以任意的精度來近似任何一個定義在實數空間中的有界閉集函數。

根據通用近似原理,神經網絡在某種程度上可以作為一個“萬能”函數來使用,可以用來進行復雜的特征轉換,或逼近一個復雜的條件分佈。多層前饋神經網絡可以看作一個非線性復合函數 phi:R^{D}→R^{D’} ,將輸入 xin R^{D} 映射到輸出 phi(x)in R^{D'} 。因此,多層前饋神經網絡也可以看成是一種特征轉換方法。給定一個訓練樣本(x,y),先利用多層前饋神經網絡將x映射到 phi(x) ,然後再將phi(x) 輸入到分類器 g( · ) ,即

其中g( · )為線性或非線性的分類器, theta 為分類器g( · )的參數,hat{y} 為分類器的輸出。

2.3.2 參數學習

如果采用交叉熵損失函數,對於樣本(x,y),其損失函數為

給定訓練集為 D={(x^{(n)},y^{(n)})}^{N}_{n=1} ,將每個樣本 x^{(n)} 輸入給前饋神經網絡,得到網絡輸出為 hat{y}^{(n)} ,其在數據集D上的結構化風險函數為

其中 Wb 分別表示網絡中所有的權重矩陣和偏置向量; ||W||^{2}_{F} 是正則化項,用來防止過擬合。

有瞭學習準則和訓練樣本呢,網絡參數可以通過梯度下降法來學習。但梯度下降法需要計算損失函數對參數的偏導數,如果通過鏈式法則逐一對每個參數進行求偏導比較低效。在神經網絡的訓練中,經常使用反向傳播算法來高效地計算梯度。

2.4 反向傳播算法

使用誤差反向傳播算法的前饋神經網絡訓練過程可以分為以下三步:

(1)前饋計算每一層的凈輸入 Z^{(l)} 和激活值 a^{(l)} ,直到最後一層;

(2)反向傳播計算每一層的誤差項 delta^{(l)}

(3)計算每一層參數的偏導數,並更新參數。

使用反向傳播算法的隨機梯度下降訓練過程

2.5 優化問題

神經網絡的參數學習比線性模型更加困難,主要原因有兩點:1)非凸優化問題;2)梯度消失問題

2.5.1 非凸優化問題

2.5.2 梯度消失問題

在神經網絡中誤差反向傳播的迭代公式為:

誤差從輸出層反向傳播時,在每一層都要乘以該層的激活函數的導數。由於Sigmoid型函數的飽和性,飽和區的導數更是接近於0。這樣,誤差經過每一層傳遞都會不斷衰減。當網絡層數很深時,梯度就會不停衰減,甚至消失,使得整個網絡很難訓練。這就是所謂的梯度消失問題(Vanishing Gradient Problem)。

在深度神經網絡中,減輕梯度消失問題的方法有很多種,一種簡單有效的方式就是使用導數比較大的激活函數,比如ReLU等。

2.6 總結

1.神經網絡是一種典型的分佈式並行處理模型,通過大量神經元之間的交互來處理信息。

2.神經網絡中的激活函數一般為連續可導函數,在神經網絡中選擇合適的激活函數十分重要。

常見的激活函數及其導數

3.前饋神經網絡相鄰兩層的神經元之間為全連接關系,也成為全連接神經網絡

4.前饋神經網絡是一種很強的非線性模型,其能力可以由通用近似定理來保證。

赞(0)