1. 程式人生 > 其它 >《神經網路與深度學習》第四章 前饋神經網路

《神經網路與深度學習》第四章 前饋神經網路

第四章 前饋神經網路

人工神經網路(ANN):指一系列受生物學和神經科學啟發的數學模型。簡稱為神經網路(NN)or神經模型。

  • 連線主義模型:
  • 最早的連線主義模型:20世紀80年代後期,分散式並行處理模型(PDP);

​ 特點:

(1)資訊表示是分散式的(非區域性的)

(2)記憶和知識是儲存在單元之間的連線上

(3)通過逐漸改變單元之間的連線強度來學習新的知識。

4.1 神經元

  • 1943年,McCulloch和Pitts提出MP神經元,與現代神經元不同的是啟用函式的選取,MP使用的是不可導的0或1階躍函式,現代神經元通常使用連續可導的函式。
  • \(a = f(z),z = w^Tx + b\)
  • 啟用函式的性質:
  1. 連續可導(允許少數點上不可導)的非線性函式,可導的啟用函式可以直接利用數值優化的方法來學習網路引數;
  2. 啟用函式及其導函式要儘可能的簡單,利於提高網路計算效率;
  3. 啟用函式的導函式的值域要在一個合適的區間內,不能太大也不能太小,否則會影響訓練的效率和穩定性。
  • 常見啟用函式

4.1.1 sigmoid函式(兩端飽和函式)

1)logistic函式\(\sigma(x) = \frac{1}{1+exp(-x)}\) ,值域為(0,1),非零中心化,會使得其最後一層的神經元的輸入發生偏置漂移,使得梯度下降的收斂速度變慢;

性質:

  1. 其輸出可以看作是概率分佈,使得神經網路可以更好地和統計模型進行結合;
  2. 其可以看作是一個軟性門,用來控制其他神經元輸出資訊的數量。

2)Tanh函式: \(tanh(x) = \frac{exp(x)-exp(-x)}{exp(x)+exp(-x)}=2\sigma(2x)-1\) ,值域為(-1,1),是零中心化的;

sigmoid函式具有飽和性,但計算開銷較大。但這兩個函式可以通過分段函式來近似,因此有下面的Hard-Logistic和Hard-Tanh函式。

3)Hard-Logistic函式:由於Logistic函式在0處的一階泰勒展開為 \(g_l(x)\approx \sigma(0)+x\times\sigma^{'}(0)= 0.25x+0.5\) ,因此有

\(hard-logistic(x)=\begin{cases} 1 \quad g_l(x) \geq 1 \\ g_l \quad 0<g_l(x)<1 \\ 0 \quad g_l(x) \leq 0 \end{cases}= max(min(g_l(x),1),0)=max(min(0.25x+0.5,1),0).\)

4)Hard-Tanh函 數:由於Tanh函式在0處的一階泰勒展開為 \(g_l(x)\approx tanh(0) x\times+tanh^{'}(0)=x\) ,因此有 \(hard-tanh(x)=max(min(g_t(x),1),-1)=max(min(x,1),-1).\)

4.1.2. ReLu函式(ramp函式)

  • \(ReLu(x) = \begin{cases} x \quad x\geq 0\\ 0 \quad x <0\end{cases}=max(0,x).\)

  • 特點:左飽和;

  • 優點:

    (1)只需要進行加、乘和比較的操作,計算上更加高效;

    (2)有生物上的解釋,比如單側抑制、寬興奮邊界。

    (3)稀疏性[生物神經網路中,同時處於興奮狀態的神經元非常稀疏,sigmoid函式會導致一個非稀疏的神經網路],約50%的神經元會處於啟用狀態

    (4)避免梯度消失的問題。

  • 缺點:

    (1)非零中心化,給最後一層的神經網路引入偏置漂移,會影響梯度下降的效率;

    (2)死亡ReLu問題(如一個隱藏層中的某個ReLu神經元在所有的訓練資料上都不能被啟用,那麼這個神經元自身引數的梯度永遠都會是0,在以後的訓練過程中永遠不能被啟用。

為了解決這些缺點,提出了以下修正的ReLu函式。

1) 帶洩露的ReLu(Leaky ReLu)

\(LeakyReLu(x)=\begin{cases} x \quad if\quad x > 0 \\ \gamma x \quad if \quad x\leq 0\end{cases}=max(0,x)+\gamma min(0,x).,當\gamma < 1時,LeakyReLu(x)=max(x,\gamma+x)\) ,相當於是一個比較簡單的maxout單元。

2) 帶引數的ReLu(PReLu) \(PReLu_i(x)=\begin{cases} x \quad if\quad x > 0 \\ \gamma_i x \quad if \quad x\leq 0\end{cases} = max(0,x)+\gamma_i+min(0,x)\) .不同神經元具有不同的引數,也可以一組神經元共享一個引數。

3) ELU函式(近似的零中心化的非線性函式)\(ELU(x) = \begin{cases} x \quad if \quad x >0\\ \gamma(exp(x)-1) \quad if \quad x\leq 0 \end{cases}=max(0,x)+min(0,\gamma(exp(x)-1)),\gamma \geq 0\) .

4) Softplus函式

  • \(Softplus(x)=log(1+exp(x))\)
  • 特點:單側抑制、寬興奮邊界,但沒有稀疏啟用性。

4.1.3 Swish函式(自門控啟用函式)

  • 可作為線性函式和ReLU函式之間的非線性插值函式,其程度由引數\(\beta\) 控制。

  • \(swish(x) = x\sigma(\beta+x)\) ,其中 \(\sigma(\cdot)\) 是Logistic函式, \(\beta\) 為可學習的引數或一個固定超引數。當\(\sigma(\beta x)\)接近於1時,門處於“開”狀態,啟用函式的輸出近似於x本身;當\(\sigma(\beta x)\)接近於0時,門的狀態為“關”,啟用函式的輸出近似於0,下圖為Swish函式的示意圖。

4.1.4 高斯誤差線性單元(GELU)

  • 與Swish函式類似,是一種通過門控機制來調整其輸出值的啟用函式。

  • \(GELU(x) =xP(X\leq x), P(X\ leqx)\approx \mathcal{N}(\mu,\sigma^2)\) ,常取 \(\mu = 0, \sigma=1\),因為高斯分佈的累積分佈函式為S型函式,因此GELU可以用Tanh函式和Logistic函式來近似。

    \(GELU(x)\approx 0.5x(1+tanh(\sqrt{\frac{2}{\pi}}(x+0.044715x^3))) \\ 或 \quad GELU(x)\approx x\sigma(1.702x)\)

    (後者是一種特殊的swish函式)

4.1.5 Maxout單元

  • 輸入:不同於sigmoid、ReLU函式的輸入是一個標量,Maxout單元的輸入是上一層神經元的全部原始輸出,是一個向量 \(x=[x_1;x_2;...;x_D]\);
  • 每個Maxout單元有K個權重向量\(w_k\in+R^D\) 和偏置\(b_k\) ,對於輸入x可以得到K個淨輸出\(z_k,z_k = w^T_k x + b_k\);
  • \(maxout(x) = \mathop{max}(z_k) {k\in[1,K]}\)
  • 特點:Maxout單元不單是淨輸入到輸出之間的非線性對映,而是整體學習輸入到輸出之間的非線性對映關係。Maxout啟用函式可以看作任意凸函式的分段線性近似。

4.2 網路結構

  • 神經網路:通過一定的連線方式或資訊傳遞方式進行協作的神經元可以看作是一個網路,就是神經網路。

  • 常用結構

    1. 前饋網路:可以視作函式,通過非線性函式的多次複合,實現輸入空間到輸出空間的複雜對映。該網路結構簡單,易於實現。

    2. 記憶網路(反饋網路):

      • 可視作程式,具有更強的計算和記憶力。
      • 不但接收其他神經元的資訊,也可以接收自己的歷史資訊。具有記憶功能,在不同的時刻具有不同的狀態。傳播方向可以雙向可單向。
      • 包含的網路有:RNN、Hopfield網路、玻爾茲曼機、受限波爾茲曼機等。
      • 為了增強記憶網路的記憶容量,引入外部記憶單元和讀寫機制,用來儲存一些網路的中間狀態,稱為記憶增強神經網路,比如神經圖靈機和記憶網路。
    3. 圖網路

  • 是前饋網路和記憶網路的泛化;

  • 包含:圖卷積網路(GCN)、圖注意力網路(GAT)、訊息傳遞神經網路(MPNN)等;

​ 其中圓形表示一個神經元,方形表示一組神經元。

4.3 前饋神經網路(FNN)

  • 也稱為多層感知器(但實質由多層的Logistic迴歸組成)、全連線神經網路;

  • 各神經元分別屬於不同的層,層內無連線。
    相鄰兩層之間的神經元全部兩兩連線。
    整個網路中無反饋,訊號從輸入層向輸出層單向傳播,可用一個有向無環圖表示。

  • 資訊傳播過程: \(z^{(l)} = W^{(l)}a^{(l-1)}+b^{(l)},\\or\quad a^{(l)}=f_l(z^{(l)}).\\ \rightarrow z^{(l)}=W^{(l)}\cdot f_{l-1}(z^{(l-1)}) b^{(l)},\\ \rightarrow or \quad a^{(l)}=f_l(W^{(l)}\cdot a^{(l-1)}+b^{(l)}).\)

  • 前饋神經網路可以通過逐層的資訊傳遞,得到網路最後的輸出。

  • 深層前饋神經網路:

4.3.1 通用近似定理

  • 很強的擬合能力
  • 根據通用近似定理,對於具有線性輸出層和至少一個使用“擠壓”性質的啟用函式的隱藏層組成的前饋神經網路,只要其隱藏層神經元的數量足夠,它可以以任意的精度來近似任何從一個定義在實數空間中的有界閉集函式

