版权归原作者所有,如有侵权,请联系我们

[科普中国]-BP算法

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

原理

BP算法由信号的正向传播和误差的反向传播两个过程组成。

正向传播时,输入样本从输入层进入网络,经隐层逐层传递至输出层,如果输出层的实际输出与期望输出(导师信号)不同,则转至误差反向传播;如果输出层的实际输出与期望输出(导师信号)相同,结束学习算法。

反向传播时,将输出误差(期望输出与实际输出之差)按原通路反传计算,通过隐层反向,直至输入层,在反传过程中将误差分摊给各层的各个单元,获得各层各单元的误差信号,并将其作为修正各单元权值的根据。这一计算过程使用梯度下降法完成,在不停地调整各层神经元的权值和阈值后,使误差信号减小到最低限度。

权值和阈值不断调整的过程,就是网络的学习与训练过程,经过信号正向传播与误差反向传播,权值和阈值的调整反复进行,一直进行到预先设定的学习训练次数,或输出误差减小到允许的程度。1

基本思想BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调整过程,是周而复始地进行的。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可接受的程度,或进行到预先设定的学习次数为止。

学习过程BP算法最早由Werbos于1974年提出,1985年Rumelhart等人发展了该理论。BP网络采用有指导的学习方式,其学习包括以下4个过程。

(1)组成输入模式由输入层经过隐含层向输出层的“模式顺传播”过程。

(2)网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层休整连接权的“误差逆传播”过程。

(3)由“模式顺传播”与“误差逆传播”的反复进行的网络“记忆训练”过程。

(4)网络趋向收敛即网络的总体误差趋向极小值的“学习收敛”过程。

在训练阶段中,训练实例重复通过网络,同时修正各个权值,改变连接权值的目的是最小化训练集误差率。继续网络训练直到满足一个特定条件为止,终止条件可以使网络收敛到最小的误差总数,可以是一个特定的时间标准,也可以是最大重复次数。2

软件实现用C语言实现的BP算法步骤如下:

1)初始化,用小的随机数给各权值和阈值赋初值。注意不能使网络中各初始权值和阈值完全相等,否则网络不可能从这样的结构运行到一种非等权值结构。

2)读取网络参数和训练样本集。

3)归一化处理。

4)对训练集中每一样本进行计算。

①前向计算隐层、输出层各神经元的输出。

②计算期望输出与网络输出的误差。

③反向计算修正网络权值和阈值。

5)若满足精度要求或其他退出条件,则结束训练,否则转步骤4)继续。

6)结果分析与输出。3

不足虽然BP算法得到广泛的应用,但它也存在不足,其主要表现在训练过程不确定上,具体如下。

(1)训练时间较长。对于某些特殊的问题,运行时间可能需要几个小时甚至更长,这主要是因为学习率太小所致,可以采用自适应的学习率加以改进。

(2)完全不能训练。训练时由于权值调整过大使激活函数达到饱和,从而使网络权值的调节几乎停滞。为避免这种情况,一是选取较小的初始权值,二是采用较小的学习率。

(3)易陷入局部极小值。BP算法可以使网络权值收敛到一个最终解,但它并不能保证所求为误差超平面的全局最优解,也可能是一个局部极小值。这主要是因为BP算法所采用的是梯度下降法,训练是从某一起始点开始沿误差函数的斜面逐渐达到误差的最小值,故不同的起始点可能导致不同的极小值产生,即得到不同的最优解。如果训练结果未达到预定精度,常常采用多层网络和较多的神经元,以使训练结果的精度进一步提高,但与此同时也增加了网络的复杂性与训练时问。

(4)“喜新厌旧”。训练过程中,学习新样本时有遗忘旧样本的趋势。4