https://m.toutiao.com/is/AmVmvCA/ 反向傳播算法(Backpropagation)文章目錄
一.簡介無論是機(jī)器學(xué)習(xí),,還是深度學(xué)習(xí),。都繞不開一個梯度下降。在進(jìn)行深度學(xué)習(xí)簡介的時候,,我們有介紹過深度學(xué)習(xí)的大致步驟,,分別為:
其中,,選出最佳模型的方式,其實就是利用梯度下降算法,,選出損失函數(shù)最小的那個,。在傳統(tǒng)的機(jī)器學(xué)習(xí)當(dāng)中,這個比較容易,,直接算就行了,。但是在深度學(xué)習(xí)當(dāng)中,由于存在輸入層,,隱藏層,,輸出層,且隱藏層到底有多深,,這些都是未知數(shù),,因此計算也會更加繁雜。 如果,,在輸出層輸出的數(shù)據(jù)和我們設(shè)定的目標(biāo)以及標(biāo)準(zhǔn)相差比較大,,這個時候,,就需要反向傳播。利用反向傳播,,逐層求出目標(biāo)函數(shù)對各神經(jīng)元權(quán)值的偏導(dǎo)數(shù),,構(gòu)成目標(biāo)函數(shù)對權(quán)值向量的梯度,之所以算這個,,是為了對權(quán)值的優(yōu)化提供依據(jù),,等權(quán)值優(yōu)化了之后,再轉(zhuǎn)為正向傳播……當(dāng)輸出的結(jié)果達(dá)到設(shè)定的標(biāo)準(zhǔn)時,,算法結(jié)束,。 二.反向傳播原理2.1 導(dǎo)數(shù)的鏈?zhǔn)椒▌t反向傳播的基本原理其實不難,基本理論就是大學(xué)高等數(shù)學(xué)當(dāng)中的導(dǎo)數(shù)計算,。我們需要了解的就是鏈?zhǔn)椒▌t: 2.2 正向傳播與反向傳播我們還是用邏輯回歸的神經(jīng)元為例:
我們知道,,無論是機(jī)器學(xué)習(xí),,還是深度學(xué)習(xí),計算之后都會產(chǎn)生一定的損失值,,我們把這個損失函數(shù)記為l,。 其中,,z對w求偏導(dǎo)這一步其實不難,,不就是z對w求導(dǎo)嘛,我們很容易就能算出 而x1,x2其實就是最開始的輸入值,,因此可以當(dāng)做是已知的,。上面這個計算過程,就是正向傳播 而l對z求導(dǎo),,這個部分其實很復(fù)雜,。這一部分的求解過程,就是反向傳播,。那么這個部分該怎么求呢,?如下所示: 如果這個神經(jīng)網(wǎng)絡(luò)稍微復(fù)雜一點呢?比如說,,像下面這樣: 那么,,我們根據(jù)鏈?zhǔn)椒▌t,就可以得到: 上面這個式子與公式1結(jié)合,就是: 參考下面這個圖看一看 如此一來,,反向傳播的這一部分,,我們也知道了求解原理。 對于公式2的方式,,人們梳理了一下這個過程像極了如下所示的這個流程,。即:先求l對z’的導(dǎo),以及l(fā)對z’'的導(dǎo),,然后分別乘以w3和w4,,在結(jié)合sigma’(z),于是有人就根據(jù)這個計算流程,,畫出來了下面這個圖: 這其實不就是我們所舉的這個神經(jīng)網(wǎng)絡(luò),,把箭頭全都倒過來嘛。因此,,便有了“反向傳播”的說法,。 這當(dāng)中,我們注意紅色標(biāo)注的sigma’(z),,這個是Simoid函數(shù)對z進(jìn)行求導(dǎo)的結(jié)果,。由于在正向傳播的時候,z是什么其實已經(jīng)知道了,,sigomid函數(shù)我們也是知道的,,因此sigma’(z)我們也是已知的。 不過,,又產(chǎn)生新的問題了,。dl/dz的求解,明顯依賴于dl/dz’,,以及dl/dz’’,。那么這兩項又是如何求的呢?答案是:根據(jù)輸出值去求,。任何一組數(shù)據(jù),,在經(jīng)過神經(jīng)網(wǎng)絡(luò)運算之后,都會產(chǎn)生一個輸出值,,我們記為y,。如下所示: 這個時候,我們就要分情況討論了,。
三.總結(jié)正向傳播與反向傳播其實是同時使用的,。 首先,,你需要正向傳播,來計算z對w的偏導(dǎo),,進(jìn)而求出sigmoid’(z)是多少,。然后,根據(jù)輸出層輸出的數(shù)據(jù)進(jìn)行反向傳播,,計算出l對z的偏導(dǎo)是多少,,最后,代入到公式0當(dāng)中,,即可求出l對w的偏導(dǎo)是多少,。注意,這個偏導(dǎo),,其實反應(yīng)的就是梯度,。然后我們利用梯度下降等方法,對這個w不斷進(jìn)行迭代(也就是權(quán)值優(yōu)化的過程),,使得損失函數(shù)越來越小,,整體模型也越來越接近于真實值。 |
|