假設有兩個輸入值,一個隱藏節點,一個輸出節點,隱藏層和輸出層的激活函數都是 sigmoid 。下圖描述了這個網絡。假設損失函數是平方誤差L=1/2(y-y^) 2
一、正向傳播
假設我們試着輸入一些二分類數據,目標是 y=1。我們從正向傳導開始,首先計算輸入到隱藏層
h=∑wixi=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 相乘。隱藏層的誤差 δjh=∑kWjkδkof′(hj),這里因為只有一個隱藏節點,這就比較簡單了
δh=Wδof′(h)=0.1×0.122×0.495×(1−0.495)=0.003
有了誤差,就可以計算梯度下降步長了。隱藏層到輸出層權重步長是學習率η乘以輸出誤差再乘以隱藏層激活值。
ΔW=ηδoa=0.5×0.122×0.495=0.0302
從輸入到隱藏層的權重 wi,是學習率乘以隱藏節點誤差再乘以輸入值。
Δwi=ηδhxi=(0.5×0.003×0.1,0.5×0.003×0.3)=(0.00015,0.00045)