大数跨境
0
0

模型压缩经典解读:只训练 BN 层加速神经架构搜索BN-NAS (ICCV 2021)

模型压缩经典解读:只训练 BN 层加速神经架构搜索BN-NAS (ICCV 2021) 极市平台
2022-06-02
0
↑ 点击蓝字 关注极市平台

作者丨科技猛兽
编辑丨极市平台

极市导读

 

BN-NAS 方法借助批归一化操作 (BN) 进行的网络结构搜索算法,大幅加速了 One-Shot NAS 的过程。BN-NAS提出了 BN-indicator 来评估子网络的重要性,并在训练超网络的过程中只训练 BN 层参数。BN-NAS可以在两个阶段 One-Shot NAS 方法:超网络训练的速度快10倍以上,子网络搜索的速度快600,000倍以上。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

目录

1 通过 BN 层加速神经架构搜索 (ICCV 2021)
(来自悉尼大学,百度,商汤科技)
1.1 BN-NAS 原理分析
1.1.1 BN-NAS 设计动机
1.1.2 One Shot NAS 方法简介
1.1.3 BN 简介
1.1.4 BN-NAS 算法流程
1.1.5 BN indicator
1.1.6 超网络训练阶段只训练 BN 层

论文名称:BN-NAS: Neural Architecture Search with Batch Normalization

论文地址:https://arxiv.org/pdf/2108.07375

BN-NAS 原理分析

1.1.1 BN-NAS 设计动机

神经架构搜索 (NAS) 方法致力于自动找到最优的网络架构,在诸如图像分类,目标检测,语义分割任务中显著提升了模型的性能。但是一个较为成功的 NAS 方法通常意味着训练和评估数千个模型,这需要花费数千个 GPU days,这样庞大的搜索时长无疑会提升搜索的经济成本,使得 NAS 算法难以得到广泛应用。

基于权重共享技术的 One-Shot NAS 方法[1][2]能够帮助减少搜索成本,将搜索成本从数千个 GPU days 减少到数十个 GPU days。One-Shot NAS 方法构建了一个包含所有候选网络架构的超网络。对于构建的超网络,One-Shot NAS 方法包括三个阶段:超网络训练子网络搜索子网络的再训练

超网络训练阶段,通过反向传播来训练超网络。在子网络搜索阶段,从超网络中抽取子网络作为候选模型结构。根据验证集数据对采样的子网络进行评估,从中选择准确度最高的前 N 个子网络。然后,在子网络的再训练阶段,对选择的子网络做随机初始化,并重新训练它。One-Shot NAS 方法的主要优点是子网可以继承超网的权重,从而显著减少搜索阶段的计算负担。然而,训练超网数百个 Epoch 和评估数千个子网络的过程仍然非常耗时,导致数十个 GPU days 的训练成本。

所以在本研究中作者借助批归一化操作 (BN) 进行的网络结构搜索算法,大幅加速了 One-Shot NAS 的过程。作者认为在搜索的阶段,BN 参数是子网络或者某些操作的重要性的一种轻量化的度量方案。以往的 NAS 方法虽然说在搜索过程的效率已经提高 (因为子网络继承了超网络的权重直接在验证集上面评估其性能),但是这几千个子网络的评估过程所需要的大量计算仍然是一个巨大的负担。

在多个研究[3][4]中已经证明,BN 参数可以衡量一个 channel 是否重要,因此,具有较小 BN 参数的 channel 被认为不太重要,并且剪掉这些 channel 将对整个网络的结果产生较小的影响。因此,当要衡量某个子网络的重要性时,一个自然而然的想法是将多个通道的 BN 参数累加起来。基于此作者提出了 BN-indicator 来评估子网络的重要性。

使用了 BN-indicator 之后的超网络训练子网络搜索过程的花销对比如下图1所示。与 SPOS 相比,本文 BN-NAS 可以在两个阶段 One-Shot NAS 方法超网络训练的速度快10倍以上,子网络搜索的速度快600,000倍以上。BN-indicator 节省了搜索成本,并且只训练具有更少 Epoch 的 BN 层参数。SPOS 总共需要 11 GPU days,BN-NAS 只需要 0.8 GPU days。

图1:使用了 BN-based indicator 之后的超网络训练和子网络搜索过程的花销对比

有了 BN-indicator 之后,超网络的训练过程就可以只训练 BN 参数了。

为了训练超网络,通常的做法是训练所有参数,即卷积层、全连接层和 BN 层的参数。作者根据[5]这篇文章的结论,在超网训练阶段,我们的 BN-NAS仅训练BN参数,但不训练其他参数,例如卷积或全连接层,原因有两个:

  1. 网络可以通过仅训练一部分参数来获取来自训练数据的知识。
  2. 本文针对 NAS 过程,使用 BN 参数作为搜索的指标,而不是网络精度。

此外,只训练 BN 参数有助于在早期训练时期变得稳定,仅训练 BN 参数还有额外的训练加速的好处。

因此有 BN-NAS 做法:超网络训练过程只训练 BN 参数,子网络搜索过程借助 BN-indicator 高效完成。

1.1.2 One Shot NAS 方法简介

在 One Shot NAS 方法中, 设搜索空间是 , 超网络为 , 其权值为 , 它包括三个阶段: 超网络训练、子网络搜索和子网络的再训练。单路径的超网络架构如下图2所示。每一层包含 个候选操作 (比如 Conv, Conv 等等), 每个候选操作都遵循 "Conv-BN-ReLU" 的重复结 构。

图2:单路径搜索空间

超网络训练过程中, 每次只激活 个操作当中的一个 (这里作者的设置遵循 EfficientNet 和 FBNet 的做法), 构建一个单独的架构 。然后, 通过正常的进行反向传播网络训练

子网络搜索过程中,SPOS 使用验证集的准确性以评估子网络的性能。根据验证集上各个子网络的准确度选择最佳子网络。但是为了获得可靠的搜索结果,SPOS 需要评估成千上万个子网络。

子网络再训练过程中,在子网络搜索阶段以最高的 个子网被再训练。然后在验证集上对它们再进行评估,并选择具有最高准确性的子网络作为最终搜索得到的模型。

1.1.3 BN 简介

BN 层参数能够评价某个 channel 是否重要, 给定输入 , 则 BN 层的输出 可以通过下式计算:

式中, 是为了保持数值稳定的一个很小的数值, 是当前 batch 的均值和方差, 缩放参数 和偏置参数 层中的可学习参数。

1.1.4 BN-NAS 算法流程

BN-NAS 算法流程如下图3所示

超网络训练: 包含所有候选操作的超网络被随机初始化。只有 BN 层参数通过标准的 BP 算法更新,而超网络的其他参数在初始化之后是固定的。

子网络搜索: 使用 BN-indicator 来评估各个子网络的性能。

子网络的再训练: 对在子网络搜索阶段选择的最佳子网进行再训练。

图3:BN-NAS 流程

BN-NAS 算法如下图4所示。

图4:BN-NAS 算法

1.1.5 BN indicator

层的某个候选操作 个 channel, 第 个 channel 的表达式被重写 为:

这里假设 服从正态分布 , 缩放参数 可以代表当前 channel 对输出结果的贡献度。因此, 可以将缩放参数 视为这个 channel 的重要性, 因此, 第 个候选操作 的 BN indicator 可以写成:

式中, 层的某个候选操作 的第 个 channel 的 BN 层缩放参数。

在操作的前向传播期间,特征被归一化几次,并且最终输出仅由最后的缩放参数确定。因此,我们仅利用每个构建操作的最后BN层,如图3右侧的红框所示,以指示候选操作的性能。

在每个 Operation 的前向传播期间,特征被归一化几次,并且最终输出仅由最后的缩放参数确定。因此,BN-NAS 仅利用每个构建操作的最后 BN 层,如图2右侧的红框所示,以指示候选的 Operation 的性能。BN indicator 需要每个操作的最后一层是 BN,因此它不直接适用于 pre-activation 构成的操作。

假设某个超网络有 层, 从第 层中随机采样 Operation 得到子网络 。则这个子网络的 BN score 为:

搜索过程的目标即可写成:

最佳子网络是 BN score 最高的子网络。在大多数现有的 NAS 方法中, 验证数据集的准确性 是评估子网络的常用指标, 而在 BN-NAS 中, 作者使用 BN-indicator 用于评估子网。

1.1.6 超网络训练阶段只训练 BN 层

