BP算法:
1.是一種有監督學習算法,常被用來訓練多層感知機。
2.要求每個人工神經元(即節點)所使用的激勵函數必須可微。
(激勵函數:單個神經元的輸入與輸出之間的函數關系叫做激勵函數。)
(假如不使用激勵函數,神經網絡中的每層都只是做簡單的線性變換,多層輸入疊加后也還是線性變換。因為線性模型的表達能力不夠,激勵函數可以引入非線性因素)
下面兩幅圖分別為:無激勵函數的神經網絡和激勵函數的神經網絡

如圖所示,加入非線性激活函數后的差異:上圖為用線性組合逼近平滑曲線來分割平面,下圖為使用平滑的曲線來分割平面。

3.該算法特別適合用來訓練前饋神經網絡。
前饋神經網絡:人工神經網絡中的一種。在此種神經網絡中,各神經元從輸入層開始,接收前一級輸入,並輸入到下一級,直至輸出層。整個網絡中無反饋,可用一個有向無環圖表示。按照層數划分,可以分為單層前饋神經網絡和多層前饋神經網絡。常見前饋神經網絡有:感知機(perceptions)、BP(Back Propagation 反向傳播)網絡、RBF(Radial Basis Function 徑向基)網絡等。
一般看到的神經網絡是這樣的:

計算的時候:
信號從輸入---》輸出的過程是向前傳遞的。
那么反饋從哪里來?
在我們的網絡沒訓練好的時候,輸出的結果肯定和想象的不一樣,這時候求偏差,並且把偏差一級一級的向前傳遞,逐層得到
,這就是反饋。反饋是用來求偏導數的,而偏導數是用來作梯度下降的,梯度下降又是為了求得代價函數的極小值,使得期望和輸出之間的誤差盡可能的減小。(自己也可以定義一個代價函數,沒准就不需要反饋了呢~)
4.主要由兩個環節(激勵傳播、權重更新)反復循環迭代,直到網絡對輸入的響應達到預定的目標范圍為止。
激勵傳播:
在每次迭代中的傳播環節包含兩步:
1.(前向傳播階段)將訓練輸入送入到網絡中,以獲得激勵響應。
2.(反向傳播階段)將激勵響應與訓練輸入對應的目標輸出求差,從而獲得隱層和輸出層的響應誤差。
權重更新:
對於每個突觸上的權重,按照以下步驟進行更新:
1.將輸入激勵和響應誤差相乘,從而獲得權重的梯度。
2.將這個梯度乘上一個比例(這個比例將會影響到訓練過程的速度和效果,因此稱為‘訓練因子’。梯度的方向指明了誤差擴大的方向,因此在更新權重的時候需要對其取反,從而減小權重引起的誤差)並取反后加到權重上。
綜上:
反向傳播算法的思路如下:給定一個樣例
,我們首先進行“前向傳導”運算,計算出網絡中所有的激活值,包括
的輸出值。之后,針對第
層的每一個節點
,我們計算出其“殘差”
,該殘差表明了該節點對最終輸出值的殘差產生了多少影像。對於最終的輸出節點,我們可以直接算出網絡產生的激活值與實際值之間的差距,我們將這個差距定義為
(第
層表示輸出層)。對於隱藏單元我們如何處理呢?我們將基於節點(譯者注:第
層節點)殘差的加權平均值計算
,這些節點以
作為輸入。
重要參考http://www.cnblogs.com/Crysaty/p/6126321.html
