鄙人近日阅读了来自 CVPR2020 的一篇论文, 在这里与大家分享一下读后感, 有些东西可能不一定正确, 还望大家指正.
Exploration Study
进化算法是 NAS 中一种常用的搜索算法, 使用进化算法时, 如果将每一个候选网络训练到完全收敛来评估性能的话, 需要耗费大量的资源 (时间, GPU等). 于是有研究者就提出使用代理 (proxy) 来提高搜索效率. 何为代理呢? 代理只是使用了使得训练更加快速的设置, 例如: 减少网络层数, 减少训练迭代次数. 其他的比如网络结构, 也就是层间的链接以及对候选操作的选择是一致的.
然而之前并没有工作系统性地对这些参数进行评估. 于是, 本篇文章首先筛选出了四类决定代理任务的关键因素 (这部分内容可以在原文3.1节找到):
- 卷积网络的通道数 ( c c c)
- 输入图片的分辨率 ( r r r)
- 训练轮数 ( e e e)
- 采样率 (
s
s
s) (个人理解这里所谓的
采样率
指的是在原训练数据集上选取多少比例的数据的含义)
为了方便研究, 作者制作了一种表格, 并约定使用
(
c
a
,
r
b
,
s
c
,
e
x
)
(c_a, r_b, s_c, e_x)
(ca,rb,sc,ex) (其中
a
,
b
,
c
a, b, c
a,b,c表示表格的索引,
x
x
x 直接表示训练的轮数). 表格如下图所示, 表格上方还有一段说明, 然而这一段说明我没看懂什么意思, 还望大家赐教.
例如 (这个示例来自论文), 有参数
(
c
0
,
r
0
,
s
0
,
e
600
)
(c_0, r_0, s_0, e_{600})
(c0,r0,s0,e600) 表示的具体含义为, 初始训练是使用的卷积通道数为
36
36
36, 输入图片的大小为
32
×
32
32 \times 32
32×32, 使用全部训练数据进行训练, 并进行
600
600
600 轮训练.
为了评估这些简化设定是否可靠, 作者使用了 Spearman Coefficient
作为评估参数. 这里我们不去讨论什么是 Spearman Coefficient
, 只是简单的说明一下该指标的作用: Spearman Coefficient
是一种用来衡量两个变量的相关性的非参数指标. 它利用单调函数评价两个统计变量的相关性. 就该文章而言, 斯皮尔曼系数越高,简化设置就越可靠. 也就是说, 筛选模型时, 应尽可能筛选出斯皮尔曼系数较大的简化设置.
作者通过一系列的实验得出了这样的结论 (具体论述过程可看原文 3.3. Experimental Observations
部分):
- 在迭代次数相同的情况下,使用较多训练样本和较少训练次数这种训练组合, 比使用较多训练次数和较少训练样本这种训练组合更具有一致性 (这里的 一致性 我感觉可以直接理解为前文所表述的可靠).
- 降低输入图像的分辨率有时是可行的,而减少网络的通道比降低分辨率更可靠。
Efficient Proxy
作者结合上述的研究和结论, 确定了
(
c
4
,
r
4
,
s
9
,
e
60
)
(c_4, r_4, s_9, e_{60})
(c4,r4,s9,e60) 作为简化设置, 因为这种设置表现出相对更高的一致性和加速比 (加速比这个概念我没有细究, 感觉使用了简化设置肯定能加速, 但是具体加速多少呢, 也就是怎么测量我并没有在文章中看到这一部分) (这一部分也可以从原文中找到 4.1. Efficient Proxy
)
Hierarchical Proxy
除去使用了 Efficient Proxy
, 作者还提出了 Hierarchical Proxy
. 原因是: 使用相同代理训练和评估每个架构仍然会损害搜索效率, 因为没有希望的网络计算量很大并且浪费了大部分搜索时间.
关于这部分内容我不太想讲算法的具体流程, 因为这部分在作者的文章中描述的很清楚. 这里为就贴两幅图来帮助大家理解:
其他
论文中还有实验和附录等部分, 虽然这部分的内容我也看了, 但是我感觉没有什么好说的, 也就不写在这里了.