赞
踩
深度学习中的优化算法:
一、梯度下降
SGD:mt=gt,vt = I^2
SGD with Momentum: mt = βm(t-1)+(1-β)gt (也就是说,t 时刻的下降方向,不仅由当前点的梯度方向决定,而且由此前累积的下降方向决定。)
SGD with NAG: (知道在时刻t的主要下降方向是由累积动量决定的,自己的梯度方向说了也不算,那与其看当前梯度方向,不如先看看如果跟着累积动量走了一步,那个时候再怎么走。)
二、自适应学习率的优化算法
AdaGrad:mt=gt ,vt = sqrt(gt^2)(二阶动量——该维度上,迄今为止所有梯度值的平方和:)
AdeDelta: mt=g1+g2+…+gt(由于AdaGrad单调递减的学习率变化过于激进,我们考虑一个改变二阶动量计算方法的策略:不累积全部历史梯度,而只关注过去一段时间窗口的下降梯度。)
RMSprop:mt=gt
Adam:
Nadam:
注意问题:
1.Adam:可能不收敛
2.Adam:可能错过全局最优解
深度神经网络往往包含大量的参数,在这样一个维度极高的空间内,非凸的目标函数往往起起伏伏,拥有无数个高地和洼地。有的是高峰,通过引入动量可能很容易越过;但有些是高原,可能探索很多次都出不来,于是停止了训练。
3.到底用Adam还是SGD
根据data来,data是算法和优化的根本
4.Adam+SGD组合策略
主流的观点认为:Adam等自适应学习率算法对于稀疏数据具有优势,且收敛速度很快;但精调参数的SGD(+Momentum)往往能够取得更好的最终结果。
5.tricks
1.用熟悉的算法
2。数据很稀疏用自适应性学习
3.根据需求:在模型设计实验过程中,要快速验证新模型的效果,可以先用Adam进行快速实验优化;在模型上线或者结果发布前,可以用精调的SGD进行模型的极致优化。
4.数据集一定要充分的打散(shuffle)
5.持续监控训练数据和验证数据上的目标函数值以及精度或者AUC等指标的变化情况。ADMM和SGD的切换
6.制定一个合适的学习率衰减策略。可以使用定期衰减策略,比如每过多少个epoch就衰减一次;或者利用精度或者AUC等性能指标来监控,当测试集上的指标不变或者下跌时,就降低学习率。
http://i.dataguru.cn/mportal.php?aid=13549&mod=view
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。