🎨
Bible-DeepLearning
  • Introduction
  • 第6章 深度前馈网络
    • 6.1 例子:学习XOR
    • 6.2 基于梯度的学习
      • 6.2.1 代价函数
        • 6.2.1.1 使用最大似然学习条件分布
        • 6.2.1.2 学习条件统计量
      • 6.2.2 输出单元
        • 6.2.2.1 用于高斯输出分布的线性神单元
        • 6.2.2.2 用于Bernoulli输出分布的sigmoid单元
        • 6.2.2.3 用于Multinoulli输出分布的softmax单元
    • 6.3 隐藏单元
      • 6.3.1 ReLU及其扩展
      • 6.3.2 logistic sigmoid与双曲正切函数
      • 6.3.3 其他隐藏单元
      • 李宏毅补充 SELU
    • 6.4 架构设计
    • 6.5 反向传播和其他的微分算法
      • 6.5.1 计算图
      • 6.5.2 微积分中的链式法则
      • 6.5.3 递归地使用链式法则来实现反向传播
      • 6.5.4 全连接MLP中的反向传播计算
      • 6.5.5 符号到符号的导数
      • 6.5.6 一般化的反向传播
      • 6.5.7 实例:用于MLP 训练的反向传播
      • 6.5.8 复杂化
  • 第7章 深度学习中的正则化
    • 7.1 参数范数惩罚
      • 7.1.1 L2参数正则化
      • 7.1.2 L1参数正则化
    • 7.2 作为约束的范数惩罚
    • 7.3 正则化和欠约束问题
    • 7.4 数据集增强
    • 7.5 噪声鲁棒性
    • 7.6 半监督学习
    • 7.7 多任务学习
    • 7.8 提前终止
    • 7.9 参数绑定和参数共享
    • 7.10 稀疏表示
    • 7.11 Bagging 和其他集成方法
    • 7.12 Dropout
    • 7.13 对抗训练
    • 7.14 切面距离、正切传播和流形正切分类器
    • Ag补充 一些能用于提升比赛成绩的方法
  • 第8章 深度模型中的优化
    • 8.1 学习和纯优化有什么不同
      • 8.1.1 经验风险最小化
      • 8.1.2 代理损失函数和提前终止
      • 8.1.3 批量算法和小批量算法
    • 8.2 神经网络优化中的挑战
      • 8.2.1 病态
      • 8.2.2 局部极小值
      • 8.2.3 8.2.3 高原、鞍点和其他平坦区域
      • 8.2.4 悬崖和梯度爆炸
      • 8.2.5 长期依赖
      • 8.2.6 非精确梯度
    • 8.3 基本算法
      • 8.3.1 随机梯度下降
      • 8.3.2 动量
      • 8.3.3 Nesterov 动量
    • 8.4 参数初始化策略
    • 8.5 自适应学习率算法
      • 8.5.1 AdaGrad
      • 8.5.2 RMSProp
      • 8.5.3 Adam
      • 8.5.4 选择正确的优化算法
    • 8.6 二阶近似方法
      • 8.6.1 牛顿法
      • 8.6.2 共轭梯度
      • 8.6.3 BFGS
    • 8.7 优化策略和元算法
      • 8.7.1 批标准化
      • 8.7.2 坐标下降
      • 8.7.3 Polyak 平均
      • 8.7.4 监督预训练
      • 8.7.5 设计有助于优化的模型
  • 第9章 卷积网络
    • 9.1 卷积运算
    • 9.2 动机
    • 9.3 池化
    • 9.4 卷积与池化作为一种无限强的先验
    • 9.5 基本卷积函数的变体
    • 9.6 结构化输出
    • 9.7 数据类型
  • 第10章 序列建模:循环和递归网络
    • 10.1 展开计算图
    • 10.2 循环神经网络
      • 10.2.1 导师驱动过程和输出循环网络
      • 10.2.2 计算循环神经网络的梯度
      • 10.2.3 作为有向图模型的循环网络
      • 10.2.4 基于上下文的RNN序列建模
    • 10.3 双向RNN
    • 10.4 基于编码 - 解码的序列到序列架构
    • 10.5 深度循环网络
    • 10.6 递归神经网络
    • 10.7 长期依赖的挑战
    • 10.9 渗漏单元和其他多时间尺度的策略
    • 10.10 长短期记忆和其他门控RNN
      • 10.10.1 LSTM
      • 10.10.2 其他门控RNN
    • 10.11 优化长期依赖
      • 10.11.1 梯度截断
      • 10.11.2 引导信息流的正则化
    • 10.12 外显记忆
  • 第11章 实践方法论
    • 11.1 性能度量
    • 11.2 默认的基准模型
    • 11.3 决定是否收集更多数据
    • 11.4 选择超参数
      • 11.4.1 手动选择超参数
      • 11.4.3 网络搜索
      • 11.4.4 随机搜索
    • 11.5 调试策略
Powered by GitBook
On this page
  • 鞍点
  • 鞍点 VS 极小值点
  • 鞍点的影响
  • 平坦区域

Was this helpful?

  1. 第8章 深度模型中的优化
  2. 8.2 神经网络优化中的挑战

8.2.3 8.2.3 高原、鞍点和其他平坦区域

Previous8.2.2 局部极小值Next8.2.4 悬崖和梯度爆炸

Last updated 5 years ago

Was this helpful?

鞍点

[success]

