李宏毅深度学习——优化方法
记录了关于梯度的历史SGDSGD with Momentum防止gradient为0,SGD停止不动了sgd with momentum,前面的移动会累加到下一步sgd with momentum,前面的移动会累加到下一步,所以小球不会卡在局部的一个最优的位置Adagrad前几个time step如果坡度很大,就会暴走,走到不好的位置上,有个分母就会走小步一点RMSProp怕使用adagrad时,



记录了关于梯度的历史


SGD

SGD with Momentum

防止gradient为0,SGD停止不动了
sgd with momentum,前面的移动会累加到下一步


sgd with momentum,前面的移动会累加到下一步,所以小球不会卡在局部的一个最优的位置
Adagrad
前几个time step如果坡度很大,就会暴走,走到不好的位置上,有个分母就会走小步一点
RMSProp
怕使用adagrad时,一开始的坡度很大,那么步幅就会很小,走没几步就停了
RMSProp保证分母不会无止境变大
Adam

一开始,帽等式右边分母小于1,保证
帽一开始不为0,且不会随时间变化变得太大









adam:一开始冲的很快
sgdm:冲的不会太快,稳一些,不会有太大的上下起伏的情况
冲的快会形成sharp mininum,generalization gap 大
冲的不快 flat mininum,generalization gap 小
combine一下,一开始用adam后面用sgdm

如何让adam像sgdm一样收敛得又快又好
帽等式10的5次方,
等于10^5*10^5*0.001=10^7

前面100998步都是乱走,并且走了很长,100999步才是对的,然而走了很短。

记住以前最大的grad,但是这和adagrad有一样的错误,分母容易变成0

让learning_rate自己调整

sgdm最后很稳,但是速度太慢了
可以通过调整learning_rate加快速度

learning_rate大小大小变化,周期性变化



一开始gradient很乱


方向比较乱的时候走小步一点,方向不乱的时候走大步一点
一开始用sgdm后面用adam
RAdam一开始不用Adam,因为Adam不稳,并且
<4的时候是不能用RAdam
SWATS一开始用Adam,因为Adam一开始快,后面用sgdm稳






实践中用的最多,用weight decay的效果会比较好






DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)