首页 > 代码库 > BP训练算法实现步骤
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步,为下一个输入向量重复上述步骤,直至网络收敛。
BP训练算法实现步骤