機(jī)器學(xué)習(xí):一步步教你理解反向傳播方法_第1頁
機(jī)器學(xué)習(xí):一步步教你理解反向傳播方法_第2頁
機(jī)器學(xué)習(xí):一步步教你理解反向傳播方法_第3頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、機(jī)器學(xué)習(xí):一步步教你理解反向傳播方法在閱讀反向傳播方法的時候,看到了這篇通過示例給出 反向傳播的博文 A Step by Step Backpropagation Example 在這篇博文中,作者通過一個簡單的示例,給出了反向傳播 的過程的過程,非常的清晰,遂結(jié)合自己的理解翻譯之,希 望對反向傳播方法有所理解的朋友有些許幫助。背景 反向傳播在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中雖然用得如此之多,但是 在網(wǎng)上還很少有通過具體的實例來解釋反向傳播怎么工作 的博文。所以在這篇文章中,我會嘗試用一個具體的例子來 解釋反向傳播過程,這樣有需要的朋友就可以通過自己的計 算過程來判斷自己對于反向理解的過程是否到位。 你可

2、以在我的 Gihub 上找個我寫的反向傳播的 Python 實現(xiàn) 代碼。概覽在這篇博文中,我們會使用有 2 個輸入單元的神經(jīng)網(wǎng)絡(luò), 2 個隱層神經(jīng)元以及 2 個輸出神經(jīng)元。此外,隱層和輸出神經(jīng) 元會包含一個偏置,下面是基本的網(wǎng)絡(luò)結(jié)構(gòu): 為了便于后面說明的說明,我們對該網(wǎng)絡(luò)設(shè)置一些初始的權(quán)重、偏置以及輸入和輸出:反向傳播的目標(biāo)是對權(quán)重進(jìn)行優(yōu)化,使得神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí) 到從任意的輸入到輸出的準(zhǔn)確映射。在這篇博文中,我們僅使用一個簡單的訓(xùn)練集,即輸入為0.05 和 0.10 ,我們希望網(wǎng)絡(luò)的輸出為 0.01 和 0.99( 即輸入的 樣本是兩個 : (0.05, 0.99), (0.10, 0.99)

3、 。前向傳播 首先來看看對于給定的初始化權(quán)重和偏置,網(wǎng)絡(luò)對于輸入 0.05 和 0.10 的輸出是啥。我們將輸入輸進(jìn)網(wǎng)絡(luò)中。 我們先計算從全部網(wǎng)絡(luò)的輸入到隱層的每一個神經(jīng)元,激活 函數(shù)采用 logistic 函數(shù),對于從隱層到輸出層,我們重復(fù)這 一過程。全部的網(wǎng)絡(luò)輸入也被稱為網(wǎng)絡(luò)的輸入Derivation ofBackpropagation下面是對于 h1 role=presentation style=position: relative;h1h1 全部網(wǎng)絡(luò)輸入的輸入計算過程: neth1=w1i1+w2i2+b11neth1= 0.150.05+0.20.1+0.351=0.37 75 r

4、ole=presentation style=position:.1+0.351=0.3775(譯者注:類比到 CNN 網(wǎng)絡(luò)里,這個過程就是卷積過程,得 到特征響應(yīng)圖 )然后我們將其輸入到激活函數(shù)中,得到輸出 h1 role=presentation style=position: relative;h1h1: outh1=11+eneth1=11+e0.3775=0.5932 69992 role=presentation style=position: relative;outh1=11+eneth1=11+e0.3775=0.593269992ou th1=11+eneth1=11+e0

5、.3775=0.593269992(譯者注:類比到 CNN 網(wǎng)絡(luò)里,這個過程特征響應(yīng)圖經(jīng)過激 活函數(shù)運(yùn)算的過程 )對于 h2 role=presentation style=position:relative;h2h2 通過上面相同的過程,我們可以得到: outh2=0.596884378 role=presentation style=position: relative;outh2=0.596884378outh2=0.596884378 對于輸入層神經(jīng)元, 將隱層的輸出作為輸入 (譯者注:在 CNN 中,還需要經(jīng)過池化后才能作為下一層的輸入,至于為啥需 要池化, 這里譯者不就解釋了 ),

6、重復(fù)上面相同的過程, 我們 可以得到:neto1=w5outh1+w6outh2+b25136507同樣的,重復(fù)上面相同的過程,可以得到 O2 role=presentation style=position: relative;O2O2: outO2=0.772928465 role=presentation style=position: relative;outO2=0.772928465outO2=0.772928465 計算總誤差 現(xiàn)在對于輸出的每一個神經(jīng)元,使用平方誤差函數(shù)求和來計 算總的誤差:Etotal=12(targetoutput)2 role=presentation s

7、tyle=position:刀 12(targetoutprelative;Etotal= 刀 12(targetoutput)2Etotal=ut)2output 就是我們的預(yù)測 label ,而 target 就是 groundtruth 。 12 role=presentation style=position: relative;1212使得我們在求騙到的時候可以消去 2,不影響模型參數(shù)的結(jié)果 求解。對于第一個神經(jīng)元的輸出 O1 role=presentation style=position: relative;O1O1 真實值是 0.01 ,而網(wǎng)絡(luò)的 輸出是 0.75136507

8、, 因而第一個神經(jīng)元的輸出誤差為: EO1=12(targetoutput)2=12(0.010.7513 6507)2=0.274811083 2=0.274811083 重復(fù)上面過程,可以得到第二個神經(jīng)元的輸出 O2 role=presentation style=position: relative;O2O2 為: EO2=0.023560026 role=presentation style=position: relative;EO2=0.023560026EO2=0.023560026 所以整個神經(jīng)網(wǎng)絡(luò)的誤差求和為: Etotal=EO1+EO2=0.274811083+0.023

9、560026=0.2983711 09 role=presentation style=position: relative;Etotal=EO1+EO2=0.274811083+0.023560026= 0.298371109Etotal=EO1+EO2=0.274811083+0.023560026=0.298371109反向傳播 反向傳播的目標(biāo)是:通過更新網(wǎng)絡(luò)中的每一個權(quán)重,使得最 終的輸出接近于 groundtruth ,這樣就得到整個網(wǎng)絡(luò)的誤差作 為一個整體進(jìn)行了最小化。輸出層先來考察 w5 role=presentation style=position: relative;w5w

10、5 ,我們想知道對于 w5 role=presentation style=position: relative;w5w5 的改變可以多大程度上影 響總的誤差,也就是 Etotalw5 role=presentation style=position: relative;Etotalw5Etotalw5 。 通過使用鏈?zhǔn)椒▌t,可以得到: Etotalw5=Etotalouto 1outO1netO1netO1w5 role=presentation style=position: relative;Etotalw5=Etotalouto1outO1netO1netO1w5Etotal w5=E

