来源:智源社区

为了进一步解读这一工作背后的意义,智源社区采访了论文一作、微软研究院高级研究员Greg Yang(杨格)。采访中,我们不仅了解了µTransfer的背景,以及项目背后更为远大的目标,也了解到了Greg本人奇特的跨界人生。

图注:Greg Yang

01

从DJ到研究数学:在自由探索中对AI产生兴趣

1.在哈佛期间两度休学,寻找方向

出于对数学的兴趣,Greg一开始就进入了哈佛大学数学系。由于哈佛大学有着非常宽容的休学政策——学生可以随时离开校园,也可以随时回来——Greg下定决心,在读完大二后选择追求音乐之路。

图注:Greg在哈佛大一时表演架子鼓

在一年半的时间中,他从生活的“仓鼠笼”中走出来,好好规划自己的人生。这段时间他可以尽情探索自己的兴趣。

图注:成为DJ的Greg

Greg在这期间得出了以下结论:

  1. 他将致力于实现通用人工智能(AGI):能够制造一个比自己还要聪明的东西,并淘汰掉他自己,是一个“intellectually”极其激动的事情。

  2. 他对数学有着内在的激情:由于一系列可预测的课程、作业和竞赛等,他对学习和研究数学的热情变得麻木了。但这次休学让他恢复了往日对数学这一学科的热爱。

  3. 数学是我们现实的底层逻辑:它是一切科学和工程的基础语言(Foundation Language),而重大的突破,往往来自揭示问题背后的一些隐藏着的数学结构。即使是不怕数学本身,就能够提供足够的自信,来尝试解决困难的问题,提出新的点子。

休学一年半后,Greg回到哈佛,出版了自己的第一篇论文。之后他再次休学,完成阅读教科书等方面的事情。

在第二次休学期间,深度学习开始快速发展,他痴迷于研究神经图灵机,并借鉴了可微拓扑学中的思路,提出了“Lie Access Neural Turing Machine”,并发表在ICLR上。

同样在那段时期,他发现代数拓扑学和学习理论中的一个有趣的联系。例如,VC维(Vapnik–Chervonenkis Dimension)描述学习一个任务的困难程度的方法,但可以被一个和任务有关的拓扑空间中的“洞”的维度所捕捉到。这种联系可以帮助证明一些计算复杂度的问题。当时他不知道的是,这个研究会成为他职业生涯的起点

2.机缘巧合,师从丘成桐,与弗里德曼和沈向洋结缘

第二次休学两年后,Greg回到哈佛。每个学期,数学系会为每个学生随机指定一位学术导师。他导师是获得了1982年菲尔兹奖的丘成桐。他表示,当时他根本没有意识到日后丘成桐带来的影响。

在一次例行会议上,Greg告诉丘成桐他正在写的这篇关于代数拓扑和学习理论的论文。Greg对丘成桐的早期印象是:“有着很重口音的英语,表情十分平静”,在这会议上让他很难悟解丘成桐对他研究的看法。但此后丘成桐开始带他去很多活动,与PhD学生和研究者会面,甚至还推荐他申请摩根奖(Morgan Prize),这是对本科数学家而言能够获得的最高荣誉,最终他获得了提名。

图注:Greg与美国数学家、摩根奖的发起者Frank Morgan的合影

丘成桐的推荐也影响了Greg的职业路径。

毕业前,他申请了谷歌大脑的实习,但offer还未下来,需要在学校多待一段时间。丘成桐得知后提议:“试试微软怎么样?(How about Microsoft?)”

在老师的推荐下,Greg收到了时任执行副总裁沈向洋的邮件,在与微软新英格兰研究院主管Jennifer Chayes沟通后,他联系上了另一位菲尔茨奖得主——迈克尔·弗里德曼。

也许是因为两人都是在计算领域研究的拓扑学家,也许是因为两人性格上都是“数学领域的冲浪好手”,与弗里德曼的交流很有共鸣。一周后,沈向洋向他发出了加入微软的邀请:“有两位菲尔茨奖得主推荐你,我要是再拒绝就显得太傻了,不是吗?”

就这样,Greg在2017年全职加入微软雷蒙德研究院,并在那里从事研究至今。

谈及这样的经历,Greg表示,这是一件非常幸运的是,毫不夸张地说,甚至是百万分之一概率的事情——如果当初丘成桐没有随机成为他的导师就不可能有今天。当然,他所做的研究足够好,也是沈向洋能够选择他的原因。

02

µTransfer:大模型超参数的“以小见大”

近日,微软研究院团队联合OpenAI提出了Efficient Hyperparameter Tuning(µTransfer)的方法。但是在采访中,Greg解释了µTransfer项目背后的长远目标——用数学的语言,建立能够描述和分析神经网络架构的底层编程语言,即Tensor Programs。

