zoukankan      html  css  js  c++  java
  • 【dlbook】优化

    【神经网络优化的挑战】

    一、病态:

      虽然学习率很小,而且梯度大,但是由于Hessian阵的病态,二次项比一次项还要大,梯度下降事实上并不一定能下降,反而有可能上升。因此需要将学习率调低。

      表现:梯度很强,但是学习很缓慢,因为曲率太强

     

    二、局部最小值:

      由于权重空间对称性,神经网络有很多局部极小值。

      是否存在大量代价高的局部极小值,优化算法是否会碰到,都尚未解决。

      梯度范数是否能收缩到一个微小的值。

    三、鞍点:

      鞍点是更加现实的问题!局部最小值是全正,鞍点是有正有负。

      牛顿法会陷入鞍点,二阶算法通常难以扩大到大型神经网络。

     

    四、悬崖和梯度爆炸:

      常见于循环神经网络,

      斜率较大区域,由于几个较大的权重相乘。使得导数巨大,梯度下降会使参数弹射的非常远,之前的优化就成为无用功。

     

    五、梯度爆炸和梯度消失:

      常见于循环神经网络或者很深的神经网络。

      如果一个矩阵经过多次相乘运算,而其特征值 > 1。最终特征值会趋于无穷,表现出悬崖的特征,即梯度爆炸。如果特征值小于1,会趋于0,显示为梯度消失,不知道向哪个方向移动。

      比较好的方式是记录每个梯度值!

    六、非精确梯度

      梯度估计是一个常见的问题,需要基于采样来估计,采样通常有噪声。

     

    七、局部与全局弱对应

      没有全局的优化算法。

      主要是在低维度的时候会达不到局部最优。

      高维度能够达到,但是路径可能会比较长。

    【基本算法】

    SGD:

      lr需要逐步衰减,一般使用的是线性衰减,

    动量:

      v = alpha  v  -  epsilon  梯度

      theta = theta + v

      解决问题1:Hessian矩阵的病态条件

      解决问题2:随机梯度的方差

      实践中,动量alpha的取值一般为 0.5 , 0.9 , 0.99, 应当随着时间变大。但是扩大动量alpha 没有收缩学习率 epsilon重要。

    Nesterov动量

      梯度计算时使用参数为 theta + alpha v,也就是提前计算动量的梯度

      在批量梯度下降(使用所有样本更新)的表现比动量算法好,但是在随机梯度的情况下并没有改善收敛率

    【参数初始化】

    权重初始化

    需要在不同单元之间破坏对称性、如果连接相同的输入,必须有不同的初始参数。

    一般是高斯或者均匀分布,这两种似乎没有很大差别,但没有研究证实。

    初始权重方差是重要的。更大的权重可以更好的破坏对称性,避免冗余单元更好传播信息,但是容易在前向或者反向传播中产生爆炸的值。

    优化希望初始权重大,更好的传播信息,正则化希望初始权重更小,

    如果计算资源允许,可以将初始数据范围设置为超参数。

    偏置初始化

    通常可以简单设置为0,以下是例外:

    1、偏置作为输出单元,

    2、避免初始化引起太大饱和,例如ReLU不设置为0而是0.1

    3、一个单元控制其他单元能否参与等式,

    【自适应学习率算法】

    Adagrad

      不同模型参数具有不同的学习率!

      缺陷:从训练开始进行累积会导致学习率过早过量减小,更多适用于凸优化

    RMSProp

      相比较Adagrad,在非凸设定下效果更好,从梯度累积转变为指数加权的移动平均。

      实现指数加权的方式是与动量相近,动量的值一般设成

      有效且使用,是经常采用的优化方法。

    Adam

       一阶矩和二阶矩综合使用,对超参数的选择相当鲁棒,但是需要修改一下建议的学习率。

    【二阶算法】

    待续

  • 相关阅读:
    Vue路由机制
    谷歌浏览器打不开应用商店的解决方法
    Vue报错——Component template should contain exactly one root element. If you are using vif on multiple elements, use velseif to chain them instead.
    Vue.js学习之——安装
    Vue使用axios无法读取data的解决办法
    关于localstorage存储JSON对象的问题
    2013年整体计划
    个人喜欢的警语收集
    Linux防火墙的关闭和开启
    Flex修改title 转载
  • 原文地址:https://www.cnblogs.com/yesuuu/p/8398617.html
Copyright © 2011-2022 走看看