一個例子秒懂誤差反向傳播

假設有兩個輸入值,一個隱藏節點,一個輸出節點,隱藏層和輸出層的激活函數都是 sigmoid 。下圖描述了這個網絡。假設損失函數是平方誤差L=1/2(y-y^) 2
在這裏插入圖片描述

一、正向傳播

假設我們試着輸入一些二分類數據,目標是 y=1。我們從正向傳導開始,首先計算輸入到隱藏層

h=∑​​w​i​​x​i​​=0.1×0.4−0.2×0.3=−0.02

隱藏層的輸出 (激活函數f=sigmoid)

a=f(h)=sigmoid(−0.02)=0.495.

把它作爲輸出層的輸入,神經網絡的輸出是:

​y​^​​=f(W⋅a)=sigmoid(0.1×0.495)=0.512.

二、反向傳播

有了這個輸出,我們就可以開始反向傳播來計算兩層的權重更新了。sigmoid 函數特性 f​′​​(x)=f(x)(1−f(x)),輸出誤差是:

δ​o​​=(y−​y​^​​)f​′​​(W⋅a)=(1−0.512)×0.512×(1−0.512)=0.122.

現在我們要通過反向傳播來計算隱藏層的誤差。這裏我們把輸出誤差與隱藏層到輸出層的權重 W 相乘。隱藏層的誤差 δ​j​h​​=∑​k​​W​jk​​δ​ko​​f​′​​(h​j​​),這裏因爲只有一個隱藏節點,這就比較簡單了

δ​h​​=Wδ​o​​f​′​​(h)=0.1×0.122×0.495×(1−0.495)=0.003

有了誤差,就可以計算梯度下降步長了。隱藏層到輸出層權重步長是學習率η乘以輸出誤差再乘以隱藏層激活值。

ΔW=ηδ​o​​a=0.5×0.122×0.495=0.0302

從輸入到隱藏層的權重 w​i​​,是學習率乘以隱藏節點誤差再乘以輸入值。

Δw​i​​=ηδ​h​​x​i​​=(0.5×0.003×0.1,0.5×0.003×0.3)=(0.00015,0.00045)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章