对于很多高维非凸函数而言,局部极小值(以及极大值)事实上都远少于另一类梯度为零的点:鞍点。 鞍点附近的某些点比鞍点有更大的代价,而其他点则有更小的代价。 在鞍点处,Hessian矩阵同时具有正负特征值。 位于正特征值对应的特征向量方向的点比鞍点有更大的代价,反之,位于负特征值对应的特征向量方向的点有更小的代价。 我们可以将鞍点视为代价函数某个横截面上的局部极小点,同时也可以视为代价函数某个横截面上的局部极大点。 \fig?\,给了一个示例。

鞍点 VS 极小值点

多类随机函数表现出以下性质:低维空间中,局部极小值很普遍。 在更高维空间中,局部极小值很罕见,而鞍点则很常见。

[success] 鞍点和极小值点都要求点在所有方向上的偏导都为0,即在每个方向上要么是极小值要么是极大值。 假设n维空间某个点满足此要求,且它在某个方向上为极小值的概率为0.5。 那么这个点在n维空间中的极小值点的概率为$0.5^n$,为极大值点的概率为$0.5^n$。为鞍点的概率为$1-0.5^n-0.5^n$。 当n非常大时,这个点是极小值的概率很小,而是鞍点的概率很大。

对于这类函数$f:\Bbb R^n \to \Bbb R$而言,鞍点和局部极小值的数目比率的期望随$n$指数级增长。 我们可以从直觉上理解这种现象——Hessian\,矩阵在局部极小点处只有正特征值。 而在鞍点处,Hessian\,矩阵则同时具有正负特征值。 试想一下,每个特征值的正负号由抛硬币决定。 在一维情况下,很容易抛硬币得到正面朝上一次而获取局部极小点。 在$n$-维空间中,要抛掷$n$次硬币都正面朝上的难度是指数级的。 具体可以参考~{Dauphin-et-al-NIPS2014-small},它回顾了相关的理论工作。

很多随机函数一个惊人性质是,当我们到达代价较低的区间时,Hessian\,矩阵的特征值为正的可能性更大。 和抛硬币类比,这意味着如果我们处于低代价的临界点时,抛掷硬币正面朝上$n$次的概率更大。 这也意味着,局部极小值具有低代价的可能性比高代价要大得多。 具有高代价的临界点更有可能是鞍点。 具有极高代价的临界点就很可能是局部极大值了。

以上现象出现在许多种类的随机函数中。 那么是否在神经网络中也有发生呢? {Baldi89}从理论上证明,不具非线性的浅层自编码器(\chap?中将介绍的一种将输出训练为输入拷贝的前馈网络)只有全局极小值和鞍点,没有代价比全局极小值更大的局部极小值。 他们还发现这些结果能够扩展到不具非线性的更深的网络上,不过没有证明。 这类网络的输出是其输入的线性函数,但它们仍然有助于分析非线性神经网络模型,因为它们的损失函数是关于参数的非凸函数。 这类网络本质上是多个矩阵组合在一起。 {Saxe-et-al-ICLR13}精确解析了这类网络中完整的学习动态,表明这些模型的学习能够捕捉到许多在训练具有非线性激活函数的深度模型时观察到的定性特征。 {Dauphin-et-al-NIPS2014-small}通过实验表明,真实的神经网络也存在包含很多高代价鞍点的损失函数。 {Choromanska-et-al-AISTATS2015}提供了额外的理论论点,表明另一类和神经网络相关的高维随机函数也满足这种情况。

鞍点的影响

鞍点激增对于训练算法来说有哪些影响呢? 对于只使用梯度信息的一阶优化算法而言,目前情况还不清楚。 鞍点附近的梯度通常会非常小。 另一方面,实验中梯度下降似乎可以在许多情况下逃离鞍点。 {GoodfellowOptimization15}可视化了最新神经网络的几个学习轨迹,\fig?\,给了一个例子。 这些可视化显示,在突出的鞍点附近,代价函数都是平坦的,权重都为零。 但是他们也展示了梯度下降轨迹能够迅速逸出该区间。 {GoodfellowOptimization15}也主张,应该可以通过分析来表明连续时间的梯度下降会逃离而不是吸引到鞍点,但对梯度下降更现实的使用场景来说,情况或许会有所不同。

[success] 如果目标是“寻找梯度为0的点”,会被吸引到鞍点或极大值点。 例如:

对于牛顿法而言,鞍点显然是一个问题。 梯度下降旨在朝"下坡"移动,而非明确寻求临界点。 而牛顿法的目标是寻求梯度为零的点。 如果没有适当的修改,牛顿法就会跳进一个鞍点。 高维空间中鞍点的激增或许解释了在神经网络训练中为什么二阶方法无法成功取代梯度下降。 {Dauphin-et-al-NIPS2014-small}介绍了二阶优化的无鞍牛顿法,并表明和传统版本的牛顿法相比有显著改进。 二阶方法目前仍然难以扩展到大型神经网络,但是如果这类无鞍算法能够扩展的话,还是很有希望的。

除了极小值和鞍点,还存在其他梯度为零的点。 例如极大值,它的情况从优化的角度看与鞍点很类似,很多算法不会被吸引到极大值,除了未经修改的牛顿法。 和极小值一样,许多种类的随机函数的极大值在高维空间中也是指数级稀少。

平坦区域

也可能存在恒值的、宽且平坦的区域。 在这些区域,梯度和\,Hessian\,矩阵都是零。 这种退化的情形对所有数值优化算法而言都是主要问题。 在凸问题中,一个宽而平坦的区间肯定包含全局极小值,但是对于一般的优化问题而言, 这样的区域可能会对应着目标函数中一个较高的值。

[success] Momentum、RMSProp、Adam等算法能够加速平坦区域的学习。

鞍点
牛顿法