错觉

  • 深度神经网络“容易收敛到局部最优”,很可能是一种想象,实际情况是,我们可能从来没有找到过“局部最优”,更别说全局最优了。
  • 很多人都有一种看法,就是“局部最优是神经网络优化的主要难点”。这来源于一维优化问题的直观想象。在单变量的情形下,优化问题最直观的困难就是有很多局部极值,如:
  • 人们直观的想象,高维的时候这样的局部极值会更多,指数级的增加,于是优化到全局最优就更难了。然而单变量到多变量一个重要差异是,单变量的时候,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δx1,δfδx2,⋯,δfδxn]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=[∂2f∂x12∂2f∂x1∂x2⋯∂2f∂x1∂xn∂2f∂x2∂x1∂2f∂x22⋯∂2f∂x2∂xn⋮⋮⋱⋮∂2f∂xn∂x1∂2f∂xn∂x2⋯∂2f∂xn2]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=⎣⎢⎢⎢⎢⎢⎡​∂x12​∂2f​∂x2​∂x1​∂2f​⋮∂xn​∂x1​∂2f​​∂x1​∂x2​∂2f​∂x22​∂2f​⋮∂xn​∂x2​∂2f​​⋯⋯⋱⋯​∂x1​∂xn​∂2f​∂x2​∂xn​∂2f​⋮∂xn2​∂2f​​⎦⎥⎥⎥⎥⎥⎤​

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

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

参考-二次型

如何理解深度学习中的局部最优相关推荐

  1. 深入理解深度学习中的【卷积】和 feature map

    深入理解深度学习中的卷积和feature map        虽然深度学习和CNN的概念已经传遍大街小巷,本文还是说一说CNN中的卷积.        本文主要介绍卷积层的结构.下图显示了CNN中最 ...

  2. 理解深度学习中的正则化

    写在前面:这篇文章虽然公式有点多,但很好懂的. 仔细看一定会有很大收获.     本文介绍了对深度学习中正则化的理解,分为以下几部分: 什么是正则化? 为什么要正则化? 怎样理解正则化? 举例 首先从 ...

  3. 卷积为什么如此强大?理解深度学习中的卷积

    译自Tim Dettmers的Understanding Convolution in Deep Learning有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是"卷积&qu ...

  4. 深度 | 理解深度学习中的卷积

    译者按:本文译自 Tim Dettmers 的 Understanding Convolution in Deep Learning.有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是「 ...

  5. 理解深度学习中的卷积

    译者按:本文译自 Tim Dettmers 的 Understanding Convolution in Deep Learning.有太多的公开课.教程在反复传颂卷积神经网络的好,却都没有讲什么是「 ...

  6. 如何理解深度学习中的卷积?

    原文地址: http://www.yangqiu.cn/aicapital/2382000.html 译自Tim Dettmers的Understanding Convolution in Deep ...

  7. 形象理解深度学习中八大类型卷积

    https://www.toutiao.com/a6657010098780504589/ 2019-02-12 15:26:40 本文总结了深度学习中常用的八大类型的卷积,以非常形象的方式帮助你建立 ...

  8. 深入理解深度学习中的激活函数

    1. 什么是激活函数? 生物神经网络是人工神经网络的起源.然而,人工神经网络(ANNs)的工作机制与大脑的工作机制并不是十分的相似.不过在我们了解为什么把激活函数应用在人工神经网络中之前,了解一下激活 ...

  9. 理解深度学习中的学习率及多种选择策略

    学习率是最影响性能的超参数之一,如果我们只能调整一个超参数,那么最好的选择就是它.相比于其它超参数学习率以一种更加复杂的方式控制着模型的有效容量,当学习率最优时,模型的有效容量最大.从手动选择学习率到 ...

最新文章

  1. 河南大学明德计划2020计算机学院,河南大学启动“明德计划”
  2. vue中向数组去重_「前端剑指offer第3期」来,手写一下数组去重
  3. OpenCV 之 直方图处理
  4. 【后端开发】分析抖音后台架构
  5. 微软中山大学开源超强的视觉位置编码,涨点显著
  6. Python二级笔记(10)
  7. springboot+Mybatis-plue自动生成代码
  8. VIPKID:笔试题(数组中和为0的一对数的数量,十进制转二进制中1的个数)
  9. Android安全问题 钓鱼程序
  10. 服务器位置控制怎么找原点,伺服控制为什么要进行原点回归?怎样实现原点回归?...
  11. stm32代码_ME3616 NB-IoT模组对接OneNET教程以及STM32代码
  12. 中央民族大学计算机专业研究生,信息工程学院
  13. 安全系列之一:如何利用IPSec保证远程桌面的安全性!(上)
  14. 嵌入式系统调试仿真工具
  15. 数据结构(Java)——查找和排序(3)
  16. 【thinking in java】学习笔记 三 初始化及权限控制
  17. 根据数据生成excel、二维码并压缩zip并下载
  18. 文本框里面加删除按钮
  19. Manjaro安装deb包
  20. QT教程:QT的基本了解

热门文章

  1. GIS的云计算解决方案
  2. EBS 系统模块简称
  3. Migrate DB data using expdp/impdp
  4. socat使用指南:4:fork的使用说明
  5. 通路变坦途—CRM在医药行业的应用
  6. 如何使用二维码布置英语作业?
  7. 飞凌 修改ip地址 linux,[新手指导]imx6开发板 IP及MAC地址修改
  8. UX设计秘诀之注册表单设计,细节决定成败
  9. 20P81 pr预设模板1400种平移缩放扭曲旋转图形炫光干扰损坏抖动无缝视频转场预设
  10. 国内专利申请相关概念综述