NAS(Neural Architecture Search)
NAS如今大行其道:让机器自己去设计神经网络架构。
NasNet
论文:Learning Transferable Architectures for Scalable Image Recognition
地址:https://arxiv.org/pdf/1707.07012.pdf
Google Brain的NasNet论文,列举了最基础的一些网络模块,就可以用来像搭积木一样搭网络了。
NAS算法用一个循环神经网络(RNN)作为控制器,让一个算法挑出一些积木,然后把它们组装在一起,做成一个神经网络。训练、测试,根据这个结果来调整选积木的标准和组装的方式。
但是:由于搜索空间巨大,论文里训练、测试NAS算法发现的架构,用了一个比现实情况小得多的数据集。
所以,他们做出了一个假设:如果一个神经网络能在结构相似的小规模数据集上得到更好的成绩,那么它在更大更复杂的数据集上同样能表现得更好。(在深度学习领域,这个假设基本上是成立的。)
上面还提到了一个限制,这指的是搜索空间其实很有限。他们设计NAS,就要用它来构建和当前最先进的架构风格非常类似的网络。
这篇NASNet论文带动了行业内的一次进步,它为深度学习研究指出了一个全新方向。
但是,用450个GPU来训练,找到一个优秀的架构也需要训练3到4天。也就是说,对于除了Google之外的普通贫民用户们,这种方法还是门槛太高、效率太低。
渐进式神经架构搜索(PNAS)
论文:Progressive Neural Architecture Search
地址:https://arxiv.org/pdf/1712.00559.pdf
2017年谷歌提出的渐进式神经架构搜索(PNAS),建议使用名叫“基于序列模型的优化(SMBO)”的策略,来取代NASNet里所用的强化学习。用SMBO策略时,我们不是随机抓起一个模块就试,而是按照复杂性递增的顺序来测试它们并搜索结构。
这并不会缩小搜索空间,但确实用更聪明的方法达到了类似的效果。SMBO基本上都是在讲:相比于一次尝试多件事情,不如从简单的做起,有需要时再去尝试复杂的办法。这种PANS方法比原始的NAS效率高5到8倍,也便宜了许多。
高效神经架构搜索(ENAS)
论文:Efficient Neural Architecture Search via Parameter Sharing
Paper: https://arxiv.org/abs/1802.03268
Code: https://github.com/melodyguan/enas
阅读参考:http://lijiancheng0614.github.io/2018/10/31/2018_10_31_ENAS/
ENAS通过强制所有子模型共享权重而提升了 NAS 的效率。
重要的是,在本研究所有使用单个 Nvidia GTX 1080Ti GPU 的实验中,搜索架构的时间都少于 16 小时。相较于 NAS,GPU 运算时间缩短了 1000 倍以上。
迁移学习有助在短时间内实现高精确度。因为为相似任务训练的神经网络权重相似,迁移学习基本只是神经网络权重的转移。ENAS算法强制将所有模型的权重共享,而非从零开始训练模型到收敛,我们在之前的模型中尝试过的模块都将使用这些学习过的权重。因此,每次训练新模型是都进行迁移学习,收敛速度也更快。
下边是效果时间图:
参考:https://baijiahao.baidu.com/s?id=1611550014520179332&wfr=spider&for=pc