NASH:基于丰富网络态射和爬山算法的神经网络架构搜索 | ICLR 2018
论文提出NASH方法来进行神经网络结构搜索,核心思想与之前的EAS方法类似,使用网络态射来生成一系列效果一致且继承权重的复杂子网,本文的网络态射更丰富,而且仅需要简单的爬山算法辅助就可以完成搜索,耗时0.5GPU day
来源:晓飞的算法工程笔记 公众号
论文: Simple And Efficient Architecture Search for Convolutional Neural Networks

Introduction
论文目标在于大量减少网络搜索的计算量并保持结果的高性能,核心思想与EAS算法类似,主要贡献如下:
- 提供baseline方法,随机构造网络并配合SGDR进行训练,在CIFAR-10上能达到6%-7%的错误率,高于大部分NAS方法。
- 拓展了EAS在网络态射(network morphisms)上的研究,能够提供流行的网络构造block,比如skip connection和BN。
- 提出基于爬山算法的神经网络结构搜索NASH,该方法迭代地进行网络搜索,在每次迭代中,对当前网络使用一系列网络态射得到多个新网络,然后使用余弦退火进行快速优化,最终得到性能更好的新网络。在CIFAR-10上,NASH仅需要单卡12小时就可以达到baseline的准确率。
Network Morphism
N(X)N(X)为X∈Rn上的一系列网络,网络态射(network morphism)为映射M:N(X)×Rk→N(X)×Rj,从参数为w∈Rk的网络fw∈N(X)转换为参数为˜w∈Rj的网络g˜w∈N(X),并且满足公式1,即对于相同的输入,网络的输出不变。

下面给出几种标准网络结构的网络态射例子:
Network morphism Type I

将fw进行公式2的替换,˜w=(wi,C,d),为了满足公式1,设定A=1和b=0,可用于添加全连接层。

另外一种复杂点的策略如公式3,˜w=(wi,C,d),设定C=A−1和d=−Cb,可用于表达BN层,其中A和b表示统计结构,C和d为可学习的γ和β。
Network morphism Type II
假设fwii可由任何函数h表示,即fwii=Ahwh(x)+b

则可以将fw,wi=(wh,A,b)配合任意函数˜hw˜h(x)根据公式4替换为˜f˜wi,˜w=(wi,w˜h,˜A),设定˜A=0。这个态射可以表示为两种结构:
- 增加层宽度,将h(x)想象为待拓宽的层,设定˜h=h则可以增加两倍的层宽度。
- concatenation型的skip connection,假设h(x)本身就是一系列层操作h(x)=hn(x)∘⋯∘h0(x),设定˜h(x)=x来实现短路连接。
Network morphism Type III

任何幂等的函数fwii都可以通过公式5进行替换,初始化˜wi=wi,公式5在无权重的幂等函数上也成立,比如ReLU。
Network morphism Type IV

任何层fwii都可以配合任意函数h进行公式6的替换,初始化λ=1,可用于结合任意函数,特别是非线性函数,也可以用于加入additive型的skip connection。
此外,不同的网络态射组合也可以产生新的态射,比如可以通过公式2、3和5在ReLU层后面插入"Conv-BatchNorm-Relu"的网络结构。
Architecture Search by Network Morphisms

NASH方法基于爬山算法,先从小网络开始,对其进行网络态射生成更大的子网络,由于公式1的约束,子网的性能与原网络是一样的,后续子网进行简单的训练看是否有更好的性能,最后选择性能优异的子网进行重复的操作。

图1可视化了NASH方法的一个step,算法1的ApplyNetMorph(model, n)包含n个网络态射操作,每个为以下方法的随机一种:
- 加深网络,例如添加Conv-BatchNorm-Relu模块,插入位置和卷积核大小都是随机的,channel数量跟最近的卷积操作一致。
- 加宽网络,例如使用network morphism type II来加宽输出的channel,加宽比例随机。
- 添加从层i到层j的skup connection,使用network morphism type II或IV,插入位置均随机选择。
由于使用了网络态射,子网继承了原网络的权重且性能一致,NASH方法优势在于能够很快的评估子网的性能,论文使用了简单的爬山算法,当然也可以选择其它的优化策略。
Experiments
Baslines

Retraining from Scratch

CIFAR-10

CIFAR-100

CONCLUSION
论文提出NASH方法来进行神经网络结构搜索,核心思想与之前的EAS方法类似,使用网络态射来生成一系列效果一致且继承权重的复杂子网,本文的网络态射更丰富,而且仅需要简单的爬山算法辅助就可以完成搜索,耗时0.5GPU day
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!