人工神经网络——误差反传训练算法

误差反传训练算法

先考虑网络只有一个输出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}
因此步骤大致为正向计算过程,再进行反向过程修正权值。

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