11、totalouto1outO1netO1netO1w5 為了更直觀的表述上面鏈?zhǔn)椒▌t的過程,對其進(jìn)行可視化: 我們對上面使用鏈?zhǔn)椒▌t得到的每一項分別進(jìn)行計算。首先,整體誤差關(guān)于各個神經(jīng)元的輸出改變了?Etotal=12(targetoutput)2=12(targetO1−outputO1)2+12(targetO2outputO2)2EtotaloutO1=212(targetO1outputO1)211+0=(targetO1outputO1)=(0.010.75136507)=0.74136507 role=presentation style=position:relat

12、ive;Etotal= 刀 12(targetoutput)2=12(targetO1outputO1)2+12(targetO2outputO2)2EtotaloutO1=212(targetO1out4136507Etotal= 刀 12(targetoutput)2= 12(targetO1outputO1)2+12(targetO2outputO2)2EtotaloutO1=212(targetO1outpu36507logistic 函數(shù)的偏導(dǎo)數(shù)為輸出乘以 1 減去輸出,即:outO1=11+enetO1outO1netO1=outO1(1outO1)=0.75136507(10.7

13、5136507)=0.186815602 role=presentation style=position:relative;outO1=11+enetO1outO1netO1=outO1(1outO1)=0.75136507(10.75136507)=0.186815602outO1=11+enetO1outO1netO1=outO1(1outO1)=0.75136507(10.75136507)=0.186815602最后,整個網(wǎng)絡(luò)的輸入 O1 role=presentationstyle=position: relative;O1O1 關(guān)于 w5 role=presentation st

14、yle=position: relative;w5w5 改變了 多少呢? netO1=w5outh1+w6outh2+b2 1Etotalw5=Etotalout o1outO1netO1netO1w5Etotalw5=0.741 365070.1868156020.593269992=0.08 2167041 你也會看到用 delta 規(guī)則表示的形式: Etotalw5=(targetO1 outO1)outO1(1outo1)outh1 role=presentation style=position: relative;Etotalw5=(targetO1outO1)outO1(1out

15、o1)outh1E totalw5=(targetO1outO1)outO1(1outo1)outh1 我們可以將 EtotaloutO1role=presentation style=position: relative;EtotaloutO1EtotaloutO1 和 outO1netO1 role=presentation style=position: relative;outO1netO1outO1netO1 寫為 EtotalnetO1 role=presentation style=position: relative;EtotalnetO1EtotalnetO1,并用O1 ro

16、le=presentation style=position:relative; 8 O18表示它,從而可以將上面的式子表示為: O1=Etotalouto1outO1netO1O1=(target O1outO1)outO1(1outo1) role=presentation style=position:relative; 8 O1=Etotalouto1outO1netO1 8 O1=(targetO1out O1)outO1(1outo1) 8 O1=Etotalouto1outO1netO1 8 O1=(targ etO1outO1)outO1(1outo1)因此有:Etotalw5

17、=O1outh1role=presentation style=position: relative;Etotalw5= 8 O1outh1Etotalw5= 8 O1outh1 有一些論文中通過將負(fù)號從 role=presentation style=position: relative; 中提8出8來將其也可以寫為下面 這種形式:Etotalw5=O1outh1role=presentation style=position:relative;Etotalw5= 8 O1outh1Etotalw5= 8 Olouthl為了減小誤差,我們將 w5 role=presentation styl

18、e=position: relative;w5w5 原來的值減去目前的權(quán)重(通常會乘上一個學(xué)習(xí)率 role=presentationstyle=position: relative;nn,這里我們將其設(shè)置為w5+=w5Etotalw5 role=presentation style=position: relative;w+5=w5 n Etotalw5w5+=w5 n Etotalw5學(xué)習(xí)率在不同的文章中可以記法不一樣,有用 role=presentation style=p osition: relative; 的,有用 role=presentation style=position:r

19、elative; 的n 有用 role=presentation style=position: relative; 的。和 w8重復(fù)上面的過程,我們可以得到更新后的 w6 role=presentation style=position: relative;w6w6 、w7 role=presentation style=position: relative;w7w7 role=presentation style=position: relative;w8w8w6+=0.408666186w7+=0.511301270w8+=0.561370121role=presentation sty

20、le=position: relative;w+6=0.408666186w+7=0.511301270w+8=0.56 1370121w6+=0.408666186w7+=0.511301270w8+=0.561 370121 注意,在我們繼續(xù)向前推進(jìn)反向傳播的時候,在要使用到 w5 role=presentation style=position: relative;w5w5、w6 role=presentation style=position: relative;w6w6、w7 role=presentation style=position: relative;w7w7和w8 rol

21、e=presentation style=position: relative;w8w8的地方,我們?nèi)匀皇褂玫氖窃瓉淼臋?quán)重, 而不是更新后的權(quán)重。 隱層我們繼續(xù)推進(jìn)反向傳播來計算 style=position: relative;w1w1 style=position: relative;w2w2 style=position: relative;w3w3 style=position: relative;w4w4w1 role=presentation、 w2 role=presentation、 w3 role=presentation和 w4 role=presentation 更新的權(quán)

22、重:同樣使用鏈?zhǔn)椒▌t,我們可以得到:Etotalw1=Etotalouth 1outh1neth1neth1w1 role=presentation style=position:relative;Etotalw1=Etotalouth1outh1neth1neth1w1Etotal w1=Etotalouth1outh1neth1neth1w1可視化上面的鏈?zhǔn)椒▌t:對于這一層 (隱層 ) 的更新我們采用上面輸出層相似的處理方 式,不過會稍有不同,這種不同主要是因為每一個隱層神經(jīng) 元的輸出對于最終的輸出都是有貢獻(xiàn)的。我們知道 outh1 role=presentation style=posi

23、tion: relative;outh1outh1 既影響 outO1 role=presentation style=position: relative;outO1outO1 也影響 outO2 role=presentation style=position: relative;outO2outO2 ,因此 Etotalouth1 role=presentation style=position: relative;Etotalouth1Etotalouth1 需要同時 考慮到這兩個輸出神經(jīng)元影響: Etotalouth1=EO1out h1+EO2outh1 role=presenta

24、tion style=position: relative;Etotalouth1=EO1outh1+EO2outh1Etotalouth1= EO1outh1+EO2outh1 又由于: EO1outh1=EO1net O1netO1outh1 role=presentation style=position:relative;EO1outh1=EO1netO1netO1outh1EO1outh1=EO1netO1netO1outh1我們可以用前面計算的值來計算EO1netO1 role=presentationstyle=position: relative;EO1netO1EO1netO

25、1:EO1netO1=EO1outO1outO1netO1=0.741365070.186815602=0.138498562 role=presentation style=position:relative;EO1netO1=EO1outO1outO1netO1=0.74136507又因為 netO1outh1 role=presentation style=position: relative;netO1outh1netO1outh1 等于 w5 role=presentation style=position: relative;w5w5: netO1=w5outh1+w6outh2+

26、b21netO1outh1=w5=0.40role=presentation style=position: relative;netO1=w5outh1+w6outh2+b21netO1outh1=w5= 0.40netO1=w5outh1+w6outh2+b21netO1outh1=w5=0.40 將上面每步分開算的結(jié)果合起來得:EO1outh1=EO1netO1netO1outh1=0.138498562 0.40=0.055399425 role=presentationstyle=position:relative;EO1outh1=EO1netO1netO1outh1=0.1384

