目錄
0. 前言
1. 每一個神經元的組成
2. 梯度下降改善線性參數
3. 非線性激活函數
4. 輸出單元
4.1. 線性單元
4.2. sigmoid 單元
4.3. softmax 單元
5. 神經網絡寬度和深度的選擇
6. 前向傳播和反向傳播
如果這篇文章對你有一點小小的幫助,請給個關注,點個贊喔~我會非常開心的~
花書+吳恩達深度學習(一)前饋神經網絡(多層感覺機 MLP)
花書+吳恩達深度學習(二)非線性激活函數(ReLU, maxout, sigmoid, tanh)
花書+吳恩達深度學習(三)反向傳播算法 Back Propagation
花書+吳恩達深度學習(四)多分類 softmax
0. 前言
前饋神經網絡(feedforward neural network),又稱作深度前饋網絡(deep feedforward network)、多層感覺機(multilayer perceptron,MLP)。
資訊流經過
的函數,流經中間的計算過程,最終達到輸出
,是以被稱為是前向的。
在模型的輸出和模型本身之間并沒有回報連接配接。
神經網絡可以表示成如下圖所示(圖源:吳恩達深度學習):
這是一個兩層的神經網絡,左側是輸入層,通常不算入網絡層數的計算中,中間被稱為隐藏層,右側是輸出層。
1. 每一個神經元的組成
每一個神經元由一個線性拟合和一個非線性激活函數組成。
假設,前一層的輸入為
,線性拟合表示為
,權重乘以每一個特征值,再加上一個截距。非線性激活函數表示為
,
為神經元的輸出,也是傳入下一層神經元的輸入。
注:如果不使用非線性激活函數,那麼每一個神經元都是線性的,導緻一個神經網絡多個神經元的線性組合仍然是線性的,最終的輸出也是線性拟合,無法泛化非線性的問題。
2. 梯度下降改善線性參數
我們已知,使用梯度下降的方法(使得參數往負梯度的方向移動),可以使參數更好的比對資料。
通常我們會定義一個代價函數(損失函數),函數值越大表示精确率越不準,損失越大。
大多數神經網絡使用最大似然作為代價函數:
如果假設模型的分布服從高斯分布,則代價函數可采用均方誤差表示:
我們已知,梯度是對函數的各個方向求導,如果函數的梯度較小, 則參數的移動也會較小。
這就要求代價函數的梯度必須足夠大和具有足夠的預測性。
如果代價函數梯度不夠大,就會造成梯度飽和的困難。
同時,如果參數過小,也會造成梯度較小,稱為梯度消失。
如果參數過大,也會造成梯度較大,稱為梯度爆炸。
将所有的權重初始化為随機小的數是很重要的。一種指導是将其初始化為:
對于大多數非線性問題,代價函數通常是非凸函數,這就表示梯度下降一般不能優化至全局最小值,僅能使得函數達到一個非常小的值。
3. 非線性激活函數
如果不使用非線性激活函數,那麼每一個神經元都是線性的,導緻一個神經網絡多個神經元的線性組合仍然是線性的,最終的輸出也是線性拟合,無法泛化非線性的問題。
大多數隐藏單元的差別僅僅在于激活函數的不同。
大多數隐藏單元采用 ReLU 整流線性單元(rectified linear unit),
:
如上圖所示(圖源:深度學習),函數仍然非常接近線性,是以它保留了許多線性模型易于使用梯度優化的屬性。
除此之外還有許多的激活函數,可移步至我的部落格。
4. 輸出單元
4.1. 線性單元
在輸出單元處,不設定激活函數,直接應用
輸出,被稱作線性單元。
4.2. sigmoid 單元
針對二分類的問題,通常需要把輸出限制在
之間,表示針對某一類别的機率。
sigmoid 單元正滿足這一特性:
當使用 sigmoid 函數作為輸出單元激活函數時,通常代價函數使用最大似然。
因為從圖中可知,sigmoid 函數在自變量很大或者很小的時候,具有梯度飽和的問題。
而最大似然的
正好可以抵消 sigmoid 函數中的
。
4.3. softmax 單元
針對多分類問題的時候,softmax 函數可以表示
個不同類别上的機率分布。
softmax 函數表示為:
softmax 函數有多個輸出值,當不同值之間差異變得極端的時候,輸出值也可能飽和。
當使用最大化對數似然的時候,同 sigmoid 函數一樣,
抵消
,更适合梯度下降:
5. 神經網絡寬度和深度的選擇
萬能近似定理(universal approximation theorem)表示,一個前饋神經網絡如果具有線性輸出層和至少一層具有任何一種擠壓性質的激活函數的隐藏層,隻要給予網絡足夠數量的隐藏單元,它可以以任意精度來近似任何從一個有限維空間到另一個有限維空間的可測函數,前饋神經網絡的導數也可以任意好的近似函數的導數。
用深度整流網絡表示的函數可能需要淺層網絡指數級别的隐藏單元才能表示,是以更深的模型似乎确實在廣泛的任務中泛化的更好。
6. 前向傳播和反向傳播
在一個神經網絡中:
輸入
進入第一層網絡,每個神經元計算
,輸出至第二層網絡,
,最終産生輸出
。這種由輸入
不斷計算,傳播至輸出産生
的過程稱為前向傳播(forward propagation)。
已知通過計算梯度,可以改善參數對資料的比對。
計算第二層網絡的梯度,可以改善第二層網絡的參數:
計算第一層網絡的梯度,可以改善第一層網絡的參數:
根據導數的鍊式法則,每一層梯度的計算都使用到了後面一層梯度的計算結果,這種從後面一層不斷計算梯度,然後傳遞到前面一層再計算梯度,直到輸入的過程,稱為反向傳播(back propagation)。
關于反向傳播算法更詳細的了解,可移步至我的部落格。
如果這篇文章對你有一點小小的幫助,請給個關注,點個贊喔~我會非常開心的~