https://mp.weixin.qq.com/s/vVSNocqDCMcKy_MOvyFrOw
【VALSE 前沿技术选介17-01期】深度模型加速新思路 作者: Winsty
经过两个月的休整,论文前沿选介栏目再次回归!今天给大家带来的是一种全新模型加速的方式。
模型加速在近几年是一个研究热点,首先大部分工作只谈压缩不谈加速,然后在大多数加速的工作中想得到实际加速的效果,而不是理论复杂度的减少需要特殊的实现(quantization类方法,sparse类方法)甚至硬件。在这其中只有直接neuron pruning类方法和knowledge transfer类方法可以直接利用现有框架,得到可以直接部署的小模型。今天给大家介绍的便是第三类个人觉得很有前途的方式。
在这个方向上,最先的一个尝试是[1]。思路十分直观:根据样本的复杂度把CNN当作一个deep cascade,简单的样本只需要使用浅层的特征即可做出正确的分类,然而复杂的样本需要多层网络才可以判断。这样的方式比起之前使用多个网络做cascade的方式而言,可以共享大量的参数。如下图所示:
作者在每个exit都加入一个分类器,使用每个exit输出分类结果的entropy来决定要不要继续到更深的层。网络训练的过程和DSN一致,整个网络联合优化加权的三个目标函数。个人觉得这样优化存在一些问题:联合优化所有exit会导致深层的网络还需要考虑简单样本,从而不能focus在没被前两个cascade过滤过的样本上。实验中,在LetNet, AlexNet和ResNet网络上,该方法在合理的性能损失中,可以提升2~3倍的速度。
在[2]中,作者将这个思想更进一步,主要有以下几个差异:
设计了新的复杂度控制的loss,然而这个loss不仅不连续,而且还有离散变量。做法非常heuristic。
将early exit的思想扩展到了spatial上,即在同一层中不同区域计算的深度也不同。
这个思想用到spatial上一个有趣的发现在于,计算层数多的区域基本上也会是人觉得复杂的区域,和人类的saliency有很大程度的吻合,如下图所示,这是一个在检测任务中的计算复杂度图。可以看到,算法可以忽略掉大部分没有纹理的区域,更集中在有意义的物体上。
在[3]中,作者将这个思想进一步拓展到dynamic graph execution上。在普通CNN的DAG结构中,只有execution node,[3]中提出了一种新的control node,即输出一个switch的信号,这个信号可以是执行多个branch中的某一个,也可以是直接exit。在这个框架下可以设计出很多种自由控制复杂度的网络。例如,在下图左,是[1,2]中提出的cascade的网络,另外一种设计如右图,通过control node可以选择复杂度不同的subnetwork再回到主分支中。
对于单个样本单个control node的优化,由于control node本身是parametric的,所以作者将选择每个branch作为一种action,使用Reinforcement Learning的方案来优化,reward的定义直接考虑了最终任务相关的准确率和理论计算发杂度。对于多个node多样本联合优化,作者在文章花了大量篇幅介绍近似与解法。个人觉得这样的优化方式虽然较[1, 2]有进步,但是离elegant仍相距甚远。
总结下,目前对于此类方法,最大的问题在于Early exit或者selection的处理不完善,目前大多数方法都是heuristic,或者直接用RL暴力优化一个reward。个人觉得这里需要有一个比较系统的方式来处理,例如可以把exit作为一个连续的loss在目标函数中优化。这方面有很多可以尝试的可能。至于实际实现上,不考虑spatial的exit的话,做起来并不困难,故在实际中有比较大的应用价值。然而需要注意的一点是,如果使用此类方法,均摊latency可能会降低,但是最长的latency并不会降低,所以在很多需要严格保证realtime的问题中,此类方法仍需改进后才可使用。
[1] Teerapittayanon, Surat, Bradley McDanel, and H. Kung. "Branchynet: Fast inference via early exiting from deep neural networks." ICPR, 2016.
[2] Figurnov, Michael, et al. "Spatially Adaptive Computation Time for Residual Networks." arXiv preprint arXiv:1612.02297 (2016).
[3] Liu, Lanlan, and Jia Deng. "Dynamic Deep Neural Networks: Optimizing Accuracy-Efficiency Trade-offs by Selective Execution." arXiv preprint arXiv:1701.00299 (2017).
|