机器学习中的优化算法

在各类不同的机器学习模型中,有三个基础问题是共同的,他们是优化算法损失函数,和正则项。单纯的套用模型并不能提升自己对机器学习的认识,深入的理解这三个问题才能对机器学习有新的认知。

Mini-batch 梯度下降

Mini-batch梯度下降结合了batch梯度下降与随机梯度下降(SGD)的优点,每次计算梯度更新权重$w$时不用遍历每个样本,也不会像SGD那样计算出来的梯度过于随机。$N$为整体样本数量,$m$为一个batch的大小($m<N$). batch数量 $t=\frac{N}{m}$,则更新一次权重为:
$$w’=w-\alpha \frac{dJ(w)}{dw}$$

$$J=\frac {1} {m} \sum_{i=1}^mL(\hat y_i , yi)+\frac {\lambda} {2m}\sum{i=1}^m\Vert w \Vert^2 $$
$t$ 个batch 更新完为一次epoch, 即遍历完一次整体的样本。
在全局的梯度下降中,随着每一轮的迭代,cost函数$J$会不断减小,但是在Mini-batch梯度下降中$J$是会有一定程度的波动。一般当样本数量比较小的时候($N\le2000$),会使用全局的梯度下降,当样本数量比较大时,一个batch的大小可以设定在1000以上。

Momentum梯度下降算法

在梯度下降求最优解过程中,可以参考前几次的梯度方向,即根据前几次的梯度平均值来更新当前轮的权重值$w$. Momentum梯度下降的原理就是先计算出梯度的指数加权移动平均(Exponentially Weighted Moving-Average), 然后沿着这个EWMA的方向进行参数的更新。

为了以下公式能够简洁,首先定义$dw=\frac{dJ(w)}{dw}$.

有了Momentum之后,参数$w$的更新可以表示为:

$$w’=w-\alpha v_{dw}$$

$$v{dw}=\beta v{dw} + (1-\beta )dw$$

初始的$v_{dw}=0$.

通常$\beta=0.9$, 由EWMA的性质,移动平均的窗口大小为$\frac{1}{1-\beta}$, 即Momentum梯度下降方法,会参考近10次的梯度方向进行计算。

RMSprop算法

在沿着梯度下降的过程中,$w$在某些维度上梯度变化特别快,而在某些维度上梯度变化特别慢。这种情况下需要动态调整学习率$\alpha$, 在梯度变化比较大的维度上减小学习率,在梯度变化比较小的维度上增大学习率。从而提高学习的效率。在实现上为了防止除0的情况发生,分母中会加一个很小的数$\epsilon=10^{-8}$。

$$w’=w-\frac{\alpha}{\sqrt {s_{dw}} + \epsilon }{dw}$$

$$s{dw}=\beta s{dw}+(1-\beta) dw^2$$

初始的$s_{dw}=0$.

Adam算法

在结合了Momentum梯度下降RMSprop的优点,业界目前流行的一种求解最优化的算法叫做Adam(Adaptive moment estimation).

$$v_{dw}=\beta1 v{dw} + (1-\beta_1 )dw$$

$$s_{dw}=\beta2 s{dw}+(1-\beta_2) dw^2$$

$$v{dw}^{corrected}=\frac{v{dw}}{1-\beta_1^t}$$

$$s{dw}^{corrected}=\frac{s{dw}}{1-\beta_2^t}$$

$$w’=w-\alpha \frac{v{dw}^{corrected}}{\sqrt {s{dw}^{corrected}}+\epsilon}$$

其中$v{dw}^{corrected}$,$s{dw}^{corrected}$是对$v{dw}$,$s{dw}$的校正(因为初始的$v{dw}$和$s{dw}$都为0,当迭代轮数少的时候,移动平均的偏差会比较大,所以需要进行校正)。


Reference
[1]. deeplearning.ai