人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章。人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类。今天我们重点探讨一下BP算法。
之前介绍的多层网络的训练需要一种强大的学习算法,其中成功的代表就是BP反向传播算法。
1974年Werboss第一次提出了一个训练多层神经网络的BP反向传播算法,由于该算法是在一般网络中描述的,它只是将神经网络作为一个特例。因此,在神经网络研究领域内没有得到广泛传播。直到20世纪80年代中期,BP反向传播算法才被重新发现并广泛宣扬。特别是Rumelhart和McClelland等提出了训练多层神经网络的BP学习算法,为解决多层神经网络的学习提供了保证。
BP网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一,也是ANN人工神经网络的基础。BP反向传播算法在多层神经网络训练中扮演着举足轻重的作用,也是迄今最成功的ANN人工神经网络学习算法。非常有必要值得研究,今天就跟大家介绍一下BP算法。
BP算法概念:
BP算法(error Back Propagation)是由学习过程由信号的正向传播与误差的反向传播两个过程组成。由于多层前馈网络的训练经常采用误差反向传播算法,人们也常把将多层前馈网络直接称为BP网络。
BP网络能学习和存贮大量的输入/输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。
BP算法激活函数
激活函数的作用是将非线性引入神经元的输出。因为大多数现实世界的数据都是非线性的,希望神经元能够学习非线性的函数表示,所以这种应用至关重要。
通常选可导的奇函数作为激活函数,譬如非线性sigmoid函数,有两种形式:1)逻辑函数;2)双曲正切函数。
1)逻辑函数图如下:
2)双曲正切函数图如下:
BP算法原理:
BP算法由信号的正向传播和误差的反向传播两个过程组成。
1)正向传播:输入样本从输入层进入网络,经隐层逐层传递至输出层,如果输出层的实际输出与期望输出不同,则转至误差反向传播;如果输出层的实际输出与期望输出相同,结束学习算法。
2)反向传播:将输出误差(期望输出与实际输出之差)按原通路反传计算,通过隐层反向,直至输入层,在反传过程中将误差分摊给各层的各个单元,获得各层各单元的误差信号,并将其作为修正各单元权值的根据。这一计算过程使用梯度下降法完成,在不停地调整各层神经元的权值和阈值后,使误差信号减小到最低限度。
权值和阈值不断调整的过程,就是BP网络的学习与训练过程,经过信号正向传播与误差反向传播,权值和阈值的调整反复进行,一直进行到预先设定的学习训练次数,或输出误差减小到允许的程度。
BP算法思想:
BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和阈值进行反复调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时,训练完成,保存网络的权值和阈值。
BP算法推导:
BP训练过程:
BP网络采用有指导的学习方式,其训练过程大致如下:
1)组成输入模式由输入层经过隐含层向输出层的“模式顺传播”过程。
2)网络的期望输出与实际输出之差的误差信号由输出层经过隐含层逐层调整权值和阈值的“误差逆传播”过程。
3)由“模式顺传播”与“误差逆传播”反复进行的网络记忆训练过程。
4)网络趋向收敛即网络的总体误差趋向极小值的学习收敛过程。
在训练阶段中,训练实例重复通过网络,同时修正各个权值和阈值,改变的目的是最小化训练集误差率。继续网络训练直到满足一个特定条件为止,终止条件可以使网络收敛到最小的误差总数,可以是一个特定的时间标准,也可以是最大重复次数。
BP算法步骤:
BP算法步骤大致如下:
1)初始化,用小的随机数给各权值和阈值赋初值。
2)读取网络参数和训练样本集。
3)归一化处理。
4)对训练集中每一样本进行计算:a) 前向计算:计算隐层、输出层各神经元的输出;b) 误差计算:计算期望输出与网络输出的误差;c) 反向计算:计算修正网络权值和阈值。
5)若满足精度要求或其他退出条件,则结束训练,否则转步骤4)继续。
6)结果分析与输出。
BP算法优点:
1)具有实现任何复杂非线性映射的功能;
2)适合于求解内部机制复杂的问题;
3)寻优具有精确性;
4)具有自适应和自学习能力;
5)泛化和容错能力强;
6)具有一定的推广、概括能力。
BP算法缺点:
1)收敛速度缓慢;
2)容易陷入局部极小值,且对于较大的搜索空间,多峰值和不可微函数不能搜索到全局最优;
3)训练结果可能未达到预定精度;
4)可能会出现“过拟合”现象;
5)隐含层的层数和单元数的选择尚无理论上的指导,一般根据经验值或反复实验确定;
6)训练过程中,学习新样本时有遗忘旧样本的趋势。
针对BP算法的缺陷,目前已有许多学者对其进行改进。如采用增量可调法,即在误差曲面曲率较高处,选取较小值,在误差曲面较平坦处,选取较大值。采用此增量可调法可明显提高其收敛速度。然而针对其易陷入局部极小的缺陷,目前尚无较好的解决方法。为了摆脱BP算法易于陷入局部极值,学者们已经尝试了遗传算法、模拟退火算法、蚁群算法等与BP算法相结合进行研究。
BP算法应用:
BP反向传播算法可以逼近任意连续函数,具有很强的非线性映射能力,而且网络的中间层数、各层的处理单元数及网络的学习系数等参数可根据具体情况设定,灵活性很大,所以它在许多应用领域中起到重要作用。它在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。
结语:
BP反向传播算法在多层神经网络训练中扮演着举足轻重的作用,也是迄今最成功的人工神经网络学习算法,值得深入研究。BP算法是由学习过程由信号的正向传播与误差的反向传播两个过程组成。BP算法应用范围广泛,灵活性大,扩展性强。它在信息处理、模式识别、智能控制及系统建模等领域得到越来越广泛的应用。