上面提到人工神经网络学习,存储信息的能力主要来至于其神经元间可变化的权值。对人工神经网络的训练也就是找到一组合适的权值来完成信息的映射处理。网络初始化时各神经元间的权值也是随机的。通过BP算法,我们可以不断的更改权值来精确地描述问题。图2.3就是神经网络训练的流程图。
神经网络训练过程概述:
样本:(输入向量,理想输出向量)
权初始化:给各个层间的神经网络初始化随机的权值,然后进行向前传播计算值,并把误差向后传播。
向前传播阶段:
(1)从训练集中取出一些样本,即输入向量Xi和预期输出向量Yi。
(2)计算相应的实际输出Oi:
Oi=F(...S(Oi*wi)...)
向后传播阶段——误差传播阶段:
(1)计算Oi与Yi的差值;
(2)使误差以梯度下降的方式调整权矩阵。
(3)网络关于第i个样本的误差值:
整个训练集的误差值:
BP神经网络的算法实现:
主要数据结构
W[H,O]——输出层的权矩阵;
V[I,H]——输入(隐藏)层的权矩阵;
∆o[m]——输出层权值修改量向量;
∆h[H]——隐藏层权值修改量向量;
O1——隐藏层的输出向量;
O2——输出层的输出向量;
(X,Y)——一个样本。
用随机数初始化W,V;
初始化精度控制参数ε;学习率α ;
循环控制参数E=ε+1;循环最大次数M;循环次数控制参数N=0;