定义

误差逆传播算法(backpropagation BP算法)是迄今最成功的的神经网络算法。显示任务中使用神经网络时,大多是在使用BP算法进行训练。不仅适用于多层前馈神经网络,还可以用于其他类型的神经网络,训练递归。

BP算法

如下图的神经网络,有一隐式层,L个神经元组成的1个输出层。
入门-误差逆传播算法

重点介绍标准的BP算法,也就是只考虑单个输入神经元节点的误差逆传播,研究的输入例为(xk,yk),假定神经元的输出为l个神经元,即:
yk=(yk1,yk2,...,ykl)

里面的公式详见周志华的西瓜书,往上面写比较费劲,主要总结下自己的理解吧,目标是求解连接系数和阈值,这个算法的名称是逆传播,为什么是逆呢?

BP算法基于梯度下降策略,以目标的负梯度方向对以上参数进行调整,下面列出对这句话的提炼公式,等号左侧是权值的调整值,右侧为到底取值多少,它是对输出误差对权值的偏导与学习率的相反数。


入门-误差逆传播算法

学习率控制着算法每一轮迭代中的更新步长,若太大则容易振动,太小则收敛速度又会太慢。

算法总结

先将输入实例提供给输入层神经元,然后逐层将信号前传,直到产生输出层的结果;

然后计算输出层的误差,再将误差逆向传播至隐层神经元;

最后根据隐层神经元的误差来对连接权和阈值进行调整,该迭代过程循环进行,直到达到某些停止条件位置(如训练误差已达到一个很小的值)。

累计误差逆传播算法

上面介绍的是标准的逆传播算法,如果推导出基于累积误差最小化的更新规则,就得到了累积误差逆传播算法。

与标准的BP算法每次更新只针对单个样例,参数更新的非常频繁,往往需进行更多次迭代。但是累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍后才对参数进行更新,其参数更新频率低,但是在很多任务中,累积误差下降到一定程度后,进一步下降变得很缓慢。这是标准BP会更好,尤其D非常大时。

全局最小和局部极小

入门-误差逆传播算法

这是需要应对的一个挑战。目前主要有三种方式解决这个问题,
1)对参数分组初始化多个神经网络;
2)使用模拟退火技术;
3)使用随机梯度下降。

其他常见神经网络

  • RBF网络

  • ART网络

  • SOM网络

  • 级联相关网络

  • Elman网络

  • Boltzmann机

参考周志华的机器学习西瓜书

关于BP算法较好的几篇博客推荐:

http://blog.csdn.net/zouxy09/article/details/45288129

http://blog.csdn.net/wanglp094/article/details/7702907

http://www.cnblogs.com/wentingtu/archive/2012/06/05/2536425.html

http://blog.csdn.net/appleml/article/details/48623303

相关文章: