本文主要是介绍adagrad ,RMSProp Momentum,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
adagrad:
对于每一个 wti w i t ,都由前t-1对 wi w i 的梯度和的平方加上本次对 wi w i 梯度的平方再开根号。用这个值去除η。
缺点,随着update的次数增多,learning rate会变得特别小,最终导致提前结束训练。
δ是个小常数,通常设为10^-7。这个是防止右值太小的话稳定学习率。
RMSProp:
对于α我们自己定义,0到1之间,越小也就越代表我们越相信当前derivative对loss的影响。这样解决了adagrad的learning rate下降过快的问题。
Momentum:
思想是如图:
就像自然界中小球从高处滚动,虽然已经滑到了最低点,但是由于自身惯性还是会往前走点一点。
计算方式如图,λ是我们自己设置的参数,就是之前的移动方向对这次update的影响的大小,相当于权重:
解释:其实 vi v i 就是之前 vt−1...v0 v t − 1 . . . v 0 的所有加权和。
这样做的好处是由于惯性我们有一定的可能跳出local minima,如图:
Adam
相当于RMSProp+Momentum
可以看这篇这里写链接内容,讲的不错。
还有这以篇博客。
这篇关于adagrad ,RMSProp Momentum的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!