吴恩达:深度学习的实用层面优化

mini-batch

传统的梯度下降每次使用所有样本进行一次迭代,这在样本量较小时是可行的,当样本量较大时,每次更新需要时间过长。

  • 随机梯度下降:每次使用一个样本进行更新
  • mini-batch梯度下降:每次使用n个样本进行更新,n为总体的一个子集

小tip:

  • mini-batch中每次使用n个样本,n为2的指数级时比较高效
  • mini-batch方法会使得梯度下降较为不平滑,但提高了效率,降低了陷入局部极小值的概率
  • 随机梯度下降有一个坏处——放弃了并行化
  • mini-batch算法输入矩阵维度为 [每次样本数,样本维度]
  • mini太小,不容易收敛,每遍历数据集时间增长。mini太大,内存显存装不下,总用时长

指数加权平均和Momentun算法

首先介绍指数加权平均,例如我们有n个值$\theta_1,\theta_2……\theta_t$,这些值为时序序列,那么我们令:
$$
v_t = \beta v_{t-1}+(1-\beta)\theta_t
$$
其中系数$\beta$可以取0.9/0.8/0.99等值。

将这个式子展开,可以得到:
$$
v_t = (1-\beta)(\beta^t \theta_{1}+\beta^{t-1} \theta_{2}+……+\beta \theta_{t-1}+\theta_{t})
$$
可以看出,指数加权平均是按照时序给不同值赋权值,越近的权值越大,整体权值呈现指数级下降。

一般在运用时,令$v_0=0$,这样会使得前几个v偏小,可以令v除以$1-\beta^t$来修正这个偏差。

运用指数加权平均可以使得mini-batch梯度下降比较平滑,减小噪声。

在实际梯度下降运用中,Momentun算法流程如下:

RMSprop优化算法

Adam优化算法

该算法就是Momentum+RMSProp的结合,然后再修正其偏差

学习率衰减

在神经网络训练初期,可以承受较大的学习率。在接近最优点附近,学习率必须较小,否则会不断扰动,无法收敛。

因此,可以舍弃固定学习率,使得学习率随着训练轮数而减小。减小程度有公式决定,常见的有:
$$
\alpha=\beta^t*\alpha_0\\
\alpha=\frac {k} {\sqrt{轮数}} \alpha_0\\
$$
一般而言,使用了mini_batch算法的时候,同一个集合批次的batch要使用相同的学习率,所以学习率是在按照轮数进行减少的。每轮称为epoch

鞍点和局部极值点

事实上,在高维空间中,很少能够出现左图所示的局部极值点,因为维度过高,不可能所有维度都处于谷底,例如一万维空间,出现局部最优点的概率即为:

$$\frac 1 {2^{10000}}$$

更常见的是鞍点,这才是机器学习算法需要花费很长时间走出的点。前面几种优化方法都在试图更快走出鞍点。

查看更多

所有的文章都会在我的博客和我的知乎专栏同步进行更新,欢迎阅读


本文结束啦感谢您的阅读
生活不易,求打赏
0%