熱線電話:13121318867

登錄
首頁精彩閱讀深度學習:神經網絡中的前向傳播和反向傳播算法推導
深度學習:神經網絡中的前向傳播和反向傳播算法推導
2018-08-20
收藏

深度學習神經網絡中的前向傳播和反向傳播算法推導

1. 神經網絡
這是一個常見的神經網絡的圖:

這是一個常見的三層神經網絡的基本構成,Layer L1是輸入層,Layer L2是隱含層,Layer L3是隱含層,當我們輸入x1,x2,x3等數據時,通過隱含層的計算、轉換,輸出你的期望,當你的輸入和輸出是一樣的時候,成為自編碼模型(Auto-Encoder),而當你輸入和輸出是不一致的時候,也就是我們常說的人工神經網絡。

2.  如何計算傳播
首先我們先構建一個簡單的網絡層作為例子:

在這個網絡層中有

    第一層輸入層:里面包含神經元i1,i2,截距:b1,權重:w1,w2,w3,w4
    第二層是隱含層:里面包含h1,h2,截距:b2,權重:w5,w6,w7,w8
    第三層是輸出層:里面包含o1,o2

我們使用sigmoid作為激活函數

假定我們輸入數據i1: 0.02 i2: 0.04 截距b1:0.4 b2:0.7 期望的輸出數據o1:0.5  o2:0.9
未知的是權重w1,w2,w3,w4,w5,w6,w7,w8
我們的目的是為了能的到o1:0.5 o2:0.9的期望的值,計算出w1,w2,w3....w8的權重值

先假如構造一個權重w1,w2,w3.....w8的值,通過計算獲取到最佳的w1,w2,w3....w8的權重

權重的初使值:

    w1=0.25
    w2=0.25
    w3=0.15
    w4=0.20
    w5=0.30
    w6=0.35
    w7=0.40
    w8=0.35


2.1 前向傳播
2.1.1 輸入層到隱含層
NET(h1)=w1*i1+w2*i2+b1=0.25*0.02+0.25*0.04+0.4=0.005+0.01+0.4=0.415

神經元h1到輸出h1的激活函數是sigmoid

OUT(h1)=1/(1+e^(-NET(h1)))=1/(1+0.660340281)=0.602286177

同理我們也可以獲取OUT(h2)的值
NET(h2)=w3*i1+w4*i2+b1=0.15*0.02+0.20*0.04+0.4=0.003+0.008+0.4=0.411
OUT(h2)=1/(1+e^(-NET(h2)))=1/(1+0.662986932)=0.601327636

2.1.2 從隱含層到輸出層
計算輸出層的神經元o1, o2的值,計算方法和輸出層到隱含層類似
NET(o1)=w5*h1+w6*h2+b2=0.3*0.602286177+0.35*0.601327636+0.7=0.180685853+0.210464672+0.7=1.091150525
OUT(o1)=1/(1+e^(-NET(o1)))=1/(1+0.335829891)=0.748598311
同理
NET(o2)=w7*h1+w8*h2+b2=0.4*0.602286177+0.35*0.601327636+0.7=0.240914471+0.210464672+0.7=1.151379143
OUT(o2)=1/(1+e^(-NET(o2)))=1/1.316200383=0.759762733

o1:0.748598311   o2:0.759762733 距離我們期望的o1:0.5  o2:0.9還是有很大的距離
2.2 計算總誤差

公式:

也就是我們需要計算每個期望誤差的和
E(total)= E(o0)+E(o1)=(1/2)*(0.748598311-0.5)^2+(1/2)*(0.759762733-0.9)^2=0.01545028+0.009833246=0.025283526

2.3 反向傳播

每一個權重對誤差的影響,我們可以通過下圖更直觀的看清楚誤差的反向傳播

2.3.1 隱含層到輸出層的權值更新

隱含層到輸出層的權值,在上面的例子里是W5,W6,W7,W8

我們以W6參數為例子,計算W6對整體誤差的影響有多大,可以使用整體誤差對W6參數求偏導:


很明顯并沒有W6對Etotal的計算公式,我們只有W6對Net(o1)的計算公式
但根據偏導數的鏈式法則,我們可以將我們存在的推導公式進行鏈式乘法

我們來計算每一個公式的偏導:


這是一個復合函數的導數

,則復合函數的導數為:


這里g(x)=target(o1)-out(o1)  g'(x)=-1

=-(0.5-0.748598311)=0.248598311

  • 計算
已知

我們來推導一下
還是復合函數的推導



最后推導的結果:

最后我們的公式



=0.248598311*0.18819888*0.601327636=0.028133669

2.3.1.1 跟新W6的權重

W6=W6-x*
其中 x 就是我們常說的學習速率,設置x學習速率為0.1 那么新的w6的權重就是

0.35-0.1*0.028133669=0.347186633

相同的道理,我們也可以計算新的W5,W6,W7,W8的權重

可是如何計算和跟新W1,W2,W3,W4的權重呢?

2.3.2 隱含層的權值跟新

大概的算法還是和前面類似,如下圖所展示:



計算公式:

2.3.2.1 計算

對Out(h1)來說Etotal并不依賴于Out(h1)計算,需要將Total分拆成兩個Eo1和Eo2來計算
公式如下:

接著推導公式:
  • 計算



  • 同理也可以計算

2.3.2.2 計算



2.3.2.3 計算



最后三者相乘:

2.3.2.4 整體公式

根據前面的公式,我們可以推導出最后的公式




2.3.2.4 跟新W1的權重

和計算W6的權重一樣:

設置學習速率,計算的到w1的權重值


3. 計算獲取最佳的權重

我們將獲取的新的權重不停的迭代,迭代一定的次數后直到接近期望值o1:0.5 o2:0.9后,所的到權重w1...w8,就是所需要的權重。


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