相关答案和源代码托管在我的Github上:PY131/Machine-Learning_ZhouZhihua.
5.6 BP算法改进
注:本题程序基于Python实现(这里查看完整代码和数据集)。
1. 方法设计
传统的BP算法改进主要有两类:
- 启发式算法:如附加动量法,自适应算法。
- 数值优化算法:如共轭梯度法、牛顿迭代法、Levenberg-Marquardt法。
这里我们首先采用附加动量实现基本的方法改进。然后分析算法的不足,设计面向学习率的自适应机制来改进,实现基于动态自适应学习速率的BP算法改进。
(1) 附加动量项
这是一种广泛用于加速梯度下降法收敛的优化方法,其核心思想是:在梯度下降搜索时,若当前梯度下降与之前梯度下降方向相同,则加速搜索,反之则减速搜索。
参考书p103(式5.11),标准BP算法的参数更新项为:
∆ω(t) = ηg(t)
式中,∆ω(t)为第t次迭代的参数调整量,η为学习率,g(t)为第t次迭代所计算出的梯度。
在添加动量项之后,基于梯度下降的参数更新项为:
∆ω(t) = η[(1-μ)g(t)+μg(t-1)]
始终,μ为