1. 程式人生 > >吳恩達機器學習筆記29-反向傳播算法(Backpropagation Algorithm)

吳恩達機器學習筆記29-反向傳播算法(Backpropagation Algorithm)

下一步 algo 學習 技術分享 png 含義 ima 需要 ati

之前我們在計算神經網絡預測結果的時候我們采用了一種正向傳播方法,我們從第一層
開始正向一層一層進行計算,直到最後一層的??? (??)。

現在,為了計算代價函數的偏導數技術分享圖片我們需要采用一種反向傳播算法,也就是

首先計算最後一層的誤差,然後再一層一層反向求出各層的誤差,直到倒數第二層。 以一
個例子來說明反向傳播算法。
假設我們的訓練集只有一個實例(??(1), ??(1)),我們的神經網絡是一個四層的神經網絡,
其中?? = 4,???? = 4,?? = 4:
前向傳播算法:

技術分享圖片

技術分享圖片

我們從最後一層的誤差開始計算,誤差是激活單元的預測( (4)
k a )與實際值(????)之間的誤差,(?? = 1: ??)。

我們用??來表示誤差,則:技術分享圖片

我們利用這個誤差值來計算前一層的誤差:技術分享圖片其中 ??′(??(3))

是 ?? 形函數的導數,技術分享圖片

而(??(3))????(4)則是權重導致的誤差的和。
下一步是繼續計算第二層的誤差: ??(2) = (??(2))????(3) ? ??′(??(2))

因為第一層是輸入變量,不存在誤差。我們有了所有的誤差的表達式後,便可以計算代
價函數的偏導數了,假設?? = 0,即我們不做任何正則化處理時有:

技術分享圖片

重要的是清楚地知道上面式子中上下標的含義:
?? 代表目前所計算的是第幾層。
?? 代表目前計算層中的激活單元的下標,也將是下一層的第??個輸入變量的下標。
?? 代表下一層中誤差單元的下標,是受到權重矩陣中第??行影響的下一層中的誤差單元
的下標。
如果我們考慮正則化處理,並且我們的訓練集是一個特征矩陣而非向量。在上面的特殊
情況中,我們需要計算每一層的誤差單元來計算代價函數的偏導數。在更為一般的情況中,
我們同樣需要計算每一層的誤差單元,但是我們需要為整個訓練集計算誤差單元,此時的誤
差單元也是一個矩陣,我們用??????
(??)來表示這個誤差矩陣。第 ?? 層的第 ?? 個激活單元受到第 ??
個參數影響而導致的誤差。
我們的算法表示為:

技術分享圖片

即首先用正向傳播方法計算出每一層的激活單元,利用訓練集的結果與神經網絡預測的
結果求出最後一層的誤差,然後利用該誤差運用反向傳播法計算出直至第二層的所有誤差。
在求出了??????
(??)之後,我們便可以計算代價函數的偏導數了,計算方法如下:

技術分享圖片

吳恩達機器學習筆記29-反向傳播算法(Backpropagation Algorithm)