关于神经网络,一个学术界搞错了很多年的问题

8ca8e881fdd7d655f4644e1b0e48c8bd.png

文 | 五楼@知乎

说一个近年来神经网络方面澄清的一个误解。BP算法自八十年代发明以来,一直是神经网络优化的最基本的方法。神经网络普遍都是很难优化的,尤其是当中间隐含层神经元的个数较多或者隐含层层数较多的时候。长期以来,人们普遍认为,这是因为较大的神经网络中包含很多局部极小值(local minima),使得算法容易陷入到其中某些点。这种看法持续二三十年,至少数万篇论文中持有这种说法。举个例子,如著名的Ackley函数 。对于基于梯度的算法,一旦陷入到其中某一个局部极值,就很难跳出来了。(图片来自网络,压缩有点严重。原图可见Documentation/Reference/Test Functions - HeuristicLab[1])。

e4a65f1065cc04bb838d19c4e2cf67c9.png

到2014年,一篇论文《Identifying and attacking the saddle point problem in high-dimensional non-convex optimization》[2],指出高维优化问题中根本没有那么多局部极值。作者依据统计物理,随机矩阵理论和神经网络理论的分析,以及一些经验分析提出高维非凸优化问题之所以困难,是因为存在大量的鞍点(梯度为零并且Hessian矩阵特征值有正有负)而不是局部极值。

344faf6292fb208ba9ebb0e7d3c36cf3.png

鞍点(saddle point)如下图(来自wiki)。和局部极小值相同的是,在该点处的梯度都等于零,不同在于在鞍点附近Hessian矩阵有正的和负的特征值,即是不定的,而在局部极值附近的Hessian矩阵是正定的。

0ec4bd347b3de8bf273fbabe1c043fb0.png
▲img

在鞍点附近,基于梯度的优化算法(几乎目前所有的实际使用的优化算法都是基于梯度的)会遇到较为严重的问题,可能会长时间卡在该点附近。在鞍点数目极大的时候,这个问题会变得非常严重(下图来自上面论文)。

2ec44f5f6dca490a3c7ab97c83ce1509.png

这个问题目前仍有讨论,不过大体上人们接受了这种观点,即造成神经网络难以优化的一个重要(乃至主要)原因是存在大量鞍点。造成局部极值这种误解的原因在于,人们把低维的直观认识直接推到高维的情况。在一维情况下,局部极值是仅有的造成优化困难的情形(Hessian矩阵只有一个特征值)。该如何处理这种情况,目前似乎没有特别有效的方法。(欢迎评论告知)

ef80483cf192c14544baa55e6de4e5ee.png

多解释一点。

  1. 鞍点也是驻点,鞍点处的梯度为零,在一定范围内沿梯度下降会沿着鞍点附近走,这个区域很平坦,梯度很小。

  2. 优化过程不是卡在鞍点不动了(像人们以为的局部极值那样),而是在鞍点附近梯度很小,于是变动的幅度越来越小,loss看起来就像是卡住了。但是和local minima的差别在于,如果运行时间足够长,SGD一类的算法是可以走出鞍点附近的区域的(看下面的两个链接)。由于这需要很长时间,在loss上看来就像是卡在local minima了。然而,从一个鞍点附近走出来,很可能会很快就进入另一个鞍点附近了。

  3. 直观来看增加一些扰动,从下降的路径上跳出去就能绕过鞍点。但在高维的情形,这个鞍点附近的平坦区域范围可能非常大。此外,即便从一个鞍点跳过,这个跳出来的部分很可能很快进入另一个鞍点的平坦区域—— 鞍点的数量(可能)是指数级的。

各种优化算法在鞍点附近形态的展示,可以看动态图[An overview of gradient descent optimization algorithms][3]最下面的部分,非常生动形象。中文可见[SGD,Adagrad,Adadelta,Adam等优化方法总结和比较][4]。

有人提到了遗传算法和进化算法(EA),这里统一说一下。

先说优点,EA通常是不依赖于函数值的,而只依赖于点之间的大小关系,comparison-based,这样进行迭代的时候不会受到梯度太小的影响。看起来似乎是一个可行的路子?下面说一下缺点。

