上篇文章,我们一起了解了几种深度学习的优化算法,SGD不是一无是处,Adam也不是十全十美,这篇文章,我们一起看下怎么去选择一个合适的优化算法,为炼丹(训练模型)保驾护航。
Adam + SGD
从上篇文章中,我们可以得出不同优化算法的核心差异是下降的方向不同,这会导致不同的算法到达不同的局部最优点(一般很难到达全局最优点)。主流的观点认为,Adam 等自适应学习率算法对稀疏数据有优势,收敛速度快,但SGD往往能取得更好的最终结果。
所以将Adam和SGD结合起来,前期用Adam快速下降,后期再用SGD精雕细琢。但这种方法面临着两个难题:
- 什么时候切换算法
- 切换算法后学习率大小该为多少
在 Improving Generalization Performance by Switching from Adam to SGD 中,作者给出了解决思路。
一些 Tricks
- 选择自己熟悉的算法。这样可以方便根据自己的经验进行调优。
- 根据数据分布选择。如果是稀疏的数据,使用自适应学习率类的算法更合适。
- 使用小数据验证。可以使用一部分数据快速迭代训练,比较不同的优化算法性能。
- 考虑不同算法组合。
- 使用自适应学习率算法时,制定合适的学习率衰减策略。
- 根据自己的需求选择。要快速验证模型效果时,选择Adam进行快速训练,要发布模型时,使用精调的SGD进行模型的精致优化。
上海seo优化
值得收藏的知识点呢。。