1.背景:不确定且高成本的大模型调参

模型的超参数配置,在模型规模扩大时,不一定是最优的。大模型也需要找到合适的超参数配置,否则模型可能无法训练得符合性能需求。

图注:在不同的神经网络宽度下,学习率(log_2)和训练损失之间变化情况。不同宽度的网络可能有着不同的最优超参,更宽的网络不一定会比窄的网络性能更好。

但是,由于模型过于庞大,很多中小研究团队的成本只够训练一两次模型。由于研究团队或多或少会“把所有鸡蛋都放在一个篮子里”,任何在预训练阶段背离训练目标的问题,都会带来巨大的时间和成本消耗。

例如,GPT-3论文就提到,虽然训练过程中有一个Bug,但是他们无法再重训模型,只能忽视这个问题。此外,选错了超参数,也会带来非常严重的资源浪费。有时候,错误的超参数设置可能会使模型在训练一个月后才发现配置有问题。

因此,在训练大模型时,超参数的配置总会面临一些不确定因素,而且研究者很难通过多次训练来确保超参配置是正确的。

为了解决这个问题,µTransfer应运而生。

2.µTransfer:建立模型规模扩大时的超参变化规则

µTransfer的思路并不复杂:µTransfer是一种在改变神经网络宽度过程中,同时改变其对应的初始化权重、学习率等超参数的规则。其特别之处在于,如果在一个“窄”的模型中找到了合适的超参配置(初始化、学习率、动量,甚至是每一层的超参组和),µTransfer就能够推导出更大版本的模型下,接近于最优的超参数配置。

图注:µTransfer的基本思路

这样一来,在为超大规模模型寻找合适的超参数时,研究人员可以先从该种架构的小规模版本模型上找到合适的超参数,然后用µTransfer的方法扩大到对应的更大规模版本上。这意味着,研究者能够在小模型上找到一组超参,然后通过一定的规则,推导出大模型下的超参配置,而不需要对大模型进行训练并寻找最优参数。在这一过程中,激活规模(Activation Scales)能够保持稳定。

图注:模型宽度增长时,在PyTorch的默认超参和µTransfer超参调整下,模型激活规模的变化情况

在这里,激活(Activations)指的是神经网络的一个层的向量输出的元素(Vector Output),而激活规模指的是此向量元素的标准差或平均绝对值。

当模型的宽度增加时,保持激活规模的稳定非常重要,原因在于两点:

  1. 如果激活规模不稳定,激活最终会变得无法被低精度浮点数(如FP16)所表示,这会导致在训练一个大的模型时,出现很多NaNs,导致训练的中断;

  2. 当宽度趋近无限时,保持激活稳定对于找到一个合理的超参数范围很重要,也是超参数迁移的必要条件。

3.证明µTransfer的正确性:保持稳定的超参变化

怎样证明µTransfer是最大化特征学习的最优?可以从理论和实践两个方面验证。理论上,正确的参数化方法应该是独一无二的,即使是在模型规模变化的时候,依然能够保持最优的学习率、初始化权重和其他训练超参数。但错误的参数化方法,会让超参数在模型规模变大的过程中逐渐趋向无限或0。

而在实践中,如果能够找到某一种模型在特定规模下的最优化参数,在模型规模发生变化的过程中,也应当能维持最优配置,模型也保持最优的性能。

03

µTransfer背后的远大项目:建立描述神经网络架构的统一编程语言Tensor Programs

Greg表示,µTransfer仅仅只是其Tensor Programs项目的一个成果,但团队背后更期望的是找到一种合适的“低层编程语言”,分析并描述神经网络的函数,即Tensor Programs。

1.低层神经网络描述语言:Tensor Programs

在AI领域,有一个问题长期以来被研究者所忽视:怎样能够为不同架构的模型都找到合适的初始化配置?换言之,是否有一个统一的规则,能够根据模型的架构,分析出其最优的初始化超参数配置,确保模型训练的稳定性?

Greg认为,长期以来这一问题没有被研究者完全解决。在2017年的时候,默认的初始化都是从粗糙的启发式方法中得出的,保证每个神经网络层的激活与网络的宽和深保持稳定。在当时,研究者每提出一个新的架构,都需要单独撰写初始化策略——因为没有一个通用的方法,能够分析出新网络所需的初始化策略。

在尝试统一不同神经网络架构的初始化启发方法时,Greg发现:存在一种“低层编程语言”,仅由矩阵乘法(Matrix Multiplication)和激活函数(Coordinatewise Nonlinearities)组成。如果神经网络函数能够使用这种语言表达,就可以自动且完备地进行初始化分析,这一语言被称为Tensor Programs(TP)。

