概述:前言为需要优化的原因,正文为梯度下降/随机梯度下降/小批量随机梯度下降/动量法/AdaGrad和RMSProp算法/AdaDelta算法/Adam算法。
前言:需要优化的原因(局部最小值和鞍点):
x=x- η ▽f(x) :学习率η过大(overshooting):收敛不了越来越偏离最优值;学习率过小(undershooting)收敛速度过慢,费资源。
一、梯度下降、随机梯度下降、小批量随机梯度下降
- 梯度下降:沿梯度下降最快的方向,梯度为训练集所有样本点梯度之和求平均
- 随机梯度下降:每次随机挑一个样本点求梯度
- 小批量随机梯度下降:每次随机挑一个batch的样本点求梯度
二、动量法
- 梯度下降存在问题:图一在x2竖直方向移动较大;如果调小lr,可能x1水平方向移动过慢;如果调大lr,可能出现图二的情况,在x2竖直方向移动过大错过了最优值。
- 可以看到下面两图,图一x2竖直方向变化没上面那么快了,图二增大lr也不会像上面图二那样发散了。
- 动量法使用了指数加权移动平均的思想,将过去时间步的梯度做了加权平均,且权重按时间步指数衰减。动量法使得相邻时间步的自变量更新在方向上更加一致。
三、AdaGrad(不同维度学习率不同)、RMSProp和AdaDelta算法(AdaGrad的两种改进)
- AdaGrad根据⾃变量在每个维度的 梯度值的⼤小 来调整各个维度上的学习率
- 缺点:lr一直在降低(或不变)如果开始lr降的太快然而跟最优解离得比较远,可能难以收敛到最优解。 于是RMSProp算法就出现了~
- RMSProp算法(Root Mean Sqaure prop):
- AdaDelta算法(不用学习率):
四、Adam算法(结合了动量法和RMSProp算法)
- Adam算法在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均。(对动量做了EMA,对RMSProp做了EMA,对v和s做了偏差修正,解决了冷启动(初始化为0)问题。)
- 最后,用gt’ 迭代更新自变量x
【参考资料】