ICLR2020满分论文 | 为什么梯度裁剪能加速模型训练?

一只小狐狸带你解锁 炼丹术&NLP 秘籍

作者:苏剑林(来自追一科技,人称“苏神”)

前言

需要许多时间步计算的循环神经网络,如LSTM、GRU,往往存在梯度爆炸的问题。其目标函数可能存在悬崖一样斜率较大的区域,这是由于时间步上几个较大的权重相乘导致的。当参数接近这样的悬崖区域时,如果更新梯度不足够小,很有可能就会直接跳过这样的悬崖结构,然后被弹射到非常远的地方。梯度裁剪(gradient clipping),是这类问题的常用解决办法。它的核心思想就是根据目标函数的光滑程度对梯度进行缩放[1]

本文介绍来自MIT的一篇ICLR2020满分论文《Why gradient clipping accelerates training: A theoretical justification for adaptivity》。顾名思义,这篇论文就是分析为什么梯度裁剪能加速深度学习的训练过程。原文很长,公式很多,还有不少研究复杂性的概念,说实话对笔者来说里边的大部分内容也是懵的,不过大概能捕捉到它的核心思想:引入了比常用的L约束更宽松的约束条件,从新的条件出发论证了梯度裁剪的必要性。本文就是来简单描述一下这个过程,供读者参考。

论文链接:https://arxiv.org/pdf/1905.11881.pdf

Arxiv访问慢的小伙伴也可以在订阅号后台回复关键词【0615】下载论文PDF。

梯度裁剪

假设需要最小化的函数为就是优化参数,那么梯度下降的更新公式就是(滑动查看完整公式

其中就是学习率。而所谓梯度裁剪(gradient clipping),就是根据梯度的模长来对更新量做一个缩放,比如

或者

其中  ,是一个常数。这两种方式都被视为梯度裁剪,总的来说就是控制更新量的模长不超过一个常数。其实从下面的不等式就可以看到其实两者基本是等价的:

L约束

有不少优化器相关的理论结果,在其证明中都假设了待优化函数的梯度满足如下的L约束:

由于  是梯度的波动程度,实际上衡量的就是  的光滑程度,所以上述约束也称为“L光滑性条件(L-smooth)”[2]。值得提醒的是,不同的场景可能会需要不同的L约束,比如有时候我们要假设模型输出关于输入满足L约束,有时候我们要假设模型输出关于参数满足L约束,而上面假设的是模型 loss 的梯度关于参数满足L约束。如果条件 (5) 成立,那么很多优化问题都将大大简化。因为我们可以证明[3]

对于梯度下降来说,,代入上式得到

因此,为了保证每一步优化都使得  下降,一个充分条件是  ,即  ,而  的最小值在  时取到,所以只需要让学习率为  ,那么每步迭代都可以使得  下降,并且下降速度最快。

放松约束

条件 (5) 还可以带来很多漂亮的结果,然而问题是在很多实际优化问题中条件 (5) 并不成立,比如四次函数  。这就导致了理论与实际的差距。而本文要介绍的论文,则引入了一个新的更宽松的约束:

也就是将常数  换成动态的  ,原文称之为“(L0, L1)-smooth”,这里也称为“(L0, L1)约束”。显然这个条件就宽松多了,比如可以检验  是满足这个条件的,因此基于此条件所推导出的理论结果适用范围会更广。

在新的约束之下,不等式 (6) 依旧是成立的,只不过换成对应的动态项:

代入得到

所以很明显了,现在要保证每一步下降,那么就要求

以及最优学习率是

这就导出了梯度裁剪 (3)。而保证了每一步都下降,那么就意味着在优化过程中每一步都没有做无用功,所以也就加速了训练过程。

作者们是怎么提出这个条件 (8) 的呢?论文中说是做实验观察出来的:观察到损失函数的光滑程度与梯度模长呈“线性相关”关系.png,如下图所示。但笔者感觉吧,至少应该还有些从结果反推的成分在里边,不然谁那么无聊会去观察这两者的关系呢?

文章小结

本文简要介绍了ICLR2020的一篇分析梯度裁剪的满分论文,主要思路是引入了更宽松普适的假设条件,在新的条件下能体现出了梯度裁剪的必要性,并且由于放松了传统的约束,因此理论结果的适用范围更广,这也就表明,梯度裁剪确实是很多场景下都适用的技巧之一。

参考文献

[1]

参考文献 lan Goodfellow et. al, "Deep Learning", MIT press, 2016

[2]

关于L约束可以作者其他博客: 《深度学习中的Lipschitz约束:泛化与生成模型》、《BN究竟起了什么作用?一个闭门造车的分析》。

[3]

证明过程可参考https://kexue.fm/archives/6992。

  • 万能的BERT连文本纠错也不放过

  • 面试必备!卖萌屋算法工程师思维导图—统计机器学习篇

  • 告别自注意力,谷歌为Transformer打造新内核Synthesizer

  • NLP中的少样本困境问题探究

  • ACL20 | 让笨重的BERT问答匹配模型变快!

  • 7款优秀Vim插件帮你打造完美IDE

  • 卖萌屋原创专辑首发,算法镇魂三部曲!

夕小瑶的卖萌屋

_

关注&星标小夕,带你解锁AI秘籍

订阅号主页下方「撩一下」有惊喜哦

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

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

相关文章

快手高级Java四轮面试题:设计模式+红黑树+Java锁+Redis等

快手Java一面(一个小时十分钟) 1.自我介绍 2.说说B树和B树的区别,优缺点等? 3聊聊Spring,主要IOC等等 4多线程JUC包下的一些常见的类,比如CountDownLatch、Semaphore等 5.锁的概念,锁相关的…

数据结构--跳表SkipList

对单链表查找一个元素的时间复杂度是 O(n)通过对链表建立多级索引的结构,就是跳表,查找任意数据、插入数据、删除数据的时间复杂度均为 O(log n)前提:建立了索引,用空间换时间的思路(每两个节点建立一个索引)索引节点总和 n/2n/4n…

领域词汇知识库的类型、可用资源与构建技术漫谈

词是语言系统中重要的语言单元,词语是开展文本处理的基础,在语义表示上具有比字符更丰富的表达能力。词语具有领域特性,不同的领域具有不同的词汇体系,如军事领域、医疗领域、公共治安领域、金融领域之间存在着很大的差异性。这种…

论文浅尝 | EARL: Joint Entity and Relation Linking for QA over KG

Mohnish Dubey, Debayan Banerjee, Debanjan Chaudhuri, Jens Lehmann: EARL: Joint Entity and Relation Linking for Question Answering over Knowledge Graphs. International Semantic Web Conference (1) 2018: 108-126链接:https://link.springer.com/conten…

百度高级Java三面题目!涵盖JVM +Java锁+分布式等

百度高级Java一面 自我介绍 对象相等的判断,equals方法实现。 Hashcode的作用,与 equal 有什么区别? Java中CAS算法? G1回收器讲一下? HashMap,ConcurrentHashMap与LinkedHashMap的区别 如何在多线程环…

python--从入门到实践--chapter 12 pygame_Alien_Invasion

安装pygame包,把安装好的包copy一份到pycharm工程目录下,不然找不到pygame包 抄一遍书上的代码: settings.py class Settings():def __init__(self):self.screen_width 1200self.screen_height 800self.bg_color (255, 255, 255)self.s…

实时事理学习与搜索平台DemoV1.0正式对外发布

我们团队探索了一种将事件、概念、逻辑、实时学习、多类知识库实时更新串起来的知识服务新模式。一个面向事理的实时学习和搜索系统Demo,取名叫“学迹”,取自“学事理,知行迹”。 项目地址:https://xueji.zhiwenben.com 一、 “学…

卖萌屋算法工程师思维导图part3—深度学习篇

卖萌屋的妹子们(划掉)作者团整理的算法工程师思维导图,求职/自我提升/查漏补缺神器。该手册一共分为数据结构与算法、数学基础、统计机器学习和深度学习四个部分。下面是第三部分深度学习的内容~公众号后台回复【思维导图】获取完整手册&…

论文浅尝 | Zero-Shot Transfer Learning for Event Extraction

事件抽取的目标是在非结构化的文本中确认事件的触发词(Eventtrigger)和参与者(Event argument),并判断触法词的事件类型(Eventtype),判断参与者在事件中的扮演的角色(Arg…

今日头条Java后台Java研发三面题目

最近有同学在优知学院留言区留言是否能发布今日头条的面试题目,这位同学,题目来了哦~ 一面 concurrent包下面用过哪些? countdownlatch功能实现 synchronized和lock区别,重入锁 thread和runnable的区别 AtomicInteger实现原理…

实时事理逻辑知识库(事理图谱)终身学习项目-EventKGNELL(学迹)

EventKGNELL EventKGNELL, event knowlege graph never end learning system, a event-centric knowledge base search system,实时事理逻辑知识库终身学习和事件为核心的知识库搜索项目。包括事件概念抽取、事件因果逻辑抽取、事件数据关联推荐与推理。 项目地址&…

python--从入门到实践--chapter 15 16 17 生成数据/下载数据/web API

1.随机漫步 random_walk.py from random import choice class RandomWalk():def __init__(self, num_points5000):self.num_points num_pointsself.x_value [0]self.y_value [0]def fill_walk(self):while len(self.x_value) < self.num_points:x_direction choice([1…

ACL2020 | 基于Knowledge Embedding的多跳知识图谱问答

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;舒意恒&#xff08;南京大学硕士生&#xff0c;知识图谱方向&#xff09;背景什么是知识图谱问答&#xff1f;知识图谱&#xff08;KG&#xff09;是一个多关系图&#xff0c;其中包含数以百万计的实体&#xff0c;以及…

论文浅尝 | 基于超平面的时间感知知识图谱嵌入

链接&#xff1a;http://talukdar.net/papers/emnlp2018_HyTE.pdf本文主要关注 KG embedding 中三元组成立的时间有效性问题&#xff0c;比如三元组(Cristiano Ronaldo, playsFor, Manchester United)&#xff0c;其成立的有效时间段是2003年到2009年&#xff0c;这个使三元组有…

Java面试进阶:Dubbo、Zookeeper面试题锦集

Dubbo面试题锦集 1、默认也推荐使用netty框架&#xff0c;还有mina。 2、默认是阻塞的&#xff0c;可以异步调用&#xff0c;没有返回值的可以这么做。 3、推荐使用zookeeper注册中心&#xff0c;还有redis等不推荐。 4、默认使用Hessian序列化&#xff0c;还有Duddo、FastJ…

POJ 1064 分割线缆(二分查找)

题目链接&#xff1a;http://poj.org/problem?id1064 题目大意&#xff1a;多根电缆切成指定段数&#xff08;每段相同长度&#xff09;&#xff0c;求每段线缆的最大长度&#xff08;精确到0.01&#xff09; 这题精度控制是难点&#xff0c;方法很简单&#xff0c;二分查找…

Learning to rank基本算法小结

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/26539920 Learning to rank基本算法小结最近工作中需要调研一下搜索排序相关的方法&#xff0c;这里写一篇水文&#xff0c;总结一下几天下来的调研成果。包括Learning to rank 基本方法Learning to rank 指标介绍LambdaMART…

命名实体识别难在哪?

亚里士多德在《形而上学》中认为&#xff0c;对于存在&#xff0c;最重要的问题&#xff0c;就是给世间万物的存在基于语言来分层和分类。从神说要有光起&#xff0c;到基友给你取了个外号叫狗蛋。你会发现&#xff0c;创造与命名&#xff0c;在历史中往往等同。名字是自我概念…

论文浅尝 | 面向简单知识库问答的模式修正强化策略

链接&#xff1a;http://aclweb.org/anthology/C18-1277知识库问答研究旨在利用结构化事实回答自然语言问题&#xff0c;在网络中&#xff0c;简单问题占据了相当大的比例。本文提出在完成模式抽取和实体链接后&#xff0c;构建一个模式修正机制&#xff0c;从而缓解错误积累问…

最全BAT数据库面试89题:mysql、大数据、redis

数据库 mysql面试题目&#xff1a; MySQL InnoDB、Mysaim的特点&#xff1f; 乐观锁和悲观锁的区别&#xff1f;&#xff1f; 行锁和表锁的区别&#xff1f; 数据库隔离级别是什么&#xff1f;有什么作用&#xff1f; MySQL主备同步的基本原理。 如何优化数据库性能&#…