8.1.2  BP人工神经网络算法

更新于 2026年10月10日 版权声明
8.1.2 BP人工神经网络算法

D.E.Rumelhart和J.L.Mcclelland等人于1986年提出的BP网络,是由一个输入层、一个或多个隐含层和一个输出层构成的多层网络。BP网络结构如图8-2所示。BP网络的输入层和输出层是与外界联系的接口,这两层的节点数一般由应用对象的实际问题决定,不能任意选取。可以改变的仅为隐含层的层数和各隐含层的节点数。

图示

图8-2 BP人工神经网络结构

对于一个L层BP神经网络,具有一个输入层(l=0),(L-1)个隐含层(l=1,2,…,L-1)和一个输出层(l=L),即第l层包含的神经元数目为Nl,显然输入层有N0个神经元,输出层有NL个神经元。

输入层神经元没有偏置量,其输出等于输入,作用就是把输入数据传输到第一个隐含层的所有神经元;隐含层和输出层的所有神经元,都有一个转换函数f(x)和一个偏置量。常用的神经元转换函数有三种S型(Sigmoid)函数:logsig、tansig、purelin,如图8-3所示。

设第l层第n个神经元的偏置量为bn(l),第l层第n个神经元与第l-1层的所有神经元相连,每一个连接有一个权重,所有权重构成一个向量w(n)(l)。

图示

图8-3 神经元转换函数

假如输入数据有G个模式{s(g)|g=1,2,…,G},在给定网络初始权重条件下,如果将输入模式s(g)(N0维向量),从输入层输入,每一层对该输入模式都有一个响应,第l层的响应记为s(g)(l)(Nl维向量),显然输出层的输出为s(g)(L)(NL维向量)。则第l层第n个神经元的响应为

图示

定义BP网络的收敛误差函数E为所有模式的目标值向量t(g)与输出层的输出s(g)(L)的总误差的均方值E为

图示

BP神经网络训练的目标就是,寻找使E最小的网络权值。总的思想就是,先从权值空间中随机地选取一点,输入模式,从输入层输入,经隐含层处理,传输到输出层,再经输出层神经元处理后将结果输出,此为正向过程;误差反向传播过程的信息流向与正向过程相反,在此过程中,根据E的梯度下降的方向,逐层调整层间的连接权重,直到输入层。然后又转入正向过程,直到预期输出和目标值之间的误差达到最小(可接受的范围)。

梯度计算的递推公式为(https://www.daowen.com)

图示

偏置量、权值的变化步长计算公式为

图示

偏置量、权值更新公式为

图示

式(8-8)、式(8-9)中第二项为阻尼项(或称动量项),可以减少学习过程的振荡趋势,α为阻尼率(或称动量因子)。η为学习率,为了克服训练过程中收敛速度过慢的问题。T.P.Vogl提出了一种较有效的加速技术,在训练过程中,不是使用固定的学习率和阻尼率,而是动态改变,见式(8-12)所示:

图示

式中,t为迭代计数器,ϕ为加速因子(ϕ>1);β为减速因子(β<1);0.01≤ε≤0.05。

Vogl的算法很明显,如当前步的误差比上一步减小,表明前进方向正确,应该增大步长,同时保留阻尼项;如果当前步的误差比上一步增加很大,表明前进的步长太大,应取消该步,重新从上一步出发,并减小前进步长,不保留阻尼项;如果当前步的误差比上一步增加不太大,接受该步,下一步前进步长减小,也不保留阻尼项,接受该步有利于跳出局部最小点。Vogl建议ϕ=1.05,β=0.7。由于Vogl算法过分依赖于初始步长,如果η0太大,将要耗费过多的迭代次数才能达到一个较好的学习率。同时Vogl算法也对加速因子ϕ和减速因子β的值很敏感,因为它们会严重影响收敛速度。D.Anguita等人对Vogl算法进行了改进,提出一种YPROP算法,其主要思想是,不使用固定的加速因子ϕ和减速因子β,而是在每一步均改变它们,即

图示

式中,Ka与Kd分别为加速常数和减速常数。YPROP算法表明:在加速过程中,如果η太小,那么要η快速增大,即如η(t-1)≪Ka,ϕ(t)≅2,则η(t)≅2·η(t-1);反之,如果η很大,就要求η近似保持不变,即如η(t-1)≪Ka,ϕ(t)≅1,则η(t)≅η(t-1)。

在减速过程,情况相反,如果η很大,那么要η快速减小,即如η(t-1)≪Kd,β(t)≅Kd/η(t-1),则η(t)≅Kd;反之,如果η很小,可能进入了局部最小,就要求η近似保持不变,有利于跳出局部最小点,即如η(t-1)≪Kd,β(t)≅1,则η(t)≅η(t-1)。

BP人工神经网络算法的流程图如图8-4所示:

图示

图8-4 BP人工神经网络算法的流程图

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)