当训练超网络时, BN-NAS 固定所有卷积和全连接层的参数。通过反向传播仅训练 BN 层的缩放参 数 和偏置参数 。尽管在反向传播期间计算冻结参数的梯度, 但是这些计算的梯度将不会被存 储或用于更新。因此, 这将比训练所有参数更快。通过只训练超网的 BN 层, 单个 Epoch 的训练 时长降为

由于 BN-NAS 在超网络训练阶段只训练 BN 层,可以将训练的总时长降为 SPOS 的 8% (只训练 10% 的 Epoch × 单个 Epoch 的训练时长降为 80%)。

如果使用验证集上的准确性来评估子网络的性能,减少训练 Epoch 的数量或只训练 BN 层参数将在搜索阶段产生不利影响。具体来讲,继承超网络权重的子网络的性能的排序将与经过独立训练的子网络的性能的排序具有比较低的相关性。那这样搜索出来的子网络的真实性能就不一定可靠。为了解决这个问题,作者使用 BN-indicator 来克服这种不利影响。

具体而言, 对于训练当中的每一个 Epoch, 根据模型的第 层的 个候选操作的得分 定义排名, 排第一的记为1, 排最后的记为 , 这样一个模型就能得到一个 长度为 的排序向量。对于两个不同 Epoch 的两个排序向量, 作者计算这两个排序向量的 距离, 又将不同时期之间的距离可视化, 如下图5所示。比如第 30 Epoch 的这个长度为 的排序向量和第 80 Epoch 的这个长度为 的排序向量求 距离, 并归一化, 得到下图。图5 (a) 是训练超网络全部参数的结果, 图5 (b) 是只训练 BN 层参数的结果。每张图片是 的, 其中第 个元素可以视为第 个 Epoch 的模型的相似度。

从图5 (a) 中可以看出,第 30 Epoch 的排序向量和第 80 Epoch 之间的相似度很高,并且排序向量在大约第30个 Epoch 之后趋于稳定。这意味着我们可以在大约第30个 Epoch 获得最佳架构信息。

从图5 (b) 中可以看出,当只训练 BN 层参数时,排序向量在第10个 Epoch 时趋于稳定,这意味着可以在非常早期的训练阶段使用 BN 参数来找到最佳架构。

图5:(a) 训练超网络全部参数的排序向量相似度。(b) 只训练 BN 层参数的排序向量相似度

从图5中我们可以得到两点结论:

  1. BN-indicator 有助于子网络的排名在早期的训练时稳定,并且有助于使用较少的 Epoch 训练超网络。
  2. 只训练 BN 层便于使用更少的 Epoch 来训练超网络。

实验结果

作者首先把 BN-indicator 的方法用在了两个经典的 One-Shot NAS 方法:SPOS 和 FairNAS。之后通过消融实验证明了 1. 训练 BN 参数2. BN-indicator 的有效性。

评估数据集使用 ImageNet,搜索空间遵循了[8]的设计。优化器使用 SGD,momentum 设为0.9,cosine annealing learning rate decay,学习率在前5个 Epoch 从0.2到0.8线性变化,Batch 使用1024。SPOS 和FairNAS 分别训练100和150 Epoch。BN 超网络训练,SPOS 和FairNAS 分别训练10和15 Epoch。搜索过程使用进化算法,种群大小设为50,max iteration 设置为20,采样1000个子网络。

作者将 BN-NAS 与基线方法 SPOS,FairNAS 进行了比较,实验结果如下图6所示。总的来说,与基线方法相比,BN-NAS 方法将 One-Shot NAS 方法的速度提高了大约10倍,而性能仍然相当。

图6:与基线方法 SPOS,FairNAS 的比较

如下图7所示,作者进一步将 BN-NAS 方法与 SOTA 方法进行了比较。与手工设计的网络相比,基于 SPOS 的搜索模型以更少的失败次数获得了更高的性能。与 SOTA NAS 方法相比,无论是基于梯度的方法 (ProxylessNAS) 还是基于进化的方法 (CARS-G),BN-NAS 方法在更少或相似的 FLOPs 下也具有更好的性能。

