注意:本文為學習筆記,大量直接復制于參考文章中的原文字及圖片
反向傳播(Backpropagation),該方法計算對網絡中所有權重計算損失函數的梯度。這個梯度會反饋給最優化方法,用來更新權值以最小化損失函數。
任何監督式學習算法的目標是找到一個能把一組輸入最好的映射到其正確的輸出的函數。
概括
反向傳播算法(BP算法)主要由兩個階段:激勵傳播與權重更新。
- 第1階段:激勵傳播
每次迭代中的傳播環節包含兩步:- (前向傳播階段)將訓練輸入送入網絡以獲得激勵響應;
- (反向傳播階段)將激勵響應同訓練輸入對應的目標輸出求差,從而獲得隱層和輸出層的響應誤差。
- 第2階段:權重更新
對于每個突觸上的權重,按照以下步驟進行更新:- 將輸入激勵和響應誤差相乘,從而獲得權重的梯度;
- 將這個梯度乘上一個比例并取反后加到權重上。
這個比例(百分比)將會影響到訓練過程的速度和效果,因此稱為“訓練因子”。梯度的方向指明了誤差擴大的方向,因此在更新權重的時候需要對其取反,從而減小權重引起的誤差。
第1和第2階段可以反復循環迭代,直到網絡的對輸入的響應達到滿意的預定的目標范圍為止。
看著有點暈,所以接下來還是看看詳細的解釋吧。
如圖所示的網絡,有三層,輸入層
i
,隱藏層h
,輸出層o
,w
為權重。輸入為0.05,0.10, 預計輸出為0.01,0.99。
然后經過前向傳播得到一個結果,與實際有一個誤差,常見方法是用平方差來測量,如下
然后如何用這個來更新權重呢?實際上可以把這個公式想象成一個曲面。然后我們要做的就是使得E最小,實際上就是想要得到曲面的最低點。所以采用梯度下降的方法。
以w5為例子,求偏導,然后梯度下降,設一個learning rate,控制下降的速度。
對w5進行更新,假如斜率大于0,那么就應該減少,假如斜率小于0,那么就應該增加。
然后同理對其他參數也進行更新,然后不斷的迭代更新,直到固定次數或者誤差小于某個閾值。
參考鏈接:
維基百科-反向傳播算法
一文弄懂神經網絡中的反向傳播法——BackPropagation
偏導數及其幾何意義