神經(jīng)網(wǎng)絡(luò)中的反向傳播法算法推導(dǎo)及matlab代碼實(shí)現(xiàn)2017(共9頁)_第1頁
神經(jīng)網(wǎng)絡(luò)中的反向傳播法算法推導(dǎo)及matlab代碼實(shí)現(xiàn)2017(共9頁)_第2頁
神經(jīng)網(wǎng)絡(luò)中的反向傳播法算法推導(dǎo)及matlab代碼實(shí)現(xiàn)2017(共9頁)_第3頁
神經(jīng)網(wǎng)絡(luò)中的反向傳播法算法推導(dǎo)及matlab代碼實(shí)現(xiàn)2017(共9頁)_第4頁
神經(jīng)網(wǎng)絡(luò)中的反向傳播法算法推導(dǎo)及matlab代碼實(shí)現(xiàn)2017(共9頁)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上最近在看深度學(xué)習(xí)的東西,一開始看的吳恩達(dá)的UFLDL教程,有中文版就直接看了,后來發(fā)現(xiàn)有些地方總是不是很明確,又去看英文版,然后又找了些資料看,才發(fā)現(xiàn),中文版的譯者在翻譯的時(shí)候會(huì)對(duì)省略的公式推導(dǎo)過程進(jìn)行補(bǔ)充,但是補(bǔ)充的又是錯(cuò)的,難怪覺得有問題。反向傳播法其實(shí)是神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)了,但是很多人在學(xué)的時(shí)候總是會(huì)遇到一些問題,或者看到大篇的公式覺得好像很難就退縮了,其實(shí)不難,就是一個(gè)鏈?zhǔn)角髮?dǎo)法則反復(fù)用。如果不想看公式,可以直接把數(shù)值帶進(jìn)去,實(shí)際的計(jì)算一下,體會(huì)一下這個(gè)過程之后再來推導(dǎo)公式,這樣就會(huì)覺得很容易了。說到神經(jīng)網(wǎng)絡(luò),大家看到這個(gè)圖應(yīng)該不陌生: 這是典型的三層神

2、經(jīng)網(wǎng)絡(luò)的基本構(gòu)成,Layer L1是輸入層,Layer L2是隱含層,Layer L3是隱含層,我們現(xiàn)在手里有一堆數(shù)據(jù)x1,x2,x3,.,xn,輸出也是一堆數(shù)據(jù)y1,y2,y3,.,yn,現(xiàn)在要他們?cè)陔[含層做某種變換,讓你把數(shù)據(jù)灌進(jìn)去后得到你期望的輸出。如果你希望你的輸出和原始輸入一樣,那么就是最常見的自編碼模型(Auto-Encoder)??赡苡腥藭?huì)問,為什么要輸入輸出都一樣呢?有什么用???其實(shí)應(yīng)用挺廣的,在圖像識(shí)別,文本分類等等都會(huì)用到,我會(huì)專門再寫一篇Auto-Encoder的文章來說明,包括一些變種之類的。如果你的輸出和原始輸入不一樣,那么就是很常見的人工神經(jīng)網(wǎng)絡(luò)了,相當(dāng)于讓原始數(shù)據(jù)

3、通過一個(gè)映射來得到我們想要的輸出數(shù)據(jù),也就是我們今天要講的話題。本文直接舉一個(gè)例子,帶入數(shù)值演示反向傳播法的過程,公式的推導(dǎo)等到下次寫Auto-Encoder的時(shí)候再寫,其實(shí)也很簡單,感興趣的同學(xué)可以自己推導(dǎo)下試試:)(注:本文假設(shè)你已經(jīng)懂得基本的神經(jīng)網(wǎng)絡(luò)構(gòu)成,如果完全不懂,可以參考Poll寫的筆記:)假設(shè),你有這樣一個(gè)網(wǎng)絡(luò)層:第一層是輸入層,包含兩個(gè)神經(jīng)元i1,i2,和截距項(xiàng)b1;第二層是隱含層,包含兩個(gè)神經(jīng)元h1,h2和截距項(xiàng)b2,第三層是輸出o1,o2,每條線上標(biāo)的wi是層與層之間連接的權(quán)重,激活函數(shù)我們默認(rèn)為sigmoid函數(shù)。現(xiàn)在對(duì)他們賦上初值,如下圖:其中,輸入數(shù)據(jù)  i

4、1=0.05,i2=0.10;輸出數(shù)據(jù) o1=0.01,o2=0.99;初始權(quán)重  w1=0.15,w2=0.20,w3=0.25,w4=0.30;  w5=0.40,w6=0.45,w7=0.50,w8=0.55目標(biāo):給出輸入數(shù)據(jù)i1,i2(0.05和0.10),使輸出盡可能與原始輸出o1,o2(0.01和0.99)接近。 Step 1 前向傳播1.輸入層->隱含層:計(jì)算神經(jīng)元h1的輸入加權(quán)和:神經(jīng)元h1的輸出o1:(此處用到激活函數(shù)為sigmoid函數(shù)): 同理,可計(jì)算出神經(jīng)元h2的輸出o2:2.隱含層->輸出層:計(jì)算輸出層神經(jīng)元o1和o