4.3.2 應用到機器學習上

神經網路可以作為一個“萬能”函式來使用,可以用來進行復雜的特徵轉換,或逼近一個複雜的條件分佈。

如果g(⋅)為Logistic迴歸,那麼Logistic迴歸分類器可以看成神經網路的最後一層。

4.3.3 引數學習

梯度下降:

  • 但是梯度下降演算法更新引數較慢,因此使用反向傳播演算法。

4.4 反向傳播演算法

4.4.1 鏈式法則

鏈式法則(Chain Rule)是在微積分中求複合函式導數的一種常用方法。

神經網路為一個複雜的複合函式

4.4.2 矩陣微積分

矩陣微積分(Matrix Calculus)是多元微積分的一種表達方式,即使用矩陣和向量來表示因變數每個成分關於自變數每個成分的偏導數

  • 標量關於向量的偏導數
  • 向量關於向量的偏導數

4.4.3 反向傳播演算法

(1) 計算偏導數\(\frac{\partial z^{(l)}}{\partial w_{ij}^{(l)}}\),因 \(z^{(l)} = W^{(l)}a^{(l-1)}+b^{(l)}\)

(2)計算偏導數\(\frac{\partial z^{(l)}}{\partial b^{(l)}} = I_{M_l} \in R^{M_l \times M_l}\)

(3)計算偏導數 \(\frac{\partial \mathcal{L}(y,\hat{y})}{\partial z^{(l)}}\)該偏導數表示第l層神經元對最終損失的影響,也反映了最終損失對第l層神經元的敏感程度,稱為“誤差項”

\(\delta^{(l)}, \delta^{(l)}\triangleq \frac{\partial \mathcal{L}(y,\hat{y})}{\partial z^{(l)}}\in R^{M_l}\) 該誤差項也間接反映了不同神經元對網路能力的貢獻度,從而比較好地解決了貢獻度分配問題(CAP)。由

  • 因此

  • BP解釋:從上式中可以發現第l層的誤差項可以通過第l+1層的誤差項計算得到,即BP的含義是第l層的一個神經元的誤差項(或敏感度)是所有與該神經元相連的第l+1層的神經元的誤差項的權重和再乘上該神經元啟用函式的梯度。

4.5 自動梯度計算

  1. 數值微分

    \(f^{'}(x)=lim_{\Delta x\rightarrow 0} \frac{f(x+\Delta x)-f(x)}{\Delta x}\) 但是難以找到合適的\(\Delta x\),過小會引起舍入誤差,過大會增加截斷誤差。常使用

\(f^{'}(x)=lim_{\Delta x \rightarrow 0}\frac{f(x+\Delta)-f(x-\Delta x)}{2\Delta x}\)

  • 缺點:計算複雜,導致計算數值微分總時間複雜度為 \(O(N^2)\)

2. 符號微分(基於符號計算的自動求導方法,即代數計算)

  • 對輸入的表示式,通過迭代或遞迴使用一些事先定義的規則進行轉換,當轉換結果不能再使用變化規則時,則停止計算,
  • 處理物件:數學表示式;
  • 優點:符號計算與平臺(CPU、GPU)無關;
  • 缺點:
  1. 編譯時間較長,特別是對於迴圈;

  2. 需要設計專門的語言來表示數學表示式,並且要對變數進行預先宣告;

  3. 很難對程式進行除錯;

3. 自動微分(AD)

  • 處理物件:一個函式或一段程式;
  • 可以直接在原始程式碼上進行微分,為DL首選;
  • 基本原理:所有的數值計算可以分解為一些基本操作,然後利用鏈式法則來自動計算一個複合函式的梯度。
  • 按照計算導數的順序分類,對於函式形式 \(f:R^{N}\rightarrow R^{M}\)

​ 1) 前向模式:需要對每一個輸入變數都進行一遍遍歷,共需要N遍。

​ 2) 反向模式:需要對每一個輸出進行一個遍歷,共需要M遍。

  • 計算圖

    1) 靜態計算圖:在編譯時構建計算圖,構建好之後在程式執行時不能改變。在構建時可以進行優化、並行能力強,但靈活性差。Tensorflow 1.0、Theano。

    2) 動態計算圖:在程式執行時動態構建。不容易優化,靈活性比較高。PyTorch、Tensorflow 2.0。

4.5 優化問題

  • 神經網路引數學習的難點:(1)非凸優化問題;(2)梯度消失問題。

  • 常見啟用函式及其導數總結如下表:

  • 設計不同形式的函式組合方式 Ramachandran P, Zoph B, Le Q V. Searching for activation functions[J]. arXiv preprintarXiv:1710.05941, 2017.

  • 通用近似定理 Haykin S. Neural networks and learning machines[M]. 3rd edition. Pearson, 2009.