前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ICCV 2021 | BN-NAS: 只训练BN层来自动搜索模型

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

原创
作者头像
marsggbo
修改2021-09-15 11:36:34
3140
修改2021-09-15 11:36:34
举报

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

1. Motivation

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

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

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

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

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

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

2. Methodology

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

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

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)不一样 。

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

我们以 $LayerL$ 的Op2为例,它的指标值 $S{o_{2,L}}$ 是其最后的BN层所有 $\gamma$ 的平均值。

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

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

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就很相似了。只能说有点牵强。。。明明还有那么多白色区域

3.2 Results on ImageNet

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Motivation
  • 2. Methodology
    • 2.1 Supernet Training
      • 2.2 Subnet Searching
        • 2.3 Subnet Retraining
        • 3. 实验分析
          • 3.1 相关性比较
            • 3.2 Results on ImageNet
            相关产品与服务
            批量计算
            批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档