深度模型中的优化

1.随机梯度下降

  

    保证SGD收敛的一个充分条件是

      

    线性衰减学习率直到第 τ 次迭代:

      

      其中 α =k/τ 。在 τ 步迭代之后,一般使 ϵ 保持常数

      通常 τ 被设为需要反复遍历训练集几百次的迭代次数。通常 ϵ τ 应设为大约 ϵ 0 的 1%。主要问题是如何设置 ϵ 0 。若 ϵ 0 太大,学习曲线将会剧烈振荡,代价函数值通常会明显增加。

      温和的振荡是良好的,容易在训练随机代价函数(例如使用Dropout的代价函数)时出现。如果学习率太小,那么学习过程会很缓慢

    动量算法引入了变量 v 充当速度角色——它代表参数在参数空间移动的方向和速率

      

    步长大小为

      

    动量的超参数视为1/(1−α)

  Nesterov 动量

    

    

      Nesterov 动量将额外误差收敛率从 O(1/k)(k 步后)改进到 O(1/k 2 )

2.参数初始化策略

  标准初始化

    

3.自适应学习率算法

  AdaGrad

    

   RMSProp

    修改 AdaGrad 以在非凸设定下效果更好,改变梯度积累为指数加权的移动平均

      

       

  Adam

    

 4.二阶近似方法

  

  牛顿法

    牛顿法是基于二阶泰勒级数展开在某点 θ 0 附近来近似 J(θ) 的优化方法

      

    牛顿参数更新规则

      

    正则化策略包括在Hessian矩阵对角线上增加常数 α

      

      

  共轭梯度

    共轭梯度是一种通过迭代下降的共轭方向(conjugate directions)以有效避免Hessian矩阵求逆计算的方法

    如果 d ⊤H d t−1 = 0,其中 H 是Hessian矩阵,则两个方向 d t 和 d t−1 被称为共轭的

    计算 β t 的流行方法是

       Fletcher-Reeves

        

       Polak-Ribière

        

       

5.优化策略和元算法

  标准化 H

    

    其中 µ 是包含每个单元均值的向量,σ 是包含每个单元标准差的向量

    

      δ 是个很小的正值,比如 10 −8 ,以强制避免遇到√ z 的梯度在 z = 0 处未定义的问题

      

  坐标下降

    相对于某个单一变量 x i 最小化 f(x),然后相对于另一个变量 x j 等等,反复循环所有的变量,我们会保证到达(局部)极小值。这种做法被称为坐标下降

    块坐标下降(blockcoordinate descent)是指对于某个子集的变量同时最小化

  监督预训练

    训练简单模型求解简化问题的方法统称为预训练(pretraining)

    贪心算法(greedy algorithm)将问题分解成许多部分,然后独立地在每个部分求解最优值

    贪心算法也可以紧接一个精调(fine-tuning)阶段,联合优化算法搜索全问题的最优解

posted @ 2018-12-04 09:01  大来  阅读(489)  评论(0编辑  收藏  举报