机器学习——神经网络累积BP算法

在上篇的博客介绍的“标准BP算法”每次仅针对一个训练样例更新连接权和阈值,也就是说,BP算法中的更新规则是基于单个的这里写图片描述 推导而得,如果类似的推导出基于累积误差最小化的更新规则,就得到了累积误差逆传播算法。累积BP算法与标准BP算法都很常用(标准BP算法和累积BP算法的区别类似于随机梯度下降(Stochastic gradient descent,简称 SGD)于标准梯度下降之间的区别)。一般来说,标准BP算法每次更新只针对单个样例,参数更新得非常频繁,而且对不同样例进行更新的效果可能出现“抵消”现象。因此,为了达到同样的累积误差极小点,标准BP算法往往需要更多次数的迭代。累积BP算法直接针对累积误差最小化,它在读取整个训练集D一遍之后才对参数进行更新,其参数更新的频率低的多。但在很多任务中,累积误差下降到一程度之后,进一步下降会非常缓慢,这时标准BP往往会更快获得较好的理解,尤其是训练集D非常大时更明显。

正是由于其强大的表示能力,BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。
通常有两种策略来缓解BP网络的过拟合。第一种策略是“早停”(early stopping):将数据分成训练集合验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。第二种策略是“正则化”(regularization),其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权和阈值的平方和。仍令这里写图片描述 表示第k个训练样例上的误差,这里写图片描述 表示连接权和阈值,则误差目标函数(5.16)改变为
这里写图片描述
其中,这里写图片描述 用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。

参考:
《机器学习》 周志华 著

猜你喜欢

转载自blog.csdn.net/u011641865/article/details/80066265