写在最前面
这一系列文章是博主2020年本科论文调研时记的,现在是多模态的时代,很多技术都过时了,发出来希望对读这些论文的人有所帮助
Efficient Neural Architecture Search via Parameter Sharing
Motivation
NAS已经在图片分类和语言模型中得到了成功的应用,在NAS中,RNN控制器循环进行训练:控制器首先选取一个候选结构(子模型),然后训练到收敛来评估它的性能表现,控制器使用这个性能作为激励信号来发现更好的结构,整个过程要重复很多次。尽管NAS取得了很好的精度,但它是计算复杂,很消耗时间的。我们注意到NAS的计算瓶颈在于它要将每个子模型训练到拟合。
这篇论文的主要贡献在通过强制所有子模型共享参数来避免需要将每个子模型都从头训练到拟合,从而提升NAS的效率。这个想法受到迁移学习和多任务学习的启发,即通过一点改动,一个针对特定任务的特定模型可以用到其他任务、其他模型中。
Methods
1.overview
ENAS的中心思想在于,我们可以使用一个简单的DAG图来代表NAS的搜索空间。直观上看,ENAS的DAG就是NAS搜索空间子集的叠加,其中节点代表运算,边代表数据的流动。上述运算有自己的参数,并且只在被激活的时候使用。因此,ENAS的设计允许子模型之间的参数共享。
2.Designing Recurrent Cells
3.Training ENAS and Deriving Architectures
我们的控制器网络是一个有100个隐含单元的LSTM,整个LSTM通过softmax分类器来进行选择,通过一种自回归的方式:前一步的输出是下一步的输入,第一步的输入是一个空的向量。
在ENAS中,共有两个可学习的参数集:控制器LSTM的参数
θ
\theta
θ和子模型的共享参数
ω
\omega
ω,ENAS的训练过程由两个交互的过程组成,第一个过程训练
ω
\omega
ω,在CIFAR-10数据集上,
ω
\omega
ω通过minibatch为128,总大小为45000的图片集进行训练,梯度通过标准的back-propagation计算,第二个过程通过一个固定的步数(2000)训练
θ
\theta
θ。这两个过程在整个ENAS的训练过程中交替进行。
Training the shared parameters
ω
\omega
ω of the child models
在这个步骤中,我们固定控制器的策略
π
(
m
;
θ
)
\pi(m;\theta)
π(m;θ),然后对
ω
\omega
ω使用SGD优化期望损失函数
E
m
π
[
L
(
m
;
ω
)
]
E_{m~\pi}[L(m;\omega)]
Em π[L(m;ω)],这里的L是标准交叉熵损失,通过训练数据计算得到,梯度的计算方式如下:
这里的mi从策略中采样得到,上式提供了对梯度的一个无偏估计,但是这种方式的方差非常大,不如固定m的情形,然而我们发现,令M=1是一个很不错的选择,即仅使用从策略中采样得到的1个模型来更新
ω
\omega
ω。
Training the controller parameters
θ
\theta
θ
在这一步中,我们固定
ω
\omega
ω并更新策略参数
θ
\theta
θ,旨在最大化期望奖赏
E
m
π
[
L
(
m
;
ω
)
]
E_{m~\pi}[L(m;\omega)]
Em π[L(m;ω)],我们使用Adam优化器,梯度的计算方式使用强化学习(REINFORCE)。
Deriving Architectures
我们讨论如何从一个训练过的ENAS模型中获取最终的结构,首先从一个训练过的策略中采样几个网络结构,对于每一个采样的结构,计算其在val的minibatch上的reward,随后,仅选取reward最大的结构从头开始训练。
4.Designig Convolutional Networks
我们现在讨论卷积结构的搜索空间,在卷积结构的搜索空间中,控制器RNN在每个决策模块进行两种决策:(1)连接哪一个前面的节点;(2)使用哪一种计算操作。
5.Designing Convolutional Cells
除了设计整个卷积神经网络,还可以设计小的模块并把它们连接起来形成整个网络:
我们使用有B个节点的DAG来代表一个cell中的运算,在这个DAG中,节点1和节点2为cell的输入,它们是前面两个cell的输出,对于cell中另外B-2个节点,控制器RNN生成两个决策:(1)使用前面哪两个节点作为输入;(2)使用哪种操作。
Evaluation
3.1.Language Model with Penn Treebank
3.2.Image Classification on CIFAR-10
Notes
NAS是自动化设计神经网络的一个重要进步,但是,NAS的计算复杂使得它不能被广泛使用,而ENAS通过提出DAG图实现参数共享,实现了快速的结构搜索。