论文链接:BN-NAS: Neural Architecture Search with Batch Normalization
之前的One-shot NAS工作在搜索过程中有两个特点:
很明显这两个步骤都非常耗时,所以这篇论文打起了 batch-normalization (BN) 的主义,即
实验结果表明,这样做不仅训练速度加快,而且最终模型性能也得到了保证
下面详细介绍一下算法细节
如下图示,整个算法包含三个步骤:
第一步是训练Supernet。不同于以往训练所有参数,BNNAS采取的策略是
这样一来需要训练的参数量就极大地减少了。
作者选取了SPOS和FairNAS两篇论文作为baseline,他们supernet分别训练了100和150个epoch。作为对比,作者只训练BN,基于SPOS和FairNAS分别只训练了10和15个epoch。
题外话:我很好奇只训练BN的话,模型能收敛吗,或者模型的train acc能有多高?如果根本学不到东西,那BN参数指标真的有意义吗?
论文中的搜索空间长这样,可以看到是类似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指标值,那么一个子模型的指标值就是所有层的总和,计算如下:
那么优化目标函数可以表示如下:
根据优化目标函数公式(5)可以通过不断优化找到最优的子模型结构 $a^*$,之后对这个子模型做retrain。
前面介绍过了每一层的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就很相似了。只能说有点牵强。。。明明还有那么多白色区域
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。