节省240倍算力!上交大、MIT新方法低成本达到谷歌AutoML性能
作者 | 代亚暄
编辑 | Natalie
AI 前线导读: 最近两年来自动搜索网络结构这个问题上有一些进展,今天我们会简单介绍其中一篇,通过路径粒度的网络迁移进行有效网络结构搜索。
本文是 AI 前线第 42 篇论文导读,主要分为论文背景和贡献介绍、论文细节设置介绍、个人思考三个部分,“忠于原作”并介绍论文中细节的是第二部分;由于笔者并未对工作进行复现,本文中将不会讨论具体实现并对其做出评价。
更多优质内容请关注微信公众号“AI 前线”(ID:ai-front)
论文背景和贡献介绍
从 Google 的几篇关于 NAS 的论文开始,AutoML 逐渐为公众熟知并寄予厚望。第一篇网络结构搜索,首次尝试设计控制器对网络演化过程进行控制,从几个手工设计的基础模块中选择,生成候选网络,并以候选网络结构上的训练评测作为反馈改进控制器。在这后续的 ENAS 在其基础上引入了强化学习,使用 Policy Gradient 为 RNN 控制器提供反馈,共享权值使得整个搜索的过程被大幅加速,训练整个模型的计算量不再大得除了 Google 无法负担。
在我们讨论的这篇论文中,仍然沿用 ENAS 的权值共享机制,并使用 Policy Gradient 提供反馈,其创新在于,设计了更加灵活的搜索空间和搜索空间中的转移方式,并从网络压缩,知识蒸馏和迁移学习的角度为这个问题的求解提供了新的线索。
这篇文章在网络结构搜索中,定位到的子问题是,如何控制网络结构的变换,换而言之,搜索空间如何设计。他们声称,现有的能够网络结构搜索方法,如 Net2Net,都在 layer-level 进行,也就是说,只支持一个层到另一个层的变换,其搜索空间是十分有限的;应该对其进行拓展到 path-level,使得一个层可以变换到一个子模块,这样就可以在增加其拓扑结构连接上的复杂度的同时,保留 ENAS 中权值共享机制的优势。
基于此,作者改变了控制器的设计,将 ENAS 原本的,只能进行逐层生成的 RNN 更改为了双向的树形结构,这样可以天然地支持算法,在将单层向模块转化后形成的树形搜索空间中算法迭代过程,并在更加有限的计算资源下,产出了表现占优势且泛化性能优秀的评测结果。
值得注意的是,在这种“生成候选模型 - 评测结果 - 优化控制器“的流程中,对所得到目标网络模型的泛化和迁移性能进行评测,实际上间接评测了网络结构搜索模型在整个搜索演化训练过程的可靠性——在网络结构搜索时,对候选模型的训练往往不够充分,这时模型的泛化性能越好,也就意味着候选模型评测所给出的反馈越可靠。(当然,这里目标网络的良好泛化性能对于可靠的搜索过程来说,只是充分不必要条件)
论文细节设置介绍
首先,本文介绍了如何进行有功能不变性(function preserving)的网络结构变换,也就是说,如何保证网络结构变换前后,输入输出的结构不变。
下面的两图,分别以卷积层和恒等变换层为例,展示了它们是如何变换到子模块(motif)上去的。
上面的操作能够对网络的拓扑结构进行改变,但只是对上述变换进行重复堆叠,并不会为网络结构引入新的内容;但是在此基础上,对拓扑结构变换过的每个分支,增加不同数目的层,就可以将网络结构进行树形拓展——每个目标网络中的层,都可以作为搜索空间树形结构中的一个叶子节点,在它拓展成为一个子模块时,搜索空间中也会相应地以这个叶子节点为根,拓展出相应的子树结构。
下图中演示了目标网络从一个卷积层 y=C(x) 开始的演进过程,最右的子图是树形的搜索空间,读者可以在其上,尝试根据从左至右的目标网络演进,画一下对应的控制器在搜索树上的中序遍历过程。
卷积层和恒等层只是两个较为简单的例子,以下列出了所有候选单层结构,它们都可以被子模块代替,或新增到某个拓扑分支上去:
本文中的 LSTM 控制器在每步决策时,和在 ENAS 中的,从上面的候选层中产生一个新层的操作不同,有以下几种选择:
如图 (a) 所示,是将单个分支的拓扑结构变为多个分支,同时给出分支的个数和合并调度方案,因此新结构中各个分支并非限制均匀划分;
如图 (b) 所示,在一个单分支拓扑上增加一层恒等变换;
如图 (c) 所示,将一个恒等变换转化为上述候选层之一。
在评测结果中,本文中方法用 200GPU 小时的训练得到的目标网络,达到了和 48000GPU 时训练得到的 NASNet-a 相近的性能评测结果。更加细节的评测结果以及分析,可参阅原文。
个人思考
在看到这篇文章时,接触过神经网络形式化方法,Aggregation-Transfermation View(聚合 - 转移视角)的朋友们应该会感到非常熟悉。这篇文章所扩展出的搜索空间,可以说和聚合 - 转移视角中形式化方法相差无几。
聚合转移视角可以对网络结构的设计进行描述。简而言之,我们可以把网络结构进行拆分,拆分到最小的子模块或层,一定可以用聚合和转移两个连续操作来进行形式化的描述。聚合操作是说,当前的变换 t,可以从前 0 到 t-1 的变换输出的结果集合中选取任意子集,并将选取所得作为输入,进行聚合变换得到 t 变换后的输出。常见的聚合变换有逐元素相加,在某一维度上进行连接,等等。转移操作会在聚合操作之后进行,常见的聚合操作,有恒等变换,卷积操作,分支输出,位置随机或交换等等。
通过以上简单的变换组合,我们可以描述非常复杂的网络,当然,也可以以此为空间,进行网络结构的搜索设计。我在去年听一位讲座主讲人说,他用聚合转移结构,分析了现在人工设计的各种优秀网络结构,并列出各种操作是否出现,希望从中获得设计网络结构的经验;今天讨论的这篇论文正可以说是其拓展,希望它除本身方法之外,也能带来如何形式化定义问题上的一点思考。
论文原文链接:
https://arxiv.org/pdf/1806.02639.pdf
如果你喜欢这篇文章,或希望看到更多类似优质报道,记得给我留言和点赞哦!
阅读原文
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。 项目经理在线