5、2的值:這樣前向傳播的過程就結(jié)束了,我們得到輸出值為0. , 0.,與實(shí)際值0.01 , 0.99相差還很遠(yuǎn),現(xiàn)在我們對(duì)誤差進(jìn)行反向傳播,更新權(quán)值,重新計(jì)算輸出。Step 2 反向傳播1.計(jì)算總誤差總誤差:(square error)但是有兩個(gè)輸出,所以分別計(jì)算o1和o2的誤差,總誤差為兩者之和:2.隱含層->輸出層的權(quán)值更新:以權(quán)重參數(shù)w5為例,如果我們想知道w5對(duì)整體誤差產(chǎn)生了多少影響,可以用整體誤差對(duì)w5求偏導(dǎo)求出:(鏈?zhǔn)椒▌t)下面的圖可以更直觀的看清楚誤差是怎樣反向傳播的:現(xiàn)在我們來分別計(jì)算每個(gè)式子的值:計(jì)算:計(jì)算:(這一步實(shí)際上就是對(duì)sigmoid函數(shù)求導(dǎo),比較簡單,可以自己推

6、導(dǎo)一下)計(jì)算:最后三者相乘:這樣我們就計(jì)算出整體誤差E(total)對(duì)w5的偏導(dǎo)值?;剡^頭來再看看上面的公式,我們發(fā)現(xiàn):為了表達(dá)方便,用來表示輸出層的誤差:因此,整體誤差E(total)對(duì)w5的偏導(dǎo)公式可以寫成:如果輸出層誤差計(jì)為負(fù)的話,也可以寫成:最后我們來更新w5的值:(其中,是學(xué)習(xí)速率,這里我們?nèi)?.5)同理,可更新w6,w7,w8:3.隱含層->隱含層的權(quán)值更新:方法其實(shí)與上面說的差不多,但是有個(gè)地方需要變一下,在上文計(jì)算總誤差對(duì)w5的偏導(dǎo)時(shí),是從out(o1)->net(o1)->w5,但是在隱含層之間的權(quán)值更新時(shí),是out(h1)->net(h1)->

7、w1,而out(h1)會(huì)接受E(o1)和E(o2)兩個(gè)地方傳來的誤差,所以這個(gè)地方兩個(gè)都要計(jì)算。 計(jì)算:先計(jì)算:同理,計(jì)算出:兩者相加得到總值:再計(jì)算:再計(jì)算:最后,三者相乘: 為了簡化公式,用sigma(h1)表示隱含層單元h1的誤差:最后,更新w1的權(quán)值:同理,額可更新w2,w3,w4的權(quán)值:這樣誤差反向傳播法就完成了,最后我們?cè)侔迅碌臋?quán)值重新計(jì)算,不停地迭代,在這個(gè)例子中第一次迭代之后,總誤差E(total)由0.下降至0.。迭代10000次后,總誤差為0.,輸出為0.,0.(原輸入為0.01,0.99),證明效果還是不錯(cuò)的。clear allclcclose al

8、li1=0.05; i2=0.10;o1=0.01; o2=0.99;w1=0.15; w2=0.20; w3=0.25; w4=0.30; b1=0.35;w5=0.40; w6=0.45; w7=0.50; w8=0.55; b2=0.6; % alpha=38.9% epoch=6000;alpha=0.5epoch=10000;for k=1:epoch% forward:hidden layersnet_h1=w1*i1+w2*i2+b1*1;out_h1=1/(1+exp(-net_h1);net_h2=w3*i1+w4*i2+b1*1;out_h2=1/(1+exp(-net_h

9、2); %forward:output layernet_o1=w5*out_h1+w6*out_h2+b2*1;net_o2=w7*out_h1+w8*out_h2+b2*1;out_o1=1/(1+exp(-net_o1);out_o2=1/(1+exp(-net_o2); % cost functionE_total(k)=(out_o1-o1)2+(out_o2-o2)2)/2; % backward: output layerdE_dw5=-(o1-out_o1)*out_o1*(1-out_o1)*out_h1;dE_dw6=-(o1-out_o1)*out_o1*(1-out_o

10、1)*out_h2;dE_dw7=-(o2-out_o2)*out_o2*(1-out_o2)*out_h1;dE_dw8=-(o2-out_o2)*out_o2*(1-out_o2)*out_h2; % backward: hidden layerdE_douto1=-(o1-out_o1);douto1_dneto1=out_o1*(1-out_o1);% dEo1_douth1=-(o1-out_o1)*out_o1*(1-out_o1)dEo1_dneto1=dE_douto1*douto1_dneto1;dEo1_douth1=dEo1_dneto1*w5;dEo1_douth2=d

11、Eo1_dneto1*w6; dE_douto2=-(o2-out_o2);douto2_dneto2=out_o2*(1-out_o2);% dEo1_douth1=-(o1-out_o1)*out_o1*(1-out_o1)dEo2_dneto2=dE_douto2*douto2_dneto2;dEo2_douth1=dEo2_dneto2*w7;dEo2_douth2=dEo2_dneto2*w8; dE_dw1=(dEo1_douth1+dEo2_douth1)*out_h1*(1-out_h1)*i1;dE_dw2=(dEo1_douth1+dEo2_douth1)*out_h1*(1-out_h1)*i2;dE_dw3=(dEo1_douth2+dEo2_douth2)*out_h2*(1-out_h2)*i1;dE_dw4=(dEo1_douth2+dEo2_douth2)*out_h2*(1-out_h2)*i2; w1=w1-alpha*dE_dw

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論