向前传播阶段 ①从样本集中取一个样本(Xp,Yp),将Xp输入网络,其中Xp为输入向量,Yp为期望输出向量。 ②计算相应的实际输出Op。 在此阶段,信息从输入层经过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程中,网络执行的是下列运算:
向后传播阶段 ①计算实际输出Op与相应的理想输出Yp的差; ②按极小化误差的方法调整权矩阵。 这两个阶段的工作一般应受到精度要求的控制,定义 作为网络关于第p个样本的误差测度(误差函数)。而将网络关于整个样本集的误差测度定义为 如前所述,之所以将此阶段称为向后传播阶段,是对应于输入信号的正常传播而言的,也称之为误差传播阶段。 为了更清楚地说明本文所使用的BP网络的训练过程,首先假设输入层、中间层和输出层的单元数分别是N、L和M。X=(x0,x1,…,xN-1)是加到网络的输入矢量,H=(h0,h1,…,hL-1)是中间层输出矢量,Y=(y0,y1,…,yM-1)是网络的实际输出矢量,并且用D=(d0,d1,…,dM-1)来表示训练组中各模式的目标输出矢量。输入单元i到隐单元j的权值是Vij,而隐单元j到输出单元k的权值是Wjk。另外用θk和Φj来分别表示输出单元和隐单元的阈值。 于是,中间层各单元的输出为: 而输出层各单元的输出是: 其中f(*)是激励函数,采用S型函数:
训练过程 (1) 选定训练集。由相应的训练策略选择样本图像作为训练集。 (2) 初始化各权值Vij,Wjk和阈值Φj,θk,将其设置为接近于0的随机值,并初始化精度控制参数ε和学习率α。 (3) 从训练集中取一个输入向量X加到网络,并给定它的目标输出向量D。 (4) 利用上式(3)计算出一个中间层输出H,再用上式(4)计算出网络的实际输出Y。 (5) 将输出矢量中的元素yk与目标矢量中的元素dk进行比较,计算出M个输出误差项:对中间层的隐单元也计算出L个误差项: (6) 依次计算出各权值和阈值的调整量: (7) 调整权值和阈值: (8) 当k每经历1至M后,判断指标是否满足精度要求:E≤ε,其中E是总误差函数,且。如果不满足,就返回(3),继续迭代。如果满足,就进入下一步。 (9) 训练结束,将权值和阈值保存在文件中。这时可以认为各个权值已经达到稳定,分类器形成。再一次进行训练时,直接从文件导出权值和阈值进行训练,不需要进行初始化。