目录
3.Nesterov动量法(Nesterov accelerated gradient (NAG))
7. Adam(Adaptive Moment Estimation)
优化器的作用就是使用一种策略利用梯度下降法,不断的调整参数,来使loss越来越小,最终令预测尽可能接近真实值。
1. 随机梯度下降法 SGD
小批量
从训练集中随机抽取小批量的样本,计算他们的平均loss,来实行一次参数更新。使用小批量样本的平均loss代替全体样本的平均loss进行参数更新可以加快参数更新频率,加速收敛。小批量样本的平均loss是全体样本平均loss的无偏估计。
如果小批量样本中只有一个样本,那么称为随机梯度下降法,由于矩阵的向量化操作(数据量是2的指数运算效率更高)使得一次计算128个样本的loss比128次计算一个样本要高效的多,所以我们经常使用SGD来指代小批量梯度下降。
为什么小批量样本的平均loss是全体样本平均loss的无偏估计?
因为训练集中的同类样本是相关的,同类样本中不同个体的loss是相似的,所以随机抽取的一个样本loss可以作为该类所有样本平均loss的无偏估计
2. 基本动量法
梯度下降法的直观理解?
如果把梯度下降法想象成一个小球从山坡到山谷的过程,那么前面几篇文章的小球是这样移动的:从A点开始,计算当前A点的坡度,沿着坡度最大的方向走一段路,停下到B。在B点再看一看周围坡度最大的地方,沿着这个坡度方向走一段路,再停下。确切的来说,这并不像一个球,更像是一个正在下山的盲人,每走一步都要停下来,用拐杖来来探探四周的路,再走一步停下来,周而复始,直到走到山谷
为什么加入动量可以改善优化路线的曲折程度?
一个真正的小球要比上述过程聪明多了,从A点滚动到B点的时候,小球带有一定的初速度,在当前初速度下继续加速下降,小球会越滚越快,更快的奔向谷底。momentum 动量法就是模拟这一过程来加速神经网络的优化的。
为什么动量法可以加快网络的收敛?
动量法累积了历史梯度信息,使小球具有惯性:
(1)当累积的历史梯度与当前梯度方向一致时,加速收敛
(2)不一致时,减少优化时路径的曲折程度
基本动量法中梯度方向的确定是:历史梯度的累积和当前点的梯度方向的组合。
公式
代码:
mu = 0.9
v = mu * v
v = v - lr * dx
x = x + v
假设每个时刻的梯度dx总是0(相当于小球滚动到平地),则可得:,可见v是指数衰减,小球只要初速度足够大,就有机会冲出当前平地到达一个更低的山谷。
3.Nesterov动量法(Nesterov accelerated gradient (NAG))
转自:https://blog.youkuaiyun.com/tsyccnh/article/details/76673073
思想
计算梯度时,不是在当前位置,而是未来的位置上
Nesterov想到,在基本动量法中每一步都要将两个梯度方向(历史梯度、当前梯度)做一个合并再下降,那么为什么不按照历史梯度先往前走一步获得“超前点”的梯度,然后将这个超前梯度和历史梯度进行合并?小球具有了超前意识,就变的更加聪明。
具体的方法就是:小球先按照历史梯度走一步(先暂时更新一下参数,以便得到新参数值点的梯度),然后根据超前点的梯度来修正当前点的梯度。
直观理解如下:
Nesterov动量法中梯度方向的确定是:历史梯度的累积和超前点的梯度方向的组合
小球在B点先根据历史梯度向前走一步到C点,计算C点的梯度(),然后利用C点的梯度修正当前点B的梯度(