27、985620.40=0.055399425EO1outh1=EO1netO1netO1outh1=0.1384985620.40=0.055399425 與上面的步驟一樣,我們可以得到: EO2outh1=w5=0.019049119 role=presentation style=position:relative;EO2outh1=w5=0.019049119EO2outh1=w5=0.019049119因此:Etotalouth1=EO1outh1+EO2outh1=0.055399425+(0.019049119)=0.036350306 role=presentation style

28、=position:relative;Etotalouth1=EO1outh1+EO2outh1=0.055399425+(0.019049119)=0.036350306Etotalouth1=EO1outh1+EO2outh1=0.055399425+(0.019049119)=0.036350306現(xiàn)在我們已經(jīng)有了 Etotalouth1 role=presentation style=position: relative;Etotalouth1Etotalouth1 ,我們還需要為每一個需 要更新的權(quán)重計算 outh1neth1 role=presentation style=posi

29、tion: relative;outh1neth1outh1neth1 和 neth1w role=presentation style=position: relative;neth1wneth1w : outh1=11+e(neth1)outh1neth1=outh1(1 outh1)=0.59326999(10.59326999)=0.2 41300709 role=presentation style=position: relative;outh1=11+e(neth1)outh1neth1=outh1(1outh1)=0 .59326999(10.59326999)=0.24130

30、0709outh1=11+e(neth1 )outh1neth1=outh1(1outh1)=0.59326999(10.59326999)=0. 241300709 如我們前面對于輸出神經(jīng)元所做的一樣,我們計算 h1 role=presentation style=position: relative;h1h1 的全部 輸入關(guān)于 w1 role=presentation style=position: relative;w1w1 求偏導(dǎo): neth1=w1i1+w2i2+b11neth1w1=i1=0.05 role=presentation style=position: relative

31、;neth1=w1i1+w2i2+b11neth1w1=i1=0.05neth1= w1i1+w2i2+b11neth1w1=i1=0.05將上面計算的各個部分合起來:Etotalw1=Etotalouth1outh1neth1neth1w1Etotalw1=0.0363502413007090.05=0.000438568你可以可能會看到下面的這種寫法: Etotalw1=(OEtotal& #x2202;outOoutOnetOnetOouth1)outh1 neth1neth1w1Etotalw1=(OO whO)outh1(1outh1)i Etotalw1=h1i1 role=presentation style=position

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論