您正在使用IE低版浏览器,为了您的雷峰网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
此为临时链接,仅用于文章预览,将在时失效
人工智能学术 正文
发私信给栗峰
发送

0

发现神经元连线

本文作者: 栗峰 2019-10-30 10:01
导语:神经元连线你了解多少?

语音播放文章内容

由深声科技提供技术支持

本文来自Mitchell Wortsman, Alvaro Herrasti, Sarah Pratt, Ali Farhadi 和 Mohammad Rastegari的文章《Discovering Neural Wirings》在不改变原文意思的基础上,雷锋网AI科技评论的编译如下:

雷锋网导读:在这篇文章中,讨论了最近发表的关于发现神经元连线的论文中很有意思的研究(将在NeurIPS 2019上发表)。传统意义上,人工神经网络(ANN)的连接模式是人工定义的,或者说在很大程度上都限制了人工神经网络的范围。相反,我们放宽了层的典型概念范围,以允许更大的可能连线空间。在训练过程中,我们的人工神经网络的连线不是固定的,也就是说当我们在学习网络参数的同时,也学习了连接。

在我们的研究过程中,得出以下结论:在推理过程中训练出一个小型的模型是有可能的,但是在训练过程中仍然会被过度的参数化。将这种方法应用于稀疏神经网络的发现,填补了神经结构搜索与稀疏神经网络学习之间的空白。

移动下面的滑块,查看在MNIST上对一个小型网络进行不同时间段的训练(即这里的代码)时,连线的变化情况。

发现神经元连线

为什么要连线?

在现代人工神经网络问世之前,研究人员会人工设计好的特征(高维向量表示)。现在已经可以通过ANNs学习良好的特征,但必须指定ANN的体系结构。 因此,神经元结构搜索(NAS)最近大量的工作都集中在学习ANN的结构上。但是,NAS仍然是在一组人工设计的构建块中进行搜索的,因此ANN连接在很大程度上仍然会受到限制。相比之下,RandWire通过考虑随机接线的ANNs探索出了一组不同的连接模式。尽管随机连线的神经网络对NAS而言是具有竞争优势的,但它们的连接在训练过程中是固定的。

我们提出了一种在训练过程中联合学习ANN的参数和接线的方法。我们证明了我们的发现神经元连线(DNW)的方法优于许多人工设计和随机连线的神经网络。

