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
\mathcal{N}(\mathcal{X})为\mathcal{X}\in \mathbb{R}^n上的一系列网络,网络态射(network morphism)为映射M: \mathcal{N}(\mathcal{X}) \times \mathbb{R}^k \to \mathcal{N}(\mathcal{X}) \times \mathbb{R}^j,从参数为w\in \mathbb{R}^k的网络f^w \in \mathcal{N}(\mathcal{X})转换为参数为\tilde{w} \in \mathbb{R}^j的网络g^\tilde{w} \in \mathcal{N}(\mathcal{X}),并且满足公式 1,即对于相同的输入,网络的输出不变。
下面给出几种标准网络结构的网络态射例子:
Network morphism Type I
将f^w进行公式 2 的替换,\tilde{w}=(w_i, C, d),为了满足公式 1,设定A=1和b=0,可用于添加全连接层。
另外一种复杂点的策略如公式 3,\tilde{w}=(w_i, C, d),设定C=A^{-1}和d=-Cb,可用于表达 BN 层,其中A和b表示统计结构,C和d为可学习的\gamma和\beta。
Network morphism Type II
假设f_i^{w_i}可由任何函数h表示,即f_i^{w_i}=Ah^{w_h}(x)+b
则可以将f^w,w_i = (w_h, A, b)配合任意函数\tilde{h}^{w_{\tilde{h}}}(x)根据公式 4 替换为\tilde{f}^{\tilde{w}_i},\tilde{w}=(w_i, w_{\tilde{h}}, \tilde{A}),设定\tilde{A}=0。这个态射可以表示为两种结构:
- 增加层宽度,将h(x)想象为待拓宽的层,设定\tilde{h}=h则可以增加两倍的层宽度。
- concatenation 型的 skip connection,假设h(x)本身就是一系列层操作h(x)=h_n(x) \circ \cdots \circ h_0(x),设定\tilde{h}(x)=x来实现短路连接。
Network morphism Type III
任何幂等的函数f_i^{w_i}都可以通过公式 5 进行替换,初始化\tilde{w}_i=w_i,公式 5 在无权重的幂等函数上也成立,比如 ReLU。
Network morphism Type IV
任何层f_i^{w_i}都可以配合任意函数h进行公式 6 的替换,初始化\lambda=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
如果本文对你有帮助,麻烦点个赞或在看呗 ~
更多内容请关注 微信公众号【晓飞的算法工程笔记】