人工神經網絡——誤差反傳訓練算法

誤差反傳訓練算法

先考慮網絡只有一個輸出y的情況。
給定N個樣本(xk,yk)(k=1,2,,N)(x_k,y_k)(k=1,2,\cdots,N),任意一個節點i的輸出爲OiO_i,其中第l層的第j個單元,當輸入第k個樣本時,結點j的輸入爲netjkl=iwijlOjkl1 net^l_{jk}=\sum_i{w^l_{ij}O^{l-1}_{jk}} 輸出爲Ojkl=fnetOjkl O^{l}_{jk} = f{netO^l_{jk}} 採用平方型誤差函數Ek=12i(yjkyjk)2 E_k=\frac{1}{2}\sum_i(y_{jk}- \overline{y} _{jk} )^2 總誤差爲E=12Nk=1NEk E = \frac{1}{2N} \sum^N_{k=1}E_k
δjkl=Eknetjkl \delta^l_{jk} = \frac{\partial E_k}{\partial net^l_{jk}} 因此Ekwijl=Eknetjklnetjklwijl=δjklOjkl1 \frac{\partial E_k}{\partial w^l_{ij}} =\frac{\partial E_k}{\partial net^l_{jk}} \frac{\partial net^l_{jk}} {\partial w^l_{ij}} = \delta^l_{jk} O^{l-1}_{jk} 對於δjkl=Eknetjkl\delta^l_{jk} = \frac{\partial E_k}{\partial net^l_{jk}}
(1)若j爲輸出單元,則
δjkl=Eknetjkl=EkOjklOjklnetjkl=EkOjklf(netjkl)\delta^l_{jk} = \frac{\partial E_k}{\partial net^l_{jk}}=\frac{\partial E_k}{\partial O^l_{jk}} \frac{\partial O^l_{jk}}{\partial net^l_{jk}}=\frac{\partial E_k}{\partial O^l_{jk}}f'(net^l_{jk})
(2)若j不是輸入單元,則δjkl=Eknetjkl=Ekyjkyjknetjkl=(yjkyjk)f(netjkl) \delta^l_{jk} = \frac{\partial E_k}{\partial net^l_{jk}} =\frac{\partial E_k}{\partial \overline{y} _{jk}} \frac{\partial \overline{y} _{jk}}{\partial net^l_{jk}} =-(y_{jk}- \overline{y} _{jk})f'(net^l_{jk})

{δjkl=mδjkl+1wmjl+1f(netjkl)Ekwijl=δjklOjkl1 \begin{cases} \delta^l_{jk} = \sum_m \delta^{l+1}_{jk} w^{l+1}_{mj}f'(net^l_{jk})\\ \frac{\partial E_k}{\partial w^l_{ij}}=\delta^l_{jk}O^{l-1}_{jk} \end{cases}
因此步驟大致爲正向計算過程,再進行反向過程修正權值。

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