如何理解深度学习中的局部最优

错觉

  • 深度神经网络“容易收敛到局部最优”,很可能是一种想象,实际情况是,我们可能从来没有找到过“局部最优”,更别说全局最优了。
  • 很多人都有一种看法,就是“局部最优是神经网络优化的主要难点”。这来源于一维优化问题的直观想象。在单变量的情形下,优化问题最直观的困难就是有很多局部极值,如:
    在这里插入图片描述
  • 人们直观的想象,高维的时候这样的局部极值会更多,指数级的增加,于是优化到全局最优就更难了。然而单变量到多变量一个重要差异是,单变量的时候,Hessian 矩阵只有一个特征值,于是无论这个特征值的符号正负,一个临界点都是局部极值。但是在多变量的时候,Hessian 有多个不同的特征值,这时候各个特征值就可能会有更复杂的分布,如有正有负的不定型和有多个退化特征值(零特征值)的半定型。在后两种情况下,是很难找到局部极值的,更别说全局最优了。

真相

  • 神经网络的训练的困难主要是鞍点的问题。在实际中,我们很可能也从来没有真的遇到过局部极值。
    在这里插入图片描述

  • Bengio 组这篇文章 Eigenvalues of the Hessian in Deep Learning(https://arxiv.org/abs/1611.07476)里面的实验研究给出以下的结论:

    • Training stops at a point that has a small gradient. The norm of the gradient is not zero, therefore it does not, technically speaking, converge to a critical point.
    • There are still negative eigenvalues even when they are small in magnitude.
  • 另一方面,一个好消息是,即使有局部极值,具有较差的 loss 的局部极值的吸引域也是很小的.Towards Understanding Generalization of Deep Learning: Perspective of Loss Landscapes (https://arxiv.org/abs/1706.10239)

  • 所以,很可能我们实际上是在“什么也没找到”的情况下就停止了训练,然后拿到测试集上试试,“咦,效果还不错”。

  • 补充说明,这些都是实验研究结果。理论方面,各种假设下,深度神经网络的 Landscape 的鞍点数目指数增加,而具有较差 loss 的局部极值非常少。

海森矩阵与特征值

很好的一篇参考

  • 求一阶导,意义不用多说,共有n个
    f ′ ( x ) = [ δ f δ x 1 , δ f δ x 2 , ⋯   , δ f δ x n ] f^{\prime}(x)=\left[\frac{\delta f}{\delta x_{1}}, \frac{\delta f}{\delta x_{2}}, \cdots, \frac{\delta f}{\delta x_{n}}\right] f(x)=[δx1δf,δx2δf,,δxnδf]

  • 求二阶导得到了一个矩阵(n x n)。这是因为我们就想看「每个一阶导」(共n个)是如何受其它变量(n个)影响的,因此会有(n x n)个量。然后故意把它写成了海森矩阵的形式。如下:
    H = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] H=\left[\begin{array}{cccc} \frac{\partial^{2} f}{\partial x_{1}^{2}} & \frac{\partial^{2} f}{\partial x_{1} \partial x_{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{1} \partial x_{n}} \\ \frac{\partial^{2} f}{\partial x_{2} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{2}^{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{2} \partial x_{n}} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^{2} f}{\partial x_{n} \partial x_{1}} & \frac{\partial^{2} f}{\partial x_{n} \partial x_{2}} & \cdots & \frac{\partial^{2} f}{\partial x_{n}^{2}} \end{array}\right] H=x122fx2x12fxnx12fx1x22fx222fxnx22fx1xn2fx2xn2fxn22f

  • 用处:海森矩阵相当于二阶导,可用于判断函数在某个点 x = ( x 1 , x 2 , . . . , x n ) \textbf{x}=(x_1, x_2, ..., x_n) x=(x1,x2,...,xn)变化率的变化率,即函数在某个点的凸性

    1. H > 0 H > 0 H>0 ,那么对于一个二次函数,它下严格凸,像碗, f ′ ( x ) = 0 f'(x)=0 f(x)=0的点有全局极小值
    2. H > = 0 H >= 0 H>=0,函数下凸, f ′ ( x ) = 0 f'(x)=0 f(x)=0的点有局部极小值
    3. H < 0 H < 0 H<0,那么对于一个二次函数,它上严格凸,像倒碗, f ′ ( x ) = 0 f'(x)=0 f(x)=0的点有全局极大值
    4. H < = 0 H <= 0 H<=0,函数上凸, f ′ ( x ) = 0 f'(x)=0 f(x)=0的点有局部极大值
    5. H H H 有正有负,鞍点, f ′ ( x ) = 0 f'(x)=0 f(x)=0的点,既是极小值也是极大值

参考-二次型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值