MIT 韩松组一直走在深度模型剪枝,压缩方向的前沿。最近他们也开始尝试运用 NAS 神经框架搜索技术来推进研究。
这里整理了两篇文章:
论文如下:
ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware
HAQ: Hardware-Aware Automated Quantization with Mixed Precision
第一篇是利用 NAS 技术直接为特定的硬件在特定的任务上搜索最优的网络框架结构。
第二篇则是利用强化学习自动寻找在特定 latency 标准上精度最好的量化神经网络结构,它分别为网络的每一层搜索不同 bit 的权值和激活,得到一个经过优化的混合精度模型。两篇文章的相同之处在于,都直接从特定的硬件获得反馈信息,如 latency,energy 和 storage,而不是使用代理信息,再利用这些信息直接优化神经网络架构 (或量化 bit 数) 搜索算法。这也许会成为工业界未来的新范式。
第一篇:
PROXYLESSNAS: DIRECT NEURAL ARCHITECTURE SEARCH ON TARGET TASK AND HARDWARE
论文链接:
v1: _https://arxiv.org/pdf/1812.00332v1.pdf
v2: _https://arxiv.org/pdf/1812.00332v2.pdf
2018 年 12 月份在 arxiv 上发布 v1 版本时,之心就已经出过一篇本论文的讲解啦,2019 年 2 月份作者上传了 v2 版本,最终该论文收录于 ICLR2019。相比于 v1 版本,v2 版本在 4.2 节中增加了部分 CNN 架构和多目标 NAS 任务的文献引用,在附录部分增加了基于梯度的算法的实现说明。2019 年 8 月 10 日,训练代码新鲜出炉,已上传至 Github 中。让我们再来重温一下韩松组所做的工作吧~
一、NAS 是什么?此前的研究有哪些待解决的问题?
神经结构搜索 (NAS) 是一种自动化设计人工神经网络 (ANN) 的技术,被用于设计与手工设计的网络性能相同甚至更优的网络。目前 NAS 已经在图像识别和语言模型等任务的自动化神经网络结构设计中取得了显著成功。
但传统的 NAS 算法需要消耗极高的计算资源,通常需要在单个实验中训练数千个网络模型进行学习从而完成目标任务。虽然在小型数据集上有较好表现,但直接在大规模任务(如 ImageNet)上自动设计体系结构仍旧非常困难。
随后的 NAS 算法广泛采用了在代理任务 (训练更少的 epoch,使用更小的数据集,学习更少的 block) 上搜索 building block 的思想。将表现最好的 block 堆叠起来,然后迁移到大规模目标任务中。但是在代理任务上优化的体系结构无法保证在目标任务上是最优的,尤其是在考虑到延迟等硬件指标时。并且,为了实现可迁移性,这种方法仅搜索少数结构模式,重复堆叠相同的结构,限制了 block 的多样性,从而对性能造成了影响。
图 1 :基于 proxy 的方法和本文 proxyless 方法对比示意图