ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

论文链接:BN-NAS: Neural Architecture Search with Batch Normalization

1. Motivation

之前的One-shot NAS工作在搜索过程中有两个特点:

  • 训练所有模块的参数
  • 使用在验证集上的准确率作为评价指标来评估模型的好坏

很明显这两个步骤都非常耗时,所以这篇论文打起了 batch-normalization (BN) 的主义,即

  • 只训练BN的参数
  • 使用BN的参数作为评价指标

实验结果表明,这样做不仅训练速度加快,而且最终模型性能也得到了保证

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

下面详细介绍一下算法细节

2. Methodology

如下图示,整个算法包含三个步骤:

  1. Supernet training
  2. subnet searching
  3. subnet retraining

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

2.1 Supernet Training

第一步是训练Supernet。不同于以往训练所有参数,BNNAS采取的策略是

  1. 随机初始化Supernet参数
  2. 只训练BN的参数,即Conv和Linear等有参数的层都frozen。

这样一来需要训练的参数量就极大地减少了。

作者选取了SPOS和FairNAS两篇论文作为baseline,他们supernet分别训练了100和150个epoch。作为对比,作者只训练BN,基于SPOS和FairNAS分别只训练了10和15个epoch。

题外话:我很好奇只训练BN的话,模型能收敛吗,或者模型的train acc能有多高?如果根本学不到东西,那BN参数指标真的有意义吗?

2.2 Subnet Searching

论文中的搜索空间长这样,可以看到是类似MobileNet的结构。模型由多个layer组成,每个layer有 \(N\) 个candidate operation,每个operation由多个conv+BN+relu组成,区别就是这些conv的卷积核和通道数(expand ratio)不一样 。

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

需要注意的是每个operation最后都是BN,如上图中的红框所示,所以作者就用这个BN的参数来作为评价指标,具体的方法如下图所示

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

我们以 \(Layer_L\) 的Op2为例,它的指标值 \(S_{o\_{2,L}}\) 是其最后的BN层所有 \(\gamma\) 的平均值。

这个只是某一层的BN-based指标值,那么一个子模型的指标值就是所有层的总和,计算如下:

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

那么优化目标函数可以表示如下:

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

2.3 Subnet Retraining

根据优化目标函数公式(5)可以通过不断优化找到最优的子模型结构 \(a^\*\),之后对这个子模型做retrain。

3. 实验分析

3.1 相关性比较

前面介绍过了每一层的N个operations都会根据公式(3)计算得到对应的BN-based value,那么整个Supernet可以有一个 \(N\*L\) 的矩阵表示。

下图中(a)表示训练所有参数的结果,(b)表示只训练BN参数的结果。横纵坐标都表示epoch数,具体的值就是不同epoch之间的相似度,这个相似度就是根据计算上面提到的 \(N\*L\) 的矩阵 \(L\_2\) 距离得到的。

文中对下图的分析师(a)是在30个epoch的时候,不同epoch之间的相似度变得差不多了,而(b)在第10个epoch就很相似了。只能说有点牵强。。。明明还有那么多白色区域

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

3.2 Results on ImageNet

ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

上一篇:tensorflow2.0--反向传播


下一篇:批大小、mini-batch、epoch的含义