when
- CVPR 2019
what
- 对于深度卷积神经网络而言,准确度和计算成本往往难以得兼,研究界也一直在探索通过模型压缩或设计新型高效架构来解决这一问题。印度理工学院坎普尔分校的一篇 CVPR 论文则给出了一个新的思路——使用异构的卷积过滤器;实验表明这种方法能在保证准确度的同时显著降低计算成本。
who (动机)
- 卷积神经网络(CNN)在视觉和自然语言处理领域都已经取得了卓越的表现。进一步提升性能的总体趋势使得模型越来越复杂且越来越深。但是,使用更深度的网络,通过提升模型复杂度来提升准确度并不是毫无代价的——计算成本(FLOPs)会大幅增长。因此,为了降低 FLOPs 以让模型更高效,研究者们已经提出了各种不同类型的卷积运算/卷积过滤器。
- 已有的卷积过滤器大致可以分为三类:
- 1)深度方面的卷积过滤器,用于执行逐深度的卷积(DWC)[38];
- 2)点方面的卷积过滤器,用于执行逐点卷积(PWC)[36];
- 3)分组方面的卷积过滤器,用于执行逐分组卷积(GWC)[19]。
- 近来的大多数架构都使用了这些卷积过滤器的组合来得到高效的模型。很多常见的模型也使用了这些卷积(比如 DWC、PWC 和 GWC)来探索可以降低 FLOPs 的新架构。但是,设计一种新架构需要大量研究工作才能找到最优的过滤器组合,进而使得 FLOPs 最小。
- 另一种提升模型效率的常用方法是压缩模型。模型压缩大致可以分为三类:连接剪枝 [6]、过滤器剪枝 [24, 11, 21, 10, 32, 31, 33] 和量化 [6, 27]。
- 过滤器剪枝的思想是将模型中贡献最小的过滤器剪枝掉,在移除这个过滤器/连接之后,模型通常还会得到微调以维持其性能。在给模型剪枝时,我们需要一个预训练模型(可能需要计算成本很高的训练作为预处理步骤),然后我们再丢弃贡献最小的过滤器。因此这是一个成本很高且很困难的过程。因此,比起剪枝,使用高效的卷积过滤器或卷积运算来设计高效的架构才是更常用的方法。这不需要昂贵的训练,然后在训练后进行剪枝,因为训练是从头开始高效完成的。
- 使用高效的卷积过滤器会有两种不同的目标。
- 一类研究的重心是设计 FLOPs 最小的架构,同时会在准确度上妥协。这些研究的目标是为物联网/低端设备开发模型。这类模型有准确度较低的问题,因此必须搜索最佳可能的模型来实现准确度和 FLOPs 之间的平衡。因此这类模型在 FLOPs 和准确度之间会有所权衡。
- 另一类研究则专注于在保证模型的 FLOPs 与原架构相同的同时提升准确度。Inception [35]、RexNetXt [40] 和 Xception [2] 等近期架构就属于这一类。他们的目标是使用高效