说说进化算法面对的一些普遍问题。

  1. 先说CMA-ES, 这是效果最好最成功的进化算法之一,尤其是在ill-conditioned 问题和non-separable 问题上。CMA-ES (Covariance Matrix Adaptation-Evolution Strategy)和EDA (Estimation of Distribution Algorithm)的特点是 model-based,他们从一个正态分布采样产生一组新解,使用较好的一部分(一半)新解更新分布的参数(mean, cov或对应的Cholesky factor,对CMA-ES来说还有一个独立步长)。CMA-ES和EDA这样基于分布的算法大体上都能从information geometric optimization (IGO) 用natural gradient 得到。IGO流的收敛性和算法本身在一类问题上的收敛性都不是问题,Evolution path更是动量的类似。然而这些方法最大的问题在于,由于依赖随机采样,当维度很高的时候采样的空间极大,需要极多的样本来逐渐估计cov ()量级),采样产生新解的时候的复杂度是(不低于))。EA的论文普遍只测试30,50-100维,500-1000维以上的极少,即便是各种large scale的变种也大多止步于1000。对于动辄 量级的神经网络优化,基本是不可行的。

  2. DE/PSO这类算法。特点是无模型,不实用概率分布采样的方法产生新解,使用多个点(称为一个种群,population)之间的相互(大小)关系来模拟一个下降方向。这种基于种群的方法对有较多局部极值的问题效果较好,但是对ill-conditioned 问题性能较差,在non-separable+ill-conditioned问题效果有限。更进一步的,这类算法为了维持种群多样性,通常只进行两两比较(两两比较的选择压力小于截断选择,即某些新解不比父本好,但是比种群中其他解好,这样的解被丢弃了),好的个体进入下一代。然而随着维度增加,新生个体比父代好的比例急剧下降,在ellipsoid函数上100维左右的时候就已经降低到5%以下。实验研究[Differential Evolution algorithms applied to Neural Network training suffer from stagnation][5]

总体上,EA在连续优化问题上的主要问题就是搜索效率不高,相比基于梯度的算法要多倍的搜索。与此相似的实际上是坐标下降法(coordinate descent),同样不使用梯度,同样要求多倍的搜索。

620db96fce55fe0630b4d7bd95507168.png后台回复关键词【入群

加入卖萌屋NLP、CV与搜推广与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

1d1ae28e769aa20bc6ef5d01c2832f14.gif 48183f7aaa053ae32081bb10cf1dea75.png

[1]http://dev.heuristiclab.com/trac.fcgi/wiki/Documentation/Reference/Test%20Functions

[2]https://arxiv.org/pdf/1406.2572v1.pdf

[3] http://sebastianruder.com/optimizing-gradient-descent/

[4]http://ycszen.github.io/2016/08/24/SGD%EF%BC%8CAdagrad%EF%BC%8CAdadelta%EF%BC%8CAdam%E7%AD%89%E4%BC%98%E5%8C%96%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93%E5%92%8C%E6%AF%94%E8%BE%83/

[5]http://www.sciencedirect.com/science/article/pii/S156849461400146X

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Consul注销实例时候的问题

当我们在Spring Cloud应用中使用Consul来实现服务治理时,由于Consul不会自动将不可用的服务实例注销掉(deregister),这使得在实际使用过程中,可能因为一些操作失误、环境变更等原因让Consul中存在一些无效实例信息&…

刷榜思路少?顶级中文NLP比赛解题方法直播来了!

如何利用稠密向量表示学习方法提升模型在大规模中文段落数据中的检索能力?如何利用外部知识信息减少模型在智能音箱、语音助手等产品中因知识不足导致的“智商”掉线?深度学习在众多NLP任务取得惊艳表现,但如何缓解其黑盒属性造成的应用落地「…

LeetCode 1338. 数组大小减半

1. 题目 给你一个整数数组 arr。你可以从中选出一个整数集合,并删除这些整数在数组中的每次出现。 返回 至少 能删除数组中的一半整数的整数集合的最小大小。 示例 1: 输入:arr [3,3,3,3,5,5,5,2,2,7] 输出:2 解释&#xff1a…

技术动态 | 知识图谱的自监督学习与逻辑推理

分享嘉宾:胡子牛 UCLA PHD编辑整理:wei ai-fir出品平台:DataFunTalk导读:知识图谱是一种多关系的图结构,每个节点表示一个实体,每个边表示连接的两个节点之间的关系,可以将图谱中建模的节点和边…

为Spring Cloud Ribbon配置请求重试(Camden.SR2+)

