BP训练算法实现步骤

     准备:训练数据组。设网络有$m$层,$y_j^m$表示第$m$中第$j$个节点的输出,$y_^0$(零层输出)等于$x_j$,即第$j$个输入。$w_{ij}^m$表示从$y_i^{m-1}$到$y_j^m$的连接加权。这里,$m$代表层号,而不是向量的类号。

      1.将各加权随机置为小的随机数。可用均匀分布的随机数,以保证网络不被大的加权值所饱和。

      2. 从训练数据组中选一数据对$x^k,T^k$, 将输入向量加到输入层$(m=0)$,使得对所有端点$i$:         $y_i^0=x_i^k$, $k$表示向量类号

      3. 信号通过网络向前传播,即利用关系式:

\[y_j^m=F(s_j^m)=F(\sum_iw_{ij}^my_i^{m-1})\]

计算从第一层开始的各层内每个节点$i$的输出$y_j^m$,直到输出层的每个节点的输出计算完为止。

      4. 计算输出层每个结点的误差值(利用公式(1))

\[\delta_j^m=F‘(s_j^m)(T_j^k-y_i^m)=y_j^m(1-y_j^m)(T_j^k-y_j^m),(\text{对Sigmod函数})\]

它是由实际输出和要求目标值之差获得。

     5. 计算前面各层结点的误差值(利用公式(2))

\[\delta_j^{m-1}=F‘(s_j^{m-1}\sum_iw_{ji}\delta_i^m)\]

这里逐层计算反传误差,直到将每层类每个结点的误差值算出为止。

     6. 利用加权修正公式

\[
\Delta w_{ij}^m = \eta \delta _j^m y_i^{m - 1}
\]

和关系

\[
w_{ij}^{new} = w_{ij}^{old} + \Delta w_{ij}
\]

修正所有连接权。一般$\eta=0.01--1$,称为训练速率系数。

     7. 返回第2步,为下一个输入向量重复上述步骤,直至网络收敛。

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。