例如,“神经网络-高斯过程”的对应,即“无限宽随机神经网络是高斯过程”,源于研究者对于一些简单架构的神经网络的观察和研究。TP的一项研究证明,这种与高斯过程的对应关系,可以扩大到任何架构的神经网络上。(见论文:Tensor Programs I: Wide Feedforward or Recurrent Neural Networks of Any Architecture are Gaussian Processes)

2.Tensor Programs的潜力:分析神经网络的最佳学习状态

以上说明了TP可以像ONNX一样能够表示任何神经网络架构,但很快地,Greg意识到TP更像PyTorch,其实能够表达整个神经网络的训练算法。这种强大的表达性可以用来分析神经网络训练后的状态。

他比喻说,“就像由简单水分子构成的水,在不同的温度下有不同的状态,而这不同状态的背后,是水分子之间也表现出的不同结构。”类比而言,我们也可以想象:在不同的学习率和初始化权重下,神经网络可能呈现出的不同状态。而不同的参数设置,在网络宽度增加时,对于网络的行为的影响也不一样。

通过此顿悟,Greg提出了一种无限宽神经网络极限的分类,能够推导出无限宽神经网络的最大特征学习极限,并衍生出了“最大更新参数化”(Maximal Update Parametrization,即µ-Parametrization)。这是 µTransfer的理论基础。

在这项研究刚开始的2019年,很多“无限宽神经网络是核机器”的研究涌现,从理论上显示,宽神经网络的行为,在默认的(PyTorch或TensorFlow风格)参数化条件下,是核机器(Kernel Machine)。这种核机器状态下的神经网络就像是水的凝固态——冰。非常坚固,有着固定的结构,对应着一些固定的、而非可学习的特征。而µ-Parametrization的特征学习状态更像是流体——对于环境(如数据)有着适应性。

图注:目前已经发表的TP论文

3.Tensor Programs的未来:探索AI研究的“万物理论”

谈及未来Tensor Programs的发展,他期待,团队可以在现有工作的基础上,解决其他维度的模型规模问题,比如模型的深度、MoE架构中专家的数量等——即,从理论上找到无限规模(比如无限深、无限专家数量,甚至是无限宽-深-专家数)的神经网络的基线,并得出对应规模下的超参数迁移规则。

Greg认为,Tensor Programs依然有足够的潜力来影响深度学习,特别是大型基础模型的实践工作,这一工作在他看来,就如同去寻找AI中的“万物理论”。

被问及在超大规模模型中的研究机会,Greg认为,这就像是21世纪的曼哈顿计划一样,其规模如此庞大,纯用实验-试错方法是很难来推动的。他认为,可以通过借鉴无限宽神经网络理论,来理解这种超大参数规模模型的行为。由于目前的理论与实践之间仍存在着鸿沟,这对于年轻研究者而言是一个机会。

Greg列举了8个可以在大模型领域持续探究的基础问题:

  1. 实现正则化超参数的迁移:这对于大模型在小数据集上的微调非常重要,因为模型可能会过拟合数据。

  2. 能否找到所有可能的无限规模神经网络极限?“规模”可以包括宽、深、专家数、序列长度等;

  3. 能否跨宽、深、专家数、序列长度等迁移超参数?

  4. 能否跨数据集迁移超参数?

  5. 能否迁移模型结构和优化器选择?

  6. 从极其小的神经网络模型迁移超参数的方法,如只有10个神经元的网络;

  7. 将一个小神经网络超高清地放大到一个更大更高性能的网络上;

  8. 给定用于预训练的固定 FLOPs 预算,权衡模型宽度、深度、训练时间、序列长度等的最佳方法是什么?

04

给年轻人的职业建议

Greg认为,他的职业发展经历并不典型,但他也提出了一些个人的职业发展建议:

  • 在你大学的早年阶段,在你想研究和投入的任何领域打下坚实的基础。

  • 在学校中要认识各种各样的人,并向他们学习。大学最大的好处不是受到的教育,而是接触到的人。

  • 找到自己独有的技能,并专注于发展你的优势

  • 一旦拥有强大的基础和独特的技能,就对自己充满信心。

  • 不要害怕怀有一个宏伟的长期愿景并执行它。

  • 下注。不管是什么领域,无论是不是做研究,合理地分配时间和精力都存在着不确定性。使用你独特的技能,尽可能减少不确定性,向着最好的方向,怀着信念前进。

  • 无论处于职业的哪个阶段,都要谦虚,向他人学习。

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)大脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

