知行编程网知行编程网  2022-05-25 15:00 知行编程网 隐藏边栏 |   抢沙发  24 
文章评分 0 次,平均分 0.0

谷歌开源Neural Tangents:简单快速训练无限宽度神经网络

选自 | Google AI Blog
转自 | 机器之心    参与 | Panda
无限宽的神经网络可以训练了?神经正切核果然可以发挥作用了。
近日,谷歌一项研究成果在社区引发了关注,该研究宣称可通过神经正切核(Neural Tangent Kernel)使用贝叶斯推理或梯度下降分析式地训练无限宽度的神经网络。使用谷歌开源的软件库 Neural Tangents,这个过程不仅简单且快速,而且效果非常好,甚至只需 5 行代码就能一步到位地构建并训练这种无限宽度网络的集成模型!该论文已被 ICLR 2020 接收为 Spotlight 论文,相关链接见文末。

在自然语言处理、会话智能体和连接组学等许多领域,深度学习都已取得了广泛的成功,机器学习领域的研究图景也已经发生了变革。不过,仍还有一些有趣而又重要的问题有待解答,比如:为什么即使在过度参数化时,深度神经网络(DNN)也能取得非常好的泛化能力?深度网络的架构、训练和性能之间有何关系?如何提取出深度学习模型中的显著特征?

我们何以在近些年里取得了如此的进步?一大关键理论见解是:增加 DNN 的宽度能使 DNN 的行为更有规律可循,也就人更容易理解它们。近来的许多研究已经表明,宽度可无限扩增的 DNN 可以收敛成另一类更为简单的名为「高斯过程(Gaussian processes)」的模型。因此,贝叶斯推理与卷积神经网络的梯度下降情况等复杂现象便可约简为简单的线性代数方程。从这些无限宽度网络所得到的见解通常也适用于它们对应的有限版本。因此,无限宽度网络可用作研究深度学习的透镜,而且它们本身也可用作有用的模型。

谷歌开源Neural Tangents:简单快速训练无限宽度神经网络
左图:深度神经网络变得无限宽时推导输入/输出映射关系的示意图。右图:随着神经网络宽度的增长,可以看到在网络的不同随机初始化上得到的输出分布逐渐变成高斯分布。

不幸的是,推导有限网络的无限宽度极限需要大量数学专业知识,而且必须针对每种不同架构专门研究。一旦推导得到了无限宽度模型,如果要得到一种高效且可扩展的实现,还进一步需要大量工程开发专业技能。总的来说,将有限宽度模型扩展成对应的无限宽度网络的这个过程可能耗费数月时间,而且这个研究本身就足以支撑起一篇研究论文。

为了解决这个问题,谷歌开源了一个用 Jax 写的开源软件库 Neural Tangents。谷歌宣称这个软件库可让无限宽度神经网络的构建与训练变得与有限宽度神经网络一样简单。究其核心,Neural Tangents 提供了一个易于使用的神经网络软件库,其可同时为神经网络构建有限和无限宽度的版本。

举个实际使用 Neural Tangents 的例子:假设要在某些数据上训练一个全连接神经网络,通常的做法是随机初始化一个神经网络,然后使用梯度下降来训练它。初始化并训练许多这样的神经网络可以得到一个集成模型。这个集成模型中各个模型成员都会给出一个预测结果,而为了得到最终结果,研究者和实践者通常的做法是求取这些结果的平均。这种做法通常能取得更好的表现。此外,集成模型中各个模型成员的预测结果还可用于估计不确定度。但训练集成模型也有缺点,即计算成本的预算很高,因此人们通常会避免这样操作。但是,如果神经网络的宽度变得无限大,就可以用一个高斯过程来描述这个集成模型了,而且这个高斯过程的均值和方差都可在训练过程中计算得到。

谷歌表示,使用 Neural Tangents,只需 5 行代码就能一步到位地构建并训练这种无限宽度网络的集成模型!下面展示了所得到的训练过程,而且谷歌还发布了一个可以尝试这一实验的交互式 Colab 笔记:

https://colab.sandbox.google.com/github/google/neural-tangents/blob/master/notebooks/neural_tangents_cookbook.ipynb

谷歌开源Neural Tangents:简单快速训练无限宽度神经网络

尽管事实上这种无限宽度的集成模型受一个简单的闭式表达式的控制,但它却能表现出与有限宽度集成模型的一致性。而且因为这种无限宽度的集成模型是一个高斯过程,所以它自然就能提供闭式的不确定度估计(上图中填充颜色的区域)。这些不确定度估计与在训练有限网络的许多不同副本(虚线)时所观察到的预测变化范围是紧密一致的。

上面的例子表明,无限宽度神经网络有习得并获取训练动态的能力。不仅如此,使用 Neural Tangents 构建的网络适用于任意可应用常规神经网络解决的问题。谷歌又给出了一个例子。下面比较了使用 CIFAR-10 数据集训练的三个不同的无限宽度神经网络架构。Neural Tangents 表现出色:不管是用梯度下降还是用完全贝叶斯的推理,都能以闭式形式评估无限宽残差网络等高度复杂的模型所组成的集成模型。而如果用有限宽度模型,这个任务根本无法解决。

谷歌开源Neural Tangents:简单快速训练无限宽度神经网络

可以看到,无限宽度网络与有限宽度网络相似,遵循着类似的层次结构:全连接网络的表现不及卷积网络,而卷积网络又赶不上宽残差网络。但是,不同于常规的训练方法,这些模型的学习动态完全可用闭式方法解决,这能让人以前所未有的方式理解这些动态,进而有助于揭开机器学习背后的奥秘,打开已困扰 AI 领域良久的深度学习黑箱。

想必现在你也想亲自探索一番了,以下链接中一定有你最感兴趣的探索形式:

  • 论文:https://arxiv.org/abs/1912.02803

  • Colab 笔记教程:https://colab.sandbox.google.com/github/google/neural-tangents/blob/master/notebooks/neural_tangents_cookbook.ipynb

  • GitHub 代码库:https://github.com/google/neural-tangents


参考链接:
http://ai.googleblog.com/2020/03/fast-and-easy-infinitely-wide-networks.html

<pre style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;min-height: 1em;letter-spacing: 0.544px;white-space: normal;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;line-height: 1.75em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong>完<strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong></span></strong></span></strong></section><section style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-bottom: 15px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;color: rgb(127, 127, 127);font-size: 12px;font-family: sans-serif;line-height: 25.5938px;letter-spacing: 3px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;font-size: 16px;font-family: 微软雅黑;caret-color: red;box-sizing: border-box !important;overflow-wrap: break-word !important;">为您推荐</span></strong></span></section><section style="margin: 5px 32px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;">如何评价何恺明团队的最新工作RegNet?<br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"  /></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(87, 107, 149);-webkit-tap-highlight-color: rgba(0, 0, 0, 0);cursor: pointer;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;">研究生从入门到放弃!不好意思老板,我这周没进展</span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(87, 107, 149);-webkit-tap-highlight-color: rgba(0, 0, 0, 0);cursor: pointer;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;">有了这个神器,轻松用 Python 写个 App</span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="color: rgb(87, 107, 149);-webkit-tap-highlight-color: rgba(0, 0, 0, 0);cursor: pointer;max-width: 100%;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;">MIT最新深度学习入门课,安排起来!</span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;">一个AI PhD的毕业随感</span></section></section></section></section></section></section></section></section></section>
谷歌开源Neural Tangents:简单快速训练无限宽度神经网络

本篇文章来源于: 深度学习这件小事

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享