m_{t+1}记录了关于梯度的历史

 

SGD 

SGD with Momentum

防止gradient为0,SGD停止不动了

sgd with momentum,前面的移动会累加到下一步

sgd with momentum,前面的移动会累加到下一步,所以小球不会卡在局部的一个最优的位置

Adagrad

前几个time step如果坡度很大,就会暴走,走到不好的位置上,有个分母就会走小步一点

RMSProp

怕使用adagrad时,一开始的坡度很大,那么步幅就会很小,走没几步就停了

 RMSProp保证分母不会无止境变大

Adam

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

adam:一开始冲的很快

sgdm:冲的不会太快,稳一些,不会有太大的上下起伏的情况 

冲的快会形成sharp mininum,generalization gap 大

冲的不快 flat mininum,generalization gap 小

combine一下,一开始用adam后面用sgdm

如何让adam像sgdm一样收敛得又快又好

 m_{t}帽等式10的5次方,v_{t}等于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的效果会比较好 

Logo

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

更多推荐