前言
最近读了不少神经架构搜索(NAS)的论文,把NAS的整体脉络大致摸清了。
但是也发现了NAS目前还是用在CV领域居多,NLP领域和移动端优化寥寥无几。因此这里分享几篇NLP或者移动端上的NAS论文。
刚入门,很多不懂,理解有误或者有更多推荐的相关论文都可以评论区留言。
AMC
「[ECCV 18] AMC: AutoML for Model Compression and Acceleration on Mobile Devices」
动机
以往的压缩策略或者说剪枝率都是人工调的,而本文提出了一直基于强化学习的剪枝方法,每层剪枝率可以单独调。
方法
从最下面一层开始,编码整个网络的状态。然后用强化学习生成下一层的剪枝率,更新状态。最后的reward可以是压缩率、延时、FLOPs等等。actor用的是DDPG,action定义为(0, 1]之间的稀疏率。上面是剪枝和状态更新过程。
应用场景分为两种,一种是资源受限条件下寻找效果最高的模型,这种情况reward就直接定义为效果就行了,而资源的限制设定在了action空间里,就是上图伪代码做的事情。另一种是效果不变的情况下,压缩的尽量小,这种情况就要改reward,本文设定为了 ,这里改成FLOPs也是可以的,因为参数量前面加了,所以参数量的下降产生的奖励非常小,这就能一定程度上防止效果下降过多。延时的话本文认为和FLOPs基本正相关,因此直接优化FLOPs就行了(其实很多地方不是这样,比如考虑到并行等)。
实验
相同稀疏率情况下,效果更好。
评价
可以针对不同设备,自动搜出最佳的压缩策略,对于
平衡效果和压缩率/加速比非常友好。
TextNAS
「[AAAI 20] TextNAS: A Neural Architecture Search Space Tailored for Text Representation」
动机
大多数NAS方法集中在搜索策略的设计上,但是本文重点在定义了一个很好的搜索空间,包含了文本处理里面常用的一些操作符。
方法
本文发现NLP领域cell搜索不如直接搜整个网络效果好。搜索空间定义为了卷积层、池化层、双向循环结构(GRU)、注意力层。搜索算法就是用的ENAS,并且每个layer只能选择前面k=5个layer作为输入,这样可以减小搜索空间,但其实这样也丢失了长距离的残差连接。
实验
这篇是做效果提升的,因此可以看到在很多数据集上效果都超过了之前的模型。
评价
感觉上和ENAS差别不是很大,就是搜索空间针对NLP任务做了一些扩展。此外搜索目标只是效果,并没有考虑到延时等条件。
ET
「[ICML 19] The Evolved Transformer」
动机
这篇是想搜出一个效果更好的Transformer结构。
方法
搜索空间也是cell堆叠,每个cell里面encoder有6个block,decoder有8个,这样是为了初始化的时候能重现Transformer结构。
演化算法初始个体就用的是Transformer结构,这样收敛的更快一点。为了加快搜索速度,采用了Progressive Dynamic Hurdles的方法,过程是这样的:初始种群全部训练到一定步数后early stop,算出平均适应度。接下来后代训练到相同步数后,适应度高于平均值的继续训练一定步数后early stop,其余的直接early stop。然后更新这个early stop的步数和对应的适应度平均值,继续演化出后代。