专访微软Greg Yang,构建神经网络的底层语言,探索AI的“万物理论”相关推荐

  1. 微软ATP智汇十二道场 · 探索AI 驱动转型(北京专场)

    为了推动微软与苏州人工智能产业创新中心共同构建企业级AI创新生态圈,微软ATP定于2023年3月3日在微软亚太研发集团总部(北京)举办"微软ATP智汇十二道场 · 探索AI 驱动转型&quo ...

  2. TensorSpace:一套用于构建神经网络3D可视化应用的框架

    作者 | syt123450.Chenhua Zhu.Yaoxing Liu (本文经原作者授权转载) 今天要为大家推荐一套超酷炫的,用于构建神经网络 3D 可视化应用的框架--TensorSpace ...

  3. 专访微软全球资深副总裁:中国AI正在爆发式崛起,千万不要复制美国,要建立自己的模式,才能做领导者

    记者 | 周翔 编辑 | 鸽子 近日,在微软亚洲研究院与哈工大共同举办的第十九届"二十一世纪的计算"国际学术研讨会上, Peter Lee 博士作为微软全球资深副总裁, 也来到了现 ...

  4. R使用neuralnet包构建神经网络回归模型并与线性回归模型对比实战

    R使用neuralnet包构建神经网络回归模型并与线性回归模型对比实战 目录 R使用neuralnet包构建神经网络回归模型并与线性回归模型对比实战 <

  5. 理解神经网络,从简单的例子开始(1)7行python代码构建神经网络

    理解神经网络,从简单的例子开始(1)7行python代码构建神经网络 前言 本文分为两个部分,第一个部分是一个简单的实例:9行Python代码搭建神经网络,这篇文章原文为:原文链接, 其中中文翻译版来 ...

  6. 9步教你用NumPy从头开始构建神经网络!

    https://www.toutiao.com/a6693296472533762574/ 动机 如果你是一个了解神经网络如何工作的初级数据科学家,或者只是对深度学习有所了解的机器学习爱好者,那么这篇 ...

  7. pytorch神经网络因素预测_实战:使用PyTorch构建神经网络进行房价预测

    微信公号:ilulaoshi / 个人网站:lulaoshi.info 本文将学习一下如何使用PyTorch创建一个前馈神经网络(或者叫做多层感知机,Multiple-Layer Perceptron ...

  8. TensorFlow2.0(三)--Keras构建神经网络回归模型

    Keras构建神经网络回归模型 1. 前言 1. 导入相应的库 2. 数据导入与处理 2.1 加载数据集 2.2 划分数据集 2.3 数据归一化 3. 模型构建与训练 3.1 神经网络回归模型的构建 ...

  9. TensorFlow2.0(二)--Keras构建神经网络分类模型

    Keras构建分类模型 1. tf.keras简介 2. 利用tf.keras构建神经网络分类模型 2.1 导入相应的库 2.2 数据读取与展示 2.3 数据归一化 2.4 构建模型 2.5 模型的编 ...

最新文章

  1. easyui placeholder 解决方案
  2. Java图片处理(二)图片加水印
  3. python open ascii codec cant_Python3.6 报错问题:'ascii' codec can't encode character
  4. ESXI6.7虚拟机配置LACP静态汇聚端口网络负载均衡分流
  5. 负载均衡mysql的使用_使用负载均衡集群集化 MySQL - Azure Virtual Machines | Microsoft Docs...
  6. 联想小新触摸板驱动_联想笔记本触摸板驱动下载
  7. 通信网络基础知识复习
  8. 三星升级助手无法连接服务器,三星S 换机助手不能连接手机怎么办?
  9. TranslateAnimation解析
  10. 查看windows电脑凭证密码 -Invoke-WCMDump
  11. Oracle用户、身份、数据类型、和mysql的区别
  12. PSI(隐私集合求交集)的几类基础思想
  13. 【PHP问题解决办法】Deprecated: Function eregi() is deprecated in
  14. 8box这件事欠考虑
  15. Zend_Cache
  16. java poi生成word
  17. IMP-00003 ORA-00942 IMP-00023 IMP-00000
  18. RadioButtonList 横着排列
  19. GeForce MX150相对应的NVIDIA CUDA版本_七彩虹ProMaster A1设计师电脑评测:RTX 3080加持 生产力大提升|七彩虹|gpu|nvidia|amd|英特尔|显卡...
  20. 7 Hive数据仓库

热门文章

  1. Linux驱动开发中与设备树相关的6种debug方法
  2. 输入一个数3256,将他从小到大输出,就是2356
  3. 给你准备的Linux启动流程
  4. C语言中sizeof详解——面试C/C++
  5. linux hosts文件如何修改_3 种方法教你在 Linux 中修改打开文件数量限制
  6. 苹果企业证书_苹果签名经常掉签原因大汇总
  7. LeetCode 2109. 向字符串添加空格
  8. 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)
  9. LeetCode 720. 词典中最长的单词(Trie树)
  10. java 中batch_java相关:Mybatis中使用updateBatch进行批量更新