反向傳播算法


一. 概述

多層網絡的學習擬合能力比單層網絡要強大很多。所以想要訓練多層網絡,前面的簡單感知機學習方法顯然有些不足,需要擬合能力更加強大的算法。反向傳播算法( Back Propagation,BP)是其中的經典方法,它可以說是現今最成功的神經網絡算法,現實當中使用到神經網絡時,大多是使用BP算法訓練的。BP算法不僅可以用於多層前饋神經網絡,還可以用於其他類型神經網絡,例如LSTM模型,通常所說的BP網絡,一般是用BP算法訓練的多層前饋網絡。

二. BP算法

我們可以先通過BP網絡的走向圖大致掌握以下反向傳播算法的主要用處,從輸入層開始,數據進入到網絡中經過每一層的計算變化,最終得出實際輸出。然后和期望輸出做比較計算損失值,此時的損失值將按照反方向逐漸向前傳播計算,通過梯度下降的方式優化網絡中的參數,求取出符合要求的網絡模型。如圖1中所示:

image.png

圖1:BP網絡結構圖

接下來我們將通過公式計算逐步的展示BP網絡的基本結構。最開始要假設我們有一個固定訓練集合{(x1,y1),…,(xm,ym)},它的樣本總數為m。這樣我們就可以利用批量梯度下降法來求解參數,也屬於有監督學習方法。具體到每個樣本(x,y),其代價函數為下式:

image.png

對於給定有m個樣本的數據集,我們可以定義整體的代價函數為:

image.png

上式中的第一項J(w,b)是均方差項。而第二項則是規則化項,是用來約束解以達到結構風險最小化( Structural risk minimization,SRM),目的是防止模型出現過擬合( over fitting)。

我們利用梯度下降法,每一次迭代都按照下面的公式對參數W和b進行更新:

image.png

其中α是學習速率。關鍵步驟在於計算偏導數。我們現在開始反向傳播算法的介紹,它是計算偏導數的一種有效方法。

首先了解一下如何使用反向傳播算法來計算image.pngimage.png,這兩項是單個樣例(x,y)的代價函數J(W,b;x,y)的偏導數。只有我們求出該偏導數,后面才可以推導出整體代價函數J(W,b)的偏導數:

image.png

以上兩行公式稍有不同,第一行比第二行多出一項,因為權重衰減是作用於W而不是b。

BP算法的總體流程:首先對每個樣本數據,進行前向傳播計算,依次計算出每層每個單元的激活值。接着計算出第l層的每個節點i的“殘差”值δ,該值直接體現了這個單元對最終的輸出有多大的影響力。最后一層輸出層則可以直接獲得最終結果和輸出結果的差值,我們定義為δ(,而對於中間的隱藏層的殘差,我們則通過加權平均下層(l+1層)殘差來計算。

BP算法的具體推導過程如下:

1)前饋網絡傳導的計算,逐層算出L2到最后一層的每層節點的激活值。

2)計算各節點的殘差值,對於輸出層,使用如下公式:

image.png

上式子中的推導過程如下:

image.png

3)從最后一層依次向前推導到第2層,第l層的殘差為:

image.png

推導可得出:

image.png

image.png

依照上面只需將nl替換為l就可以推導到中間層l與l=1的殘差關系。可以更新所需的偏導數:

image.png

最后得出BP算法的描述:

在下面的偽代碼中,ΔW0是一個與矩陣W維度相同的矩陣,△b0是一個與b0維度相同的向量。注意這里“ΔW”是一個矩陣。下面,我們實現批量梯度下降法中的一次迭代:

1)對於所有l,令△W0:=0,Δb0:=0(設置為全零矩陣或全零向量)。

2)對於i=1到m,

a)使用反向傳播算法計算image.pngimage.png

b)計算image.png

c)計算image.png

3)更新權重參數:

image.png

現在,我們可以重復梯度下降法的迭代步驟來減小代價函數J(w,b)的值,進而求解我們的神經網絡。

三. 總結

整體來說BP網絡就是一種具有自我更新參數能力,還具有一定的容錯性和抗干擾性。反向傳播算法的基本思想:學習過程由數據集信號的正向傳播和誤差的反向傳播兩個過程組成,數據集從輸入層輸入,經隱層處理以后,傳向輸出層。如果輸出層的實際輸出和期望輸出不符合,就進入誤差的反向傳播階段。反向傳播階段接收損失值逐步前向求偏導,進行梯度下降更新參數,最后使得輸出的結果符合我們的要求,模型訓練完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM