谷歌重磅:可以优化自己的优化器!手动调参或将成为历史!?

文 | 小轶

编 | 夕小瑶


背景

Google Brain团队发布的一篇最新论文在外网引发热议,或将成为Deep Learning发展历程上里程碑式的工作。它所讨论的,是所有AI行业者都要面对的——Deep Learning中的优化问题。也就是,如何更好地训练一个模型

深度模型的训练过程是非常困难的,常见的挑战包括:陷入局部极小值、梯度消失/爆炸、长期依赖(long dependency)等等。但对于大多数算法工程师来说其实并没有这么复杂。因为学术界早已陆续提出了许多卓有成效的优化器,比如AdaGrad、Adam、Momentum等等,都可以一定程度解决上述种种问题。而算法工程师搭完模型后,需要做的只有一件事——调参 :)

如果说深度学习的兴起为算法工程师省去了繁琐的特征工程(特征设计与特征选择),今天介绍的Google这篇工作就是致力于为大家省去繁琐的“调参工程”(优化器设计与优化器选择)。

深度学习用大量的训练数据替代了特征工程,同样的道理,这篇工作致力于用大量训练任务和模型来替代人工设计的优化器(Adam、Momentum等),这种以任务和模型为食的general-purpose的优化器模型,就称之为learned optimizer,可广泛适用于各类任务,无需手动调节优化器参数(如学习率,batch size...)。

实验不仅证明了learned optimizer的普适性,更是发现了这种优化器的一些惊人特性。比如,它甚至可以根据训练过程中的validation loss,隐性地做到正则化规约。最令人惊叹的是,该优化器甚至可以用来从头训练一个新的general-pupose优化器——也就是说,这是一个可以自己优化自己的优化器!

论文题目
《Tasks, stability, architecture, and compute: Training more effective learned optimizers, and using them to train themselves》

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

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【1020】 下载论文PDF~

方法

接下来,我们就来看看这个神仙优化器是如何训出来的。在探讨其具体模型结构之前,我们先来理清楚优化器训练所需要的是什么样的数据集,以及目标函数是什么。

优化器训练的数据集

learned optimizer(下文简称)的训练所需要的每个训练样本x都是一个需要在某任务上训练的深度学习模型,样本的标签y则是该模型在其对应任务上的开发集loss,即训练集为:

对于数据集里的每个训练样本(模型),都

  • 可以采用不同的模型结构

  • 用于完成不同的任务,称为 inner-task

  • 有属于自己的数据集,称为 inner-dataset

比如,

  • 可能是一个用于文本分类的RNN,用的inner-dataset是YELP-5

  • 可能是一个做图像分类的CNN,用的inner-dataset是数据集CIFAR-10

作者实际共设置了 6000 个不同种类的模型。涵盖了RNNs、CNNs、mask auto regressive flows、全连接网络、语言模型、VAE、simple 2D test function、quadratic bowls等...

优化器训练的目标函数

我们都知道,通常一个深度学习模型的训练就需要极大的算力支撑。而此处令人咋舌的是,按照上述设定,我们需要完成6000个模型的训练才能为learned optimizer()完成1轮训练

的一轮训练过程大致如下图所示(为说明得更加清楚,图中采用的是full batch进行参数更新,也就是每个batch直接包含全部样本):

  1. 先用训练n个(理想情况下,每个应该一直训练到收敛,但考虑到算力的问题,实际上训练240~360个step就停止了)

  2. 每个都有自己的inner-dataset,我们在它的inner-dataset的验证集上计算的损失函数

  3. 的损失函数即为所有的平均

  4. 的损失函数对其进行参数更新

优化器的结构

其实learned optimizer的概念并不是在这篇论文中首次提出来的,不过论文作者argue了learned optimizer的结构和优化器训练所基于的任务集都会非常非常影响最终learned optimizer的表现。因此本文提出了一种层级的优化器结构,实验表明优于前人提出的learned optimizer结构。

设计learned optimizer结构的关键是平衡计算效率和表达能力

ps:预训练时代的军备竞赛可以疯狂追求模型表达能力,不顾及计算效率(想想BERT和Google T5放出时的恐惧)。但是优化器模型就不能这么任性了,TPU也耗不起

因此,优化器结构一般都不会太复杂,如下图所示

上图的优化器结构是ICML2019上提出的,使用了一个全连接网络(Feed-Forward,FF)。当模型完成了一个step的训练后,就用这个FF对每个参数进行更新。FF的输入端是模型某个参数的梯度,以及该参数的其他feature(如Momentum等)。FF的输出端是w的更新值,则该参数将被更新为。注意,这个FF每跑一次,只完成了一个参数的更新

上图就是paper中提出的优化器结构了。下半部分的FF与上面ICML2019的优化器实现类似,都是用于求某个参数的更新值,称为Per-parameter FF。与之前不同的是,这个FF还会接收到全局信息(如train/valid loss),以及该参数所在张量的信息(如张量形状,gradient norm等)。相关信息来自于上方的LSTM。文中称其为Per-tensor LSTM

实验

与常见优化器的比较

下图展示了与常见优化器(AdamLR、Adam8p、opt_list)的比较结果。实验中,总共测试了100个任务下使用learned optimizer后的性能提升比例。在各个任务上提升比例分布用箱图表示。

纵轴代表了不同设置下的三个basline优化器。最上面3个Global XXX的设定是:该baseline优化器对于所有任务都采用相同的超参数。而下面6个Per Task XXX对不同任务可以采用不同超参数,括号中的XXX Trial代表尝试调参的轮数。每一种baseline,都对应了两条同色系的箱图。这是因为用于测试的100个测试任务中,有一部分是learned optimer训练过程中见过的,有一部分从未见过。同色系的两个箱图中,上面那条代表在见过的那些任务上的提升效果,另一条代表在从未见过的那部分任务上的提升效果。

图中箱图的分布并不十分集中,可见提升效果对于不同的任务也各不相同。但总体来说,与适度调参的baseline相比,都有一定程度的提升效果。

隐性的正则化惩罚项

在机器学习中,时常会在目标函数中加入正则化惩罚项,从而对模型的复杂度进行规约。下图展示了Adam和learned optimizer在优化目标函数时的收敛轨迹。显然直线上目标函数最小。但可以看到Adam会直接垂直地收敛到上。而learned optimizer在收敛过程中还会有逐渐接近原点的趋势。作者认为这是由于接近原点处的(x,y)范数较小,表明learned optimizer有隐式地进行正则化规约。

可以优化自己的优化器

最后,Google Brain团队脑洞大开地用这个learned optimizer再从头训练一个新的自己!作为比较的是,作者在训练它的时候使用的两种优化器设置(图中橙色和绿色曲线)。可以看到learned optimizer取得了非常相近的训练曲线。作者认为,这个实验进一步证明了该优化器的超强普适性。因为,对优化器进行优化是一个全新的任务,与这个优化器训练过程中见过的所有任务都完全不同。

小结

一个可以不用调参、适用于所有训练任务的优化器。如此的脑洞大开、又敢想敢做,不知道除了Google还有哪里可以。

萌屋作者:小轶

刚刚本科毕业于北大计算机系的美少女学霸!目前在腾讯天衍实验室做NLP研究实习生。原计划是要赴美国就读CMU的王牌硕士项目MCDS,不过因为疫情正处于gap year,于是就来和小夕愉快地玩耍啦~文风温柔优雅,偶尔暴露呆萌属性,文如其人哦!知乎ID:小轶。

作品推荐:

1.有钱可以多任性?OpenAI提出人肉模型训练,文本摘要全面超越人类表现!

2.ACL20 Best Paper揭晓!NLP模型评价体系或将迎来重大转折

3.Attention模型:我的注意力跟你们人类不一样

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

有顶会审稿人、大厂研究员、知乎大V和妹纸

等你来撩哦~

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

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

相关文章

最全目标检测相关资料整理 (目标检测+数据增强+卷价神经网络+类别不均衡...)

1 小目标检测:综述:综述论文Augmentation for small object detection深度学习笔记(十)Augmentation for small object detection(翻译) 吴建明wujianning:小目标检测的增强算法 机器之心&#…

论文浅尝 | 基于未知谓词与实体类型知识图谱的 Zero-Shot 问题生成

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:NAACL 2018链接:https://www.aclweb.org/anthology/N18-1020问题背景与动机问题生成的目标是将知识图谱三元组作为输入,生成自然语…

阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

内容大纲: 1.介绍Restful、SOAP、RPC、SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的…

微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较

在微服务架构中,分布式通信、分布式事务、分布式锁等问题是亟待解决的几个重要问题。 Spring Cloud是一套完整的微服务解决方案,基于 Spring Boot 框架。确切的说,Spring Cloud是一个大容器(而不是一个框架)&#xff…

经典教材《统计学习导论》现在有了Python版

文 | 张倩源 | 机器之心《统计学习导论》很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现。斯坦福经典教材《The Element of Statistical Learning》(简称 ESL)被称为频率学派的统计学习「圣经」&#xff0…

漆桂林 | 人工智能的浪潮中,知识图谱何去何从?

本文转载自公众号:AI科技大本营。近年来,随着人们对 AI 认知能力的积极探索,知识图谱因其表达能力强、拓展性好,基于知识进行推理等优势得到了学界与业界的高度关注。知识图谱,旨在描述客观世界概念、实体、事件及其之…

LeetCode 102. 二叉树的层次遍历(BFS)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回其层次遍历结果:[[3]…

阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较

本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程。 …

数码摄影(扫街)

快门速度: 快门速度是曝光控制的一个重要变量,能够控制光线进入的多少。 快门的速度越快,时间越短,通过的光线就越少,反之,则越多。 在很好光线下,1/125s就能清晰地捕捉到行走中的人物。 阴天…

论文浅尝 | 让“演进知识图谱”带你“瞻前顾后”看世界

本文转载自公众号:爱思美谱。 指导老师 | 傅洛伊 王新兵核心技术成员 | 刘佳琪导读在前面几期的内容中,小编已经为大家介绍了知识图谱的产生历史和基本概念。相信大家已经对知识图谱强大的信息结构化能力有所了解。但是,目前的大部分知识…

做过leader,会数仓,项目经验丰富,能值多少钱?

有个朋友,上个月准备从 Java 转做大数据,一个月过去了,一份面试都没约到,来问我怎么回事。我一看简历,期望年薪 40w,深度也不够,要大项目也没有。我们做大数据的,虽说是薪资高&#…

LeetCode 98. 验证二叉搜索树(中序遍历)

文章目录1. 题目信息2. 解题2.1 递归中序2.2 非递归中序1. 题目信息 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和…

阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景

什么是 Zookeeper Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如: 统一命名服务 状态同步服务 集群管理 分布式应用配置项的管理等 Zookeeper已经成为Hadoop生态系统…

GNN学习一

一、为什么使用图卷积 传动的深度学习方法,比如卷积网络,效果很好,但是它研究的对象是Euclidean data,这种数据的特征就是有规则的空间结构,比如图片是规则的正方形格子,比如语音是规则的一维序列。这些数…

禁术级竞赛刷分技巧:找到跟测试集最接近的有标签样本

文 | 苏剑林单位 | 追一科技编 | 兔子酱不管是打比赛、做实验还是搞工程,我们经常会遇到训练集与测试集分布不一致的情况。一般来说我们会从训练集中划分出来一个验证集,通过这个验证集来调整一些超参数[1],比如控制模型的训练轮数…

论文浅尝 | 最新10篇《知识图谱》论文推荐(ICML, CVPR, ACL, KDD, IJCAI 2019)

本文转载自公众号:专知。【导读】知识图谱一直是研究热点,研究者近年来广泛关注知识图谱嵌入(Knowledge Graph Embedding,简称KGE)方法,在保留语义的同时,将知识图谱中的实体和关系映射到连续的…

详解RPC远程调用和消息队列MQ的区别

谈到分布式架构,就不得不谈到分布式架构的基石RPC。 什么是RPC RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。 RPC服务框架有哪些 知名度较高的有Thrift&#x…

GNN学习二

基于频谱的图卷积和基于空间的图卷积 (在图上做傅里叶变换?) 图时间空间网络-交通上车流速度和红绿灯

技术动态 | eBay开源分布式知识图谱存储Beam,支持类SPARQL查询

本文转载自公众号:AI前线。作者 | Diego Ongaro,Simon Fell 译者 | 盖磊 编辑 | Natalie AI 前线导读:eBay 工程人员于 5 月 1 日在 官方技术博客 上发布了开源的分布式知识图谱存储 Beam,Beam 实现了事实数据的 RDF 存储&#xf…

2020国内互联网公司的开源项目及Github地址部分汇总

2020国内互联网公司的开源项目及Github地址部分汇总 一、Alibaba 阿里巴巴 阿里巴巴的开源项目很多,都说国内Java公司的技术架构大部分来自阿里系,而且还有很多重量级的项目,例如LVS、Tengine,或者很有实践价值的中间件&#xf…