对于搜索成本,BN-NAS 方法与那些在 CIFAR 上搜索并将架构转移到 ImageNet 的方法拥有相当的搜索成本。对于直接在 ImageNet 上搜索架构的方法,BN-NAS 方法只需要不到十分之一的搜索成本。与 EfficientNet-B0 相比,EfficientNet-B0 中的网格搜索需要在 ImageNet 上完全训练大量的模型,这比许多进化方法的搜索成本高得多。

图7:与 SOTA 方法的比较

消融实验

在消融实验部分,作者验证了 BN-indicator 和只训练 BN 层的有效性。通过验证集的精度来搜索子网络的方法记为 Acc-indicator,超网络训练阶段训练所有参数的方法记为 All。如下图8所示是不同方法的实验结果,可以看到:

  • BN/BN/10 的精度与 All/Acc/100 的精度十分接近,但是需要的训练轮数大大减少。
  • 当训练相同的 Epoch 数 (10/30/100) 时,BN-indicator 的性能均优于 Acc-indicator。
  • 更长的超网络训练轮数对 Acc-indicator 是必要的,但对 BN-indicator 并不重要。
  • 当训练很少的轮数 (10) 时,BN-indicator 不能保持良好的性能,原因在于,如果训练了所有参数,则在超网训练期间,BN 参数在无法得到很好地训练。只训练 BN 参数可以恢复子网络的优异的性能。
图8:消融实验结果

如下图9所示为不同子网络的性能一致性。红色点代表 BN-NAS 方法计算出的各个子网络的 BN score 的排序和重新训练的精度排序,二者的相关关系。青色点代表 SPOS 方法计算出的各个子网络继承超网络权重的验证集精度的排序和重新训练的精度排序,二者的相关关系。BN-NAS 的 值与 SPOS 接近,证明了 BN-indicator 对于指示模型性能方面的有效性。

图9:不同子网络的性能一致性

总结

BN-NAS 方法借助批归一化操作 (BN) 进行的网络结构搜索算法,大幅加速了 One-Shot NAS 的过程。作者认为在搜索的阶段,BN 参数是子网络或者某些操作的重要性的一种轻量化的度量方案。BN-NAS 方法提出了 BN-indicator 来评估子网络的重要性,并在训练超网络的过程中只训练 BN 层参数。BN-NAS 可以在两个阶段 One-Shot NAS 方法:超网络训练的速度快10倍以上,子网络搜索的速度快600,000倍以上。BN-indicator 节省了搜索成本,并且只训练具有更少 Epoch 的 BN 层参数。

参考

  1. Efficient neural architecture search via parameter sharing
  2. Single path one-shot neural architecture search with uniform sampling
  3. Learning efficient convolutional networks through network slimming
  4. Operation-aware soft channel pruning using differentiable masks
  5. Training batchnorm and only batchnorm: On the expressive power of random features in cnns
  6. Efficientnet: Rethinking model scaling for convolutional neural networks
  7. Fbnet: Hardware-aware efficient con- vnet design via differentiable neural architecture search
  8. Angle-based search space shrinking for neural architecture search


公众号后台回复“数据集”获取90+深度学习数据集下载~

△点击卡片关注极市平台,获取最新CV干货
极市干货
数据集资源汇总:10个开源工业检测数据集汇总21个深度学习开源数据集分类汇总
算法trick目标检测比赛中的tricks集锦从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
技术综述:一文弄懂各种loss function工业图像异常检测最新研究总结(2019-2020)


极市平台签约作者#


科技猛兽

知乎:科技猛兽


清华大学自动化系19级硕士

研究领域:AI边缘计算 (Efficient AI with Tiny Resource):专注模型压缩,搜索,量化,加速,加法网络,以及它们与其他任务的结合,更好地服务于端侧设备。


作品精选

搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了
用Pytorch轻松实现28个视觉Transformer,开源库 timm 了解一下!(附代码解读)
轻量高效!清华智能计算实验室开源基于PyTorch的视频 (图片) 去模糊框架SimDeblur



投稿方式:
添加小编微信Fengcall(微信号:fengcall19),备注:姓名-投稿
△长按添加极市平台小编

觉得有用麻烦给个在看啦~  
【声明】内容源于网络
0
0
极市平台
为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
内容 8155
粉丝 0
极市平台 为计算机视觉开发者提供全流程算法开发训练平台,以及大咖技术分享、社区交流、竞赛实践等丰富的内容与服务。
总阅读3.2k
粉丝0
内容8.2k