2019-03-17神经网络——optimizer

神经网络优化算法,通常有三种:小批量梯度下降法,随机梯度下降法和批量梯度下降法。

 小批量梯度下降法

适用于训练数据规模大,数据冗余,

对于小批量梯度下降,批量越大,梯度下降越快、曲线越平缓

衍生出的optimizer都是通过改变学习率衰减和梯度方向变化来优化。

对于学习率衰减,一种是通过固定规则的学习率衰减,比如随时间衰减的逆时衰减,指数衰减,自然指数衰减等。其他AdaGrad, RMSprop,AdaDelta等是通过不同的参数设置不同学习率,自适应调整学习率。

1. AdaGrad

累加参数梯度的平方,

然后按照新的更新值计算学习率:

这样某个参数累积梯度较小的时候,学习率就较大,反之学习率较小;但是总之学习率是下降的。

该方法的问题在于,迭代到一定次数后Gt总归是很大的,这时候如果没有学习好的话,学习率也会很低,后面就很难学习了。

2. RMSprop

该方法对AdaGrad优化,Gt从累加变成了移动平均:

其中beta通常取0.9;这样学习率不一定变小了,梯度平方很小的时候也会变大。


梯度方向优化:

小批量梯度下降法在批量很小的时候会出现震荡的方式下降,梯度的移动平均可以有效解决这个问题,就是动量法

在第t次迭代时,使用负梯度的加权移动平均作为参数的更新方向

这样在一段时间内,梯度变化方向不一致的时候参数变化小,一致则变化大,减小震荡

一般而言,在迭代初期,梯度方法都比较一致,动量法会起到加速作用,可以更快地到达最优点。在迭代后期,梯度方法会取决不一致,在收敛值附近震荡,动量法会起到减速作用,增加稳定性。从某种角度来说,当前梯度叠加上部分的上次梯度,一定程度上可以近似看作二阶梯度。

Adam Adaptive Moment Estimation 自适应动量估计

Adam是动量法和RMSprop的结合,梯度方向上使用移动平均的动量法,学习率上使用移动平均的RMSprop。

β1 = 0.9, β2 = 0.99。

开始t很小的时候,M和G都小于真正的均值和方差,所以要进行纠正

算法更新值为:

你可能感兴趣的:(2019-03-17神经网络——optimizer)