深度学习基础2(反向传播算法)
反向傳播算法
我們先是用鏈式法則解釋。比如如下的神經(jīng)網(wǎng)絡(luò)
- 前向傳播
接著對做一個sigmoid函數(shù)得到節(jié)點的輸出:
類似的,我們能得到節(jié)點、、的輸出、、。
- 誤差
其中就是剛剛通過前向傳播算出來的、;是節(jié)點、的目標值。用來衡量二者的誤差。
這個也可以認為是cost function,不過這里省略了防止overfit的regularization term()
展開得到
- 后向傳播
通過梯度下降調(diào)整,需要求,由鏈式法則:
,
如下圖所示:
<img src="https://pic4.zhimg.com/50/f2d8768af0d9264687905a0134dae927_hd.png" data-rawwidth="525" data-rawheight="257" class="origin_image zh-lightbox-thumb" width="525" data-original="https://pic4.zhimg.com/f2d8768af0d9264687905a0134dae927_r.png">
以上3個相乘得到梯度,之后就可以用這個梯度訓(xùn)練了:
很多教材比如Stanford的課程,會把中間結(jié)果記做,表示這個節(jié)點對最終的誤差需要負多少責(zé)任。。所以有。
對隱藏層的??
通過梯度下降調(diào)整,需要求,由鏈式法則:
,
如下圖所示:
<img src="https://pic3.zhimg.com/50/d50d1d812f0f036b8c5cb389e463b01a_hd.png" data-rawwidth="612" data-rawheight="494" class="origin_image zh-lightbox-thumb" width="612" data-original="https://pic3.zhimg.com/d50d1d812f0f036b8c5cb389e463b01a_r.png">參數(shù)參數(shù)影響了,進而影響了,之后又影響到、。
求解每個部分:
,
其中,這里之前計算過。
的計算也類似,所以得到
。
的鏈式中其他兩項如下:
,
相乘得到
得到梯度后,就可以對迭代了:
。
在前一個式子里同樣可以對進行定義,,所以整個梯度可以寫成
=======================
上述就是教程Unsupervised Feature Learning and Deep Learning Tutorial 中第三步計算的由來。。
<img src="https://pic3.zhimg.com/50/2d29c11b1c9da7652c63f01d5e31284e_hd.jpg" data-rawwidth="822" data-rawheight="428" class="origin_image zh-lightbox-thumb" width="822" data-original="https://pic3.zhimg.com/2d29c11b1c9da7652c63f01d5e31284e_r.jpg">
所謂的后向傳播,其實就是『將來在宣傳傳播上出了偏差,你們要負責(zé)的!』,每一個節(jié)點負責(zé)的量用表示,那么,隱藏節(jié)點需要負責(zé)的量,就由輸出節(jié)點負責(zé)的量一層層往前傳導(dǎo)。
參考:【1】A Step by Step Backpropagation Example
【2】Unsupervised Feature Learning and Deep Learning Tutorial
假設(shè)我們有一個固定樣本集?,它包含??個樣例。我們可以用批量梯度下降法來求解神經(jīng)網(wǎng)絡(luò)。具體來講,對于單個樣例?,其代價函數(shù)為:
這是一個(二分之一的)方差代價函數(shù)。給定一個包含??個樣例的數(shù)據(jù)集,我們可以定義整體代價函數(shù)為:
以上公式中的第一項??是一個均方差項。第二項是一個規(guī)則化項(也叫權(quán)重衰減項),其目的是減小權(quán)重的幅度,防止過度擬合。
[注:通常權(quán)重衰減的計算并不使用偏置項?,比如我們在??的定義中就沒有使用。一般來說,將偏置項包含在權(quán)重衰減項中只會對最終的神經(jīng)網(wǎng)絡(luò)產(chǎn)生很小的影響。如果你在斯坦福選修過CS229(機器學(xué)習(xí))課程,或者在YouTube上看過課程視頻,你會發(fā)現(xiàn)這個權(quán)重衰減實際上是課上提到的貝葉斯規(guī)則化方法的變種。在貝葉斯規(guī)則化方法中,我們將高斯先驗概率引入到參數(shù)中計算MAP(極大后驗)估計(而不是極大似然估計)。]
權(quán)重衰減參數(shù)??用于控制公式中兩項的相對重要性。在此重申一下這兩個復(fù)雜函數(shù)的含義:?是針對單個樣例計算得到的方差代價函數(shù);?是整體樣本代價函數(shù),它包含權(quán)重衰減項。
以上的代價函數(shù)經(jīng)常被用于分類和回歸問題。在分類問題中,我們用??或?,來代表兩種類型的標簽(回想一下,這是因為 sigmoid激活函數(shù)的值域為?;如果我們使用雙曲正切型激活函數(shù),那么應(yīng)該選用??和??作為標簽)。對于回歸問題,我們首先要變換輸出值域(譯者注:也就是?),以保證其范圍為??(同樣地,如果我們使用雙曲正切型激活函數(shù),要使輸出值域為?)。
我們的目標是針對參數(shù)??和??來求其函數(shù)??的最小值。為了求解神經(jīng)網(wǎng)絡(luò),我們需要將每一個參數(shù)??和??初始化為一個很小的、接近零的隨機值(比如說,使用正態(tài)分布??生成的隨機值,其中??設(shè)置為?),之后對目標函數(shù)使用諸如批量梯度下降法的最優(yōu)化算法。因為??是一個非凸函數(shù),梯度下降法很可能會收斂到局部最優(yōu)解;但是在實際應(yīng)用中,梯度下降法通常能得到令人滿意的結(jié)果。最后,需要再次強調(diào)的是,要將參數(shù)進行隨機初始化,而不是全部置為?。如果所有參數(shù)都用相同的值作為初始值,那么所有隱藏層單元最終會得到與輸入值有關(guān)的、相同的函數(shù)(也就是說,對于所有?,都會取相同的值,那么對于任何輸入??都會有:?)。隨機初始化的目的是使對稱失效。
梯度下降法中每一次迭代都按照如下公式對參數(shù)??和?進行更新:
其中??是學(xué)習(xí)速率。其中關(guān)鍵步驟是計算偏導(dǎo)數(shù)。我們現(xiàn)在來講一下反向傳播算法,它是計算偏導(dǎo)數(shù)的一種有效方法。
我們首先來講一下如何使用反向傳播算法來計算??和?,這兩項是單個樣例??的代價函數(shù)??的偏導(dǎo)數(shù)。一旦我們求出該偏導(dǎo)數(shù),就可以推導(dǎo)出整體代價函數(shù)??的偏導(dǎo)數(shù):
以上兩行公式稍有不同,第一行比第二行多出一項,是因為權(quán)重衰減是作用于??而不是?。
反向傳播算法的思路如下:給定一個樣例?,我們首先進行“前向傳導(dǎo)”運算,計算出網(wǎng)絡(luò)中所有的激活值,包括??的輸出值。之后,針對第?層的每一個節(jié)點?,我們計算出其“殘差”?,該殘差表明了該節(jié)點對最終輸出值的殘差產(chǎn)生了多少影響。對于最終的輸出節(jié)點,我們可以直接算出網(wǎng)絡(luò)產(chǎn)生的激活值與實際值之間的差距,我們將這個差距定義為??(第??層表示輸出層)。對于隱藏單元我們?nèi)绾翁幚砟?#xff1f;我們將基于節(jié)點(譯者注:第?層節(jié)點)殘差的加權(quán)平均值計算?,這些節(jié)點以??作為輸入。
具體BP算法的數(shù)學(xué)推導(dǎo)請參照機器學(xué)習(xí)《BP算法詳談》。
中英文對照
總結(jié)
以上是生活随笔為你收集整理的深度学习基础2(反向传播算法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习基础1(神经网络)
- 下一篇: 深度学习(一)——MP神经元模型, BP