反向传播算法详解

简介

BP算法,称“误差逆传播算法”,亦称“反向传播算法”,是迄今为止用得最多的多层神经网络学习算法。用BP算法训练的多层前馈神经网络称为“BP网络”。

算法流程

BP算法采取基于梯度下降的策略,以目标的负梯度方向对参数进行调整,其目标是最小化训练误差。对每个训练样例,算法执行以下操作:

  1. 先将输入示例提供给输入层神经元,然后逐层将信号前递,直至输出层产生结果;
  2. 然后计算输出层的误差,再将误差反向传播至隐层神经元;
  3. 最后根据隐层神经元的误差对连接权和阈值进行调整。

该迭代过程循环进行,直到达到某个停止条件为止,例如训练误差已达到一个很小的值。西瓜书中伪代码如下(P104):

累积BP算法

我们上面介绍的是“标准BP算法”,每次仅针对于一个训练样例更新连接权和阈值,也就是算法的更新规则是基于单个的E _k推导而得,如果类似地推导出基于累积误差最小化的更新原则,就得到了累积BP算法。累积BP算法在读取整个训练集一遍后才对参数进行更新,相对于标准BP算法,其参数更新的频率低得多。但在很多任务中,累积误差下降到一定程度后,进一步下降会非常缓慢,这是更适合用标准BP算法。

处理过拟合

由于BP算法强大的表示能力,BP网络经常会遇到过拟合的现象,可用两种策略缓解:

  • 一种是“早停”,讲数据分成训练集和验证集,若训练集误差降低但验证集误差升高,则停止训练;
  • 一种是“正则化”,基本思想是在误差目标函数中增加一个描述网络复杂度的正则化项。

局部最优

由于BP算法采用的是基于梯度下降的方法,因此可能会陷入到局部最优中,在现实任务中,常常用以下策略来试图“跳出”局部最优,从而接近全局最优解:

  • 以多组不同初始化值训练,取其中误差最小的解作为最终解;
  • 使用“模拟退火”技术,即在每一步都以一定概率接受比当前解更差的情况;
  • 使用随机梯度下降,与标准梯度下降不同,随机梯度下降在计算梯度时加入了随机因素。

本节内容见书周志华《机器学习》P101-P107

猜你喜欢

转载自blog.csdn.net/fuqiuai/article/details/79989934
今日推荐