深度神經網路反向傳播演算法
在深度神經網路(DNN)模型與前向傳播演算法中,我們對DNN的模型和前向傳播演算法做了總結,這裡我們更進一步,對DNN的反向傳播演算法(Back Propagation,BP)做一個總結。
1. DNN反向傳播演算法要解決的問題
在了解DNN的反向傳播演算法前,我們先要知道DNN反向傳播演算法要解決的問題,也就是說,什麼時候我們需要這個反向傳播演算法?
回到我們監督學習的一般問題,假設我們有m個訓練樣本:
{(
x1
,
y1
),(
x2
,
y2
),...,(
xm
,
ym
)}
{(x1,y1),(x2,y2),...,(xm,ym)},其中
x
x為輸入向量,特徵維度為
n_in
n_in,而
y
y為輸出向量,特徵維度為
n_out
n_out。我們需要利用這m個樣本訓練出一個模型,當有一個新的測試樣本
(
xtest
,?)
(xtest,?)來到時, 我們可以預測
ytest
ytest向量的輸出。
如果我們採用DNN的模型,即我們使輸入層有
n_in
n_in個神經元,而輸出層有
n_out
n_out個神經元。再加上一些含有若干神經元的隱藏層。此時我們需要找到合適的所有隱藏層和輸出層對應的線性係數矩陣
W
W,偏倚向量
b
b,讓所有的訓練樣本輸入計算出的輸出儘可能的等於或很接近樣本輸出。怎麼找到合適的參數呢?
如果大家對傳統的機器學習的演算法優化過程熟悉的話,這裡就很容易聯想到我們可以用一個合適的損失函數來度量訓練樣本的輸出損失,接著對這個損失函數進行優化求最小化的極值,對應的一系列線性係數矩陣
W
W,偏倚向量
b
b即為我們的最終結果。在DNN中,損失函數優化極值求解的過程最常見的一般是通過梯度下降法來一步步迭代完成的,當然也可以是其他的迭代方法比如牛頓法與擬牛頓法。如果大家對梯度下降法不熟悉,建議先閱讀我之前寫的梯度下降(Gradient Descent)小結。
對DNN的損失函數用梯度下降法進行迭代優化求極小值的過程即為我們的反向傳播演算法。
2. DNN反向傳播演算法的基本思路
3. DNN反向傳播演算法過程
現在我們總結下DNN反向傳播演算法的過程。由於梯度下降法有批量(Batch),小批量(mini-Batch),隨機三個變種,為了簡化描述,這裡我們以最基本的批量梯度下降法為例來描述反向傳播演算法。實際上在業界使用最多的是mini-Batch的梯度下降法。不過區別僅僅在於迭代時訓練樣本的選擇而已。
輸入: 總層數L,以及各隱藏層與輸出層的神經元個數,激活函數,損失函數,迭代步長α,最大迭代次數MAX與停止迭代閾值?,輸入的m個訓練樣本
{(
x1
,
y1
),(
x2
,
y2
),...,(
xm
,
ym
)}
{(x1,y1),(x2,y2),...,(xm,ym)}
輸出:各隱藏層與輸出層的線性關係係數矩陣W和偏倚向量b
1) 初始化各隱藏層與輸出層的線性關係係數矩陣W和偏倚向量b的值為一個隨機值。
2)for iter to 1 to MAX:
2-1) for i =1 to m:
4. DNN反向傳播演算法小結
有了DNN反向傳播演算法,我們就可以很方便的用DNN的模型去解決第一節裡面提到了各種監督學習的分類回歸問題。當然DNN的參數眾多,矩陣運算量也很大,直接使用會有各種各樣的問題。有哪些問題以及如何嘗試解決這些問題並優化DNN模型與演算法,我們在下一篇講。
來源:http://www.cnblogs.com/pinard/p/6422831.html
TAG:AI講堂 |