搜索
写经验 领红包
 > 游戏

什么是BP算法?BP算法的处理过程分为哪几个阶段?(什么是bp算法)

什么是BP算法?

BP算法(反向传播算法)由Rumelhart, Hinton和Williams于1986年提出[1],是神经网络的通用训练算法。BP算法的基础是基于梯度下降的误差函数优化,因为利用了神经网络的层次结构,显著提高了计算效率。BP算法的提出为构造复杂神经网络提供了可能,如果没有BP算法,深度学习很难发展成今天的样子。

图1:一个用于宠物分类的神经网络

什么是BP算法?BP算法的处理过程分为哪几个阶段?(什么是bp算法)

我们以图1所示的全连接神经网络来说明BP算法的工作原理,其中最左边是输入层,最右边是输出层,中间部分为隐含层。图中每一条边对应一个权重,基于这一权重,后一层节点计算前一层节点输出的加权和,经过一个激活函数后形成本层输出。如果权重选择得足够合理,则可以建立一个由输入到输出的映射,基于此实现某种人工智能任务。图1所示的是一个识别猫、狗、兔和鸟4种动物的宠物识别系统,输入是宠物的图像,每个输出节点代表一种宠物。当输入某一宠物的图片时,该宠物对应的输出节点将产生比其它节点更强的激发值,从而实现宠物识别。

1. 基于误差的迭代学习

神经网络需要选择合适的权重才能得到期望的输出,那么这个权重如何选择呢?随机尝试显然不太行得通,一种思路是依据当前网络的输出与期望目标之间的误差来对网络权重进行调整,使得网络输出逐渐接近我们的期望值。可以用淋浴系统调节过程来类比这一权重选择过程。

图2:基于“误差”的冷热水调节

什么是BP算法?BP算法的处理过程分为哪几个阶段?(什么是bp算法)

当我们想洗澡时,需要调节到一个合适的温度和合适的水量,这是我们的期望目标,而冷热水的阀门可以认为是权重。通过调节阀门的大小,可以让输出的水温和水量逐渐接近我们的目标。

可以通过如下过程实现调节:首先打开阀门,用手试探水的温度和水量,如果水温低,则调大热水或者调小冷水阀门;如果水量小,可以同时调大冷水和热水的阀门。每次操作时仅做小量调节,之后用手试探温度和水量是否合适。经过这样多次试探和调整后,就可以得到我们希望的水温和水量。

对神经网络的调节也可以采用类似的方法:首先查看当前网络输出和目标输出之间的差异(相当于试探水温和水量),基于这一差异对权重做微小调整(相当于调节阀门),使这一差异尽可能减小。重复这一过程,即可慢慢趋近目标输出。这一过程是基于误差的迭代学习。

2. 梯度下降法

那么,究竟要如何对权重进行调节呢?这涉及到一个梯度的概念。我们定义网络的输出和理想目标之间差异为E,这一差异是所有网络权重w的函数,其取值因w的变化而变化。数学上,定义E对w的变化率为梯度。可以证明,当w发生变化时,在梯度方向E的取值提高最明显。因为我们的目标是使E下降,那么最佳的调节方向就是E对w的负梯度方向,这类似于发现水温过高,要反向调节热水阀门。按负梯度方向调节权重,使得输出与目标误差更小,这一方法称为梯度下降法。写成权重更新公式如下:

什么是BP算法?BP算法的处理过程分为哪几个阶段?(什么是bp算法)

什么是BP算法?BP算法的处理过程分为哪几个阶段?(什么是bp算法)

3. BP算法

图3:BP算法从最后一层开始计算E对权重的偏导数

什么是BP算法?BP算法的处理过程分为哪几个阶段?(什么是bp算法)

梯度下降法为神经网络的权重学习提供了基础框架,但是求解误差函数E对每个权重wi的偏导数还是一个浩大的工程,特别是对多层神经网络,每一条边都有大量路径和输出相关联,这意味着计算E对某一权重wi的偏导数时需要考虑大量可能的关联路径。

BP算法利用神经网络的层次结构解决了这一问题。首先,最后一层权重wL和误差函数E直接相关,因此可先行计算其偏导数,这一计算不必考虑其它边和节点;最后一层的偏导数计算完成之后,倒数第二层权重wL-1的偏导数可基于最后一层的偏导数计算得到。由此一步步向输入层方向推进,每次计算时利用后一层权重的偏导数计算前一层权重的偏导数。这一过程可以看作是误差信息从后向前逐层传递的过程,这一传递过程和网络运行时的信息传递方向(由输入到输出)相反,因此称为反向传播算法,即BP算法。

我们以多层全连接网络介绍了BP算法。事实上,BP算法可应用于绝大多数网络结构(如卷积神经网络、递归神经网络等),是神经网络的通用训练算法。

温馨提示:通过以上关于什么是BP算法?内容介绍后,相信大家有新的了解,更希望可以对你有所帮助。