深度学习(一)-深度学习-深度模型中测优化

1. 概述

2. 自适应学习率算法

  • 学习率是比较难设置的超参数之一
  • 自适应学习率是解决该问题的一种手段
  • 算法包括
    • AdaGrad

2.1 AdaGrad算法

  • 主要思想:独立地适应所有模型参数的学习率,缩放每个参数反比于其所有梯度历史平方值总和的平方根
  • 具有损失最大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降净效果是在参数空间中更为平缓的倾斜方向会取得更大的进步
  • 局限性
    • 从训练开始时积累梯度平方会导致有效学习率过早和过量的减小
    • 只适用于凸问题
  • 算法实现
    • 输入:学习率$\epsilon$,小常数$\delta = 1e-7$,初始参数$\theta$
    • 输出:迭代参数$\theta$
    • 算法
      • 初始化梯度累计变量$r = 0$
      • while 没有达到停止条件 do
        • 从训练数据集中采样小批量数据
        • 计算题都$g \leftarrow \frac{1}{m}\triangledown_{\theta}\sum_i L(x^{(i), \theta}, y^{(i)})$
        • 累计平方梯度$r \leftarrow r + g \cdot g$
        • 更新$\Delta \theta \leftarrow \frac{\epsilon}{\delta + \sqrt{r}} \cdot g$
        • 更新$\theta \leftarrow \theta + \Delta \theta$
      • End while

2.2 RMSProp算法

  • 针对于AdaGrad算法的局限性,RMSProp算法采用了指数加权的移动平均来计算累计梯度
  • 主要思想:通过采用指数加权的移动平均以丢弃遥远过去的历史,使其能够在找到凸碗状结构后快速收敛
  • 引入了另一个超参数$\rho$,表示移动平均的长度范围
  • 算法实现
    • 输入:全局学习率$epsilon$,衰减速率$\rho$,初始参数$\theta$,小常数$\delta = 1e-7$
    • 输出:更新的学习率$theta$
    • 算法
      • 初始化梯度累计变量$r = 0$
      • while 没有达到停止条件 do
        • 从训练数据集中采样小批量数据
        • 计算题都$g \leftarrow \frac{1}{m}\triangledown_{\theta}\sum_i L(x^{(i), \theta}, y^{(i)})$
        • 累积平方梯度$r \leftarrow \rho r + (1 - \rho) g \cdot g$
        • 更新$\Delta \theta \leftarrow \frac{\epsilon}{\sqrt{\delta + r}} \cdot g$
        • 更新$\theta \leftarrow \theta + \Delta \theta$
      • End while

2.3 Adam算法

  • RMSProp算法与具有一些重要区别的动量的变种
  • 引入偏置修正
  • 算法实现
    • 输入:步长$\epsilon = 0.001$,矩估计指数衰减因子$\rho_1 = 0.9$和$\rho_2 = 0.999$,小常数$\delta = 1e-8$,初始参数$\theta$
    • 输出:更新$\theta$
    • 算法
      • 初始化一阶和二阶矩变量$s = 0$, $r = 0$
      • 初始化时间步$t = 0$
      • while 没有达到停止条件 do
        • 从训练数据集中采样小批量数据
        • 计算梯度$g \leftarrow \frac{1}{m}\triangledown_{\theta}\sum_i L(x^{(i), \theta}, y^{(i)})$
        • $t\leftarrow t + 1$
        • 更新有偏一阶矩估计:$s \leftarrow \rho_1 s + (1-\rho_1)g$
        • 更新有偏二阶矩估计:$r \leftarrow \rho_2 r + (1-\rho_2)g\cdot g$
        • 修正一阶矩的偏差:$\hat{s} \leftarrow \frac{s}{1-\rho_1^t}$
        • 修正二阶矩的偏差:$\hat{r} \leftarrow \frac{r}{1-\rho_2^t}$
        • 计算更新:$\Delta \theta \leftarrow -\epsilon\frac{\hat{s}}{\sqrt{\hat{r} + \delta}}$
        • 应用更新:$\theta \leftarrow \theta + \Delta \theta$
      • end while

3. 二阶近似方法

3.1 牛顿法

  • 核心公式:$\theta^* = \theta_0 - H^{-1}\triangledown_{\theta}J(\theta_0)$
  • 局限性
    • 只适用于H半正定的情况
    • H的求逆计算复杂度较高

3.2 共轭梯度算法

  • 主要思想:通过迭代下降的共轭方向以有效避免H矩阵求逆
  • 寻求一个和先前线搜索方向共轭的搜索方向,即它不会撤销该方向上的进展;在训练迭代t时,下一步的搜索方向$d_t = \triangledown_{\theta}J(\theta) + \beta_td_{t-1}$,其中,$\beta$是应沿方向$d_{t-1}$加回多少方向
  • $\beta$的计算方法
    • $\beta_t = \frac{\triangledown_{\theta}J(\theta_t)^T\triangledown_{\theta}J(\theta_t)}{\triangledown_{\theta}J(\theta_{t-1})^T\triangledown_{\theta}J(\theta_{t-1})}$

4. 优化策略和元算法

4.1 批标准化

  • 是一个自适应的重参数化的方法,试图解决训练非常深的模型的困难
  • 主要减小了多层之间权重参数协调更新的问题,可应用于网络的任何输入层或隐藏层
  • 标准化方法
    • 设H是需要标准化的某层的小批量的激活函数,得到$H’ = \frac{H - \mu}{\sigma}$
    • 在训练阶段,$\mu = \frac{1}{m}\sum_{i}H_{i, :}$,$\sigma = \sqrt{\delta + \frac{1}{m}\sum_{i}(H - \mu)_i^2}$
  • 影响
    • 使得低层的网络没有用。虽然,批标准化减少了低层网络有害的影响,也使得其对于参数学习没有用处;是因为标准化了一阶和二阶统计量,使得线性网络失效

4.2 坐标下降

  • 主要思想:将一个优化问题拆解为几个部分以达到(局部)极小值
  • 当优化问题中的不同变量能够清楚地分成相对独立的组,或是当优化一组变量明显比优化所有变量效率更高时,坐标下降最有意义