当我们使用Spring Cloud Ribbon实现客户端负载均衡的时候,通常都会利用LoadBalanced来让RestTemplate具备客户端负载功能,从而实现面向服务名的接口访问(原理可见《Spring Cloud源码分析(二)Ribbon》一文,如…

聊聊谷歌Pathways带来的想象力

声明:本文原创首发于公众号夕小瑶的卖萌屋,作者Severus--->【我是传送门】今年清明节,Google 搞了一点小动作,在 arxiv 上放出了自己的新工作,PaLM[1] (PaLM: Scaling Language Modeling with Pathways&…

LeetCode 1339. 分裂二叉树的最大乘积(DP)

1. 题目 给你一棵二叉树,它的根为 root 。请你删除 1 条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大。 由于答案可能会很大,请你将结果对 10^9 7 取模后再返回。 示例 1: 输入:root [1,2…

大规模模型训练tricks集锦

文 | Connolly知乎大规模模型训练其实就是在和计算、存储和通信玩的过程,所以我列一下跟这些相关的文章。1. 大规模模型并行策略先来介绍一下几种经典的并行范式,以及他们对应的经典文章1.1 数据并行(Data parallelism)不同设备执行相同模型,…

Spring Cloud源码分析(二)Ribbon

断断续续看Ribbon的源码差不多也有7-8天了,总算告一段落。本文记录了这些天对源码的阅读过程与一些分析理解,如有不对还请指出。 友情提示:本文较长,请选择一个较为舒适的姿势来阅读 在之前介绍使用Ribbon进行服务消费的时候&…

LeetCode 1340. 跳跃游戏 V(DP)

1. 题目 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到&#xff1a; i x &#xff0c;其中 i x < arr.length 且 0 < x < d 。i - x &#xff0c;其中 i - x > 0 且 0 < x < d 。 除此以外&#xff0c;你从下标 i 跳到下标 j 需要满足…

论文浅尝 | TKGR with Low-rank and Model-agnostic Representations

笔记整理&#xff1a;李行&#xff0c;天津大学硕士链接&#xff1a;https://arxiv.org/pdf/2204.04783v1.pdf动机现有MKGC方法中的知识转移效率低下&#xff0c;因为它们分别对每个KG进行编码并通过强制对齐的实体共享相同的嵌入来转移知识。亮点本文的亮点主要包括&#xff1…

ICLR’22 最佳脑洞奖提名:《GPT 如何进行布朗运动?》

文 | 付瑶编 | 小轶今天给大家介绍一篇斯坦福大学的 ICLR22 论文。该文在 OpenReview 中获得了8/8/8/8的高分。在写这篇推送之前&#xff0c;小编身边有多位朋友都私下向我推荐过这篇文章。虽然这几位朋友所研究的任务并不相同&#xff0c;却都认为这篇文章“极具启发性&#x…

条件随机场(Conditional Random Field,CRF)

文章目录1. 概率无向图模型1.1 模型定义1.2 概率无向图模型的因子分解2. 条件随机场的定义与形成2.1 条件随机场的定义2.2 条件随机场的参数化形式例题2.3 条件随机场的简化形式2.4 条件随机场的矩阵形式例题3. 条件随机场的概率计算问题3.1 前向-后向算法3.2 概率计算3.3 期望…

Spring Cloud构建微服务架构(七)消息总线

先回顾一下&#xff0c;在之前的Spring Cloud Config的介绍中&#xff0c;我们还留了一个悬念&#xff1a;如何实现对配置信息的实时更新。虽然&#xff0c;我们已经能够通过/refresh接口和Git仓库的Web Hook来实现Git仓库中的内容修改触发应用程序的属性更新。但是&#xff0c…

2022中国最有钱大学排名出炉!北大只能排第三

文 | 大勇源 | 抓码计算机考研4月21日&#xff0c;教育部直属高校、工信部直属高校陆续在其信息公开网公布了2022年部门预算&#xff0c;高绩对各高校2022年预算数据进行了整理&#xff0c;从中可以一窥国内重点高校的经费情况。中国有各类型、各层次高校2000余所&#xff0c;就…

图谱实战 | 百度基于异构互联知识图谱的多模内容创作技术

分享嘉宾&#xff1a;卞东海 百度 高级研发工程师编辑整理&#xff1a;蒋郭鑫 河海大学出品平台&#xff1a;DataFunTalk导读&#xff1a;由于大数据时代的发展&#xff0c;知识呈指数级增长&#xff0c;而知识图谱技术又在近年来逐步火热&#xff0c;因此诞生了利用知识图谱技…

Spring Cloud构建微服务架构(四)分布式配置中心

Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。它实现了对服务端和客户端对Spring Environment和PropertySource抽象的映射&#xff0c;所以它除了适用于Spring构建的应用程序&#xff0c;也…

华尔街投资人因股价暴跌起诉阿里巴巴,马云为起诉对象?

文 | 曹小灵知乎www.zhihu.com/question/530087383/answer/2458458738前几天发生了一个比较有意思的事情&#xff0c;直接上图&#xff1a;这新闻把我看乐了。这中国科技公司在美国股价下跌的原因&#xff0c;美国人自己不清楚么。2020年就开始闹&#xff0c;2021年落地的《外国…

Spring Cloud源码分析(一)Eureka

看过之前文章的朋友们&#xff0c;相信已经对Eureka的运行机制已经有了一定的了解。为了更深入的理解它的运作和配置&#xff0c;下面我们结合源码来分别看看服务端和客户端的通信行为是如何实现的。另外写这篇文章&#xff0c;还有一个目的&#xff0c;还是希望鼓励大家能够学…

手把手教你写出令人窒息的烂代码

源 | 机器之心在 GitHub 上有一个新项目&#xff0c;它描述了「最佳垃圾代码」的十九条关键准则。从变量命名到注释编写。这些准则将指导你写出最亮眼的烂代码。为了保持与原 GitHub 项目一致的风格&#xff0c;下文没有进行转换。读者们可以以相反的角度来理解所有观点&#x…