人工神经网络的灵感来源于动物大脑的生物神经网络。尽管这两种系统之间存在的基本差异性很大,但生物学上的启发可能还是有用的。《自然通讯》(Nature Communications)最近发表的一篇文章(题为《纯粹学习的批判以及人工神经网络能从动物大脑中学到什么》(the critical of pure learning and what artificial neural networks can learn from animal brains)认为,动物大脑的连通性能够促进快速学习。因此,本文建议“将连线拓扑结构和网络结构作为人工系统优化的目标”。“我们希望这项工作能为这个方向提供一些有益的步骤。

即使是重量不可知神经网络的并行工作也强调了人工神经网络连线的重要性。他们证明,给定的神经网络连线可以有效地解决一些简单的任务,而不需要做任何的训练,解决方案已经被编码在了连通性中。

静态神经图(SNG):前馈ANN的便捷抽象

现在,我们来描述前馈ANN的便捷抽象,也就是静态神经图(SNG)。我们的目标是学习SNG的最佳边缘集。我们略读下面的一些细节,你可以参考本文,尽管这种抽象应该会让人有种熟悉的感觉。

SNG是一个有向非循环图G,它由节点ν和边ε组成。另外,每个节点υ都有输出Zυ和输入Iυ。输入数据X通过一组指定的节点ν0导入网络,而对于输入节点υ∈ν或ν0是母本输出的加权和。

发现神经元连线

每个节点的输出通过参数化函数进行计算

发现神经元连线

边缘权值WΥv和θυ是可学习的网络参数。 然后通过一组指定的节点νE计算网络的输出。

 发现神经元连线

发现神经元连线

发现神经元连线的算法

发现神经元连线

发现神经元连线

放到一起会怎么样呢?

发现神经元连线

规模连线

我们采用以下两种策略来大规模发现连线:

发现神经元连线

为了进行均衡的比较,如果将MobileNet V1解释为一连串的图,我们认为其结构和边数与MobileNet V1完全相同。通过学习连通性,我们可以在较低水平的计算环境下将ImageNet的精准度提高约10%。

发现神经元连线

稀疏网络?彩票?

Overparameterization?

在过去的几年中,稀疏的神经网络领域的研究工作取得了令人瞩目的成就。在《彩票假说》中,弗兰克(Frankle)和卡宾(Carbin)证明了密集的神经网络包含了可以单独有效训练的子网络。然而,他们发现这些所谓的中奖彩票形成的过程代价是及其高昂的,因为它首先需要一个密集训练的网络。在从零开始的稀疏网络中,Dettmers和Zettlemoyer引入了稀疏学习,就是在保持稀疏权值的同时,只训练一次神经网络。

我们的工作是将神经结构搜索与稀疏神经网络学习相结合。随着NAS的限制越来越少,粒度越来越细,找到一个好的结构就如同找到一个完整图的稀疏子网络。

因此,我们可以将我们的算法用于发现神经元连线,并将其应用到训练其他稀疏神经网络的任务中。我们的方法不需要进行微调或重新训练来发现稀疏的子网络。这个观点是由Dettmers和Zettelmoyer提出的,我们也想强调一下其中存在的一些区别。虽然我们很密集的向后台传送数据,但他们的研究工作可以加快训练的速度。此外,他们的研究工作允许参数跨层重新分配,而我们认为每层都应该有固定的空间。最后 的结果还是他们的训练效率更高,因为他们实际上将未使用的权值直接发送为零,而我们是继续在向后台传递的过程中更新它们。

我们将偏差和batchnorm保留在密集的位置上,并使用调整后的ResNet-50。 这反映了从零开始的稀疏网络附录C中的实验设置。下图说明了top-1的精度是如何随稀疏度变化而变化的(卷积滤波器和线性权值的稀疏性,也就是0%的稀疏性对应于密集网络)。该图还显示了另一种设置,其中第一个卷积层(参数<10k约占整个网络的0.04%)保持密集状态。

发现神经元连线

为了生成上面的图,我们仅考虑10%的倍数,其余部分进行插值。 尽管我们在下面提供了ResNet-50的相关ImageNet Top-1精度指标,但很快就会在我们的Github上找到所有的模型和数字。

发现神经元连线

我们可以从这个结果中得出结论:即使生成的模型是稀疏的,也有可能在训练期间实现过参数化的优势。尽管我们在向前传递过程中仅使用一小部分权值,但是我们的网络与大型网络在初始化的时候的竞争力相差不多。

用我们的算法训练稀疏神经网络其实非常简单。我们默认每个参数是一个边,因此所有卷积都替换为以下的pytorch代码:

发现神经元连线

  下图说明了这段代码的工作方式。

发现神经元连线

发现动态神经图(DNG)的神经连线

发现神经元连线

在静态和动态设置中,我们将用于发现神经元连线的算法应用于微小的(41k参数)分类器。

发现神经元连线

发现神经元连线

证明过程

在这里,我们简要地说明一下,当确实发生边交换的时候,在某些假定情况下这是有益的。想象一个静态神经图,其中在小部分的梯度更新之后,边(i,k)替换了边(j,k)。 我们可以证明,当学习速率α足够小且节点状态固定时,针对当前的 mini-batch进行处理,损耗就会减少。 我们在此处省略了一些细节,你可以参考论文,例如,我们还必须假设损失是Lipschitz连续的。本文还包括一般情况下的说明。

 发现神经元连线

引用:

发现神经元连线

雷锋网注:原文链接:https://mitchellnw.github.io/blog/2019/dnw/?from=singlemessage&isappinstalled=0

雷峰网原创文章,未经授权禁止转载。详情见转载须知

发现神经元连线

分享:
相关文章
当月热门文章
最新文章
请填写申请人资料
姓名
电话
邮箱
微信号
作品链接
个人简介
为了您的账户安全,请验证邮箱
您的邮箱还未验证,完成可获20积分哟!
请验证您的邮箱
立即验证
完善账号信息
您的账号已经绑定,现在您可以设置密码以方便用邮箱登录
立即设置 以后再说