作者丨dwilimeth
编辑丨贾伟
本文转载自知乎专栏:AutoML随笔
ICLR 2020会议将于 4 月 26 日在非洲埃塞俄比亚(亚斯亚贝巴)举行。本届会议共有 2594篇投稿,其中 687篇论文被接收(48篇oral论文,107篇spotlight论文和531篇poster论文),接收率为26.5%。本文介绍的是巴黎综合理工和华为诺亚方舟实验室的Antoine Yang,Pedro M Esperanca 和 Fabio Maria Carlucc完成,发表在ICLR 2020 上的论文《NAS evaluation is frustratingly hard》。
论文链接:https://openreview.net/forum?id=HygrdpVKvr
代码链接:https://github.com/antoyang/NAS-Benchmark
今天介绍一篇 ICLR 2020 的文章 《NAS evaluation is frustratingly hard》,作者是来自巴黎综合理工和华为诺亚方舟实验室的Antoine Yang,Pedro M Esperanc¸a 和 Fabio Maria Carlucc。
文章开篇指出,近年来 Neural Architecture Search (NAS) 发展迅速,但是关于哪个算法最好、哪个搜索方法最好,其实一直没有定论。不同的论文之间很难在相同的参数设置下进行公平比较。有些论文可能是加入了一些trick,人工调参&精心设计过拟合,从而在某个数据集上面看起来准确率更高。
作者找了8个有开源代码的 NAS 方法,在 5个不同的数据集上进行对比。这8个 NAS 方法是 DARTS,StacNAS,PDARTS,MANAS,CNAS,NSGANET,ENAS,NAO。这5个数据集是 Cifar 10,Cifar 100,Sport 8,MIT 67,Flowers 102。选5个数据集是因为大多数paper的结论都是基于 Cifar 10得到的,有过拟合 Cifar 10的嫌疑。
有些方法表现出色可能是因为人工设计了一个好的搜索空间,训练调参,而不是因为好的搜索策略。
为了避免这个问题,作者在这 8 个方法的搜索空间里面随机采样得到网络结构,遵循相同的训练参数,和这 8 个方法进行比较。可以参看作者的开源代码。细节可以从中探寻。
具体来说,作者的实验分为三步:
1、从这8个方法的搜索空间里面随机得到网络结构,然后在数据集上训练(训练的时候使用相同的随机数种子)。
2、使用这8个方法的代码,搜出来8个结构,然后在数据集上训练(搜索时候的随机数种子不同,但训练时随机数种子相同)。
3、比较随机采样的结构和搜出来的结构,在测试集上的性能差异。
作者实验得出的结论如下图:
正如文章标题所说,结果是令人沮丧的(frustratingly hard)。
1、各个方法相比于随机采样得到的结果,提升是非常小的。在一些情况下,搜出来的结果甚至比随机采样得到的要差,说明搜索的方法并没有收敛。
2、有些方法的准确率变化不大,说明搜索空间就很小,在这个小的搜索空间上面得到的较差的结构也是相对不错的。也就是说好的搜索空间起的作用大,搜索算法起到的作用小。
3、在 Cifar 10上,一些方法 (PDARTS, MANAS, DARTS, StacNAS)表现的很接近,都还不错;但是换到其他数据集上,这些方法性能的方差就会很大,说明参数可能是在Cifar 10上面专门调的,泛化性能不好。
Figure-2 展示了在Cifar 10上,不同方法的性能以及搜索代价 (GPU-days)。Table-1 展示了这8个方法在5个数据集上,相对随机得到的结构的提升。可以看出几乎每个算法都有不如随机搜的时候。
1、在 Cifar 10 数据集上,采用 DARTS 的搜索空间,随机采样8个不同的结构;
2、用不同的训练参数进行训练;
3、在测试集上对比模型间的性能差异。
不同的训练参数是指:Base 和 DARTS 用的超参类似,所有 tricks 都不用,训练 600 个 epochs。而所谓的'tricks'是指Xnas这篇文章用到的tricks:Auxiliary Towers、DropPath、Cutout、AutoAugment 、训练延长到1500 epochs、增加 channel 的数量。
结果如下图所示,在 DARTS 的搜索空间上随机采样得到的结构,加上 Xnas 这篇文章用到的全部 tricks,能涨 0.69,和 Xnas 就差0.25。这么看的话,最近的很多paper虽然取得了 state-of-the-art 的结果,但是并不一定要归功于提出了好的搜索策略。
作者从 DARTS 的搜索空间里面随机采样了足够多的结构 (200+)进行训练,想看一下不同的结构之间的方差到底有多大。
结果如下图所示,平均性能是 97.03±0.23,最差 96.18,最好的是 97.56。作者指出,在相同的参数下,很多方法搜出来的结果也就是在这个标准差范围内。
此外,如下图所示,作者发现网络结构里面 cells 的数量对于最终的准确率影响很大,而cells又是个人工挑选的超参数。
作者设计了一个很小的搜索空间,只包含一些简单的 conv,pooling,none, skip connect 运算,比 DARTS 的搜索空间要小很多(DARTS还包含了 dilated conv 等复杂的运算),理论上说搜出来的结果也要差一些。
而最终结论如下图所示,可以看出,modify 之后的小搜索空间,比原始的 DARTS 要低 0.18,似乎差的也不算多。作者从而指出,添加很多复杂的运算,并不是一个好的搜索空间的关键元素。
作者先随机采样得到 32 个不同的网络结构,然后用两个不同的随机数种子进行训练,结果如下图所示,换了种子之后不同模型的性能差的还挺多。这说明随机数种子的影响还是蛮大的,因此 paper 在报结果的时候,应该报告用不同的种子跑多个后平均的结果。
三、总结
作者的结论是:
1、一些数据增强,train 更多 epochs 之类的 tricks 会对最终的结果影响很大。因此 paper 在报结果的时候,除了加各种 tricks 冲 performance,还应该报一下裸的不加这些 tricks 的结果;
2、各种 paper 应该对比一下在搜索空间里面随机采样多个结构得到的结果。这一点相关的讨论也可以参见 xie saining 的那篇 Exploring randomly wired neural networks for image recognition。需要说明的是,这和随机搜索的对照实验是不一样的;
3、各种 paper 应该给出在多个数据集上的结果,避免 overfit 某个特定的数据集;
4、各种 paper 应该就各种结构上的参数(比如 DARTS 里面 cells 的数量)、训练参数给出严格的对照实验;
5、可复现性,各种 paper 除了报一个最好的结果、最好的结构之外,还应该给出使用的种子、代码、详细的参数配置。最好是跑多次实验来验证;
6、调参数的代价应该也纳入 NAS 的考虑中。
个人读了这篇文章后,感到一股浓浓的“清流”。
ICLR 的 Area Chair 给这篇文章的评价是 "指出了正确的方向"——
"Overall, I firmly believe that this paper is an important contribution to the NAS community. It may be viewed by some as "just" running some experiments, but the experiments it shows are very informative and will impact the community and help guide it in the right direction. "
(总之,我坚信这篇论文对NAS社区有重要贡献。它可能被一些人视为“只是”运行一些实验,但这些实验是非常有益的,将影响社区,并对引导社区走在正确的方向大有裨益。)