卷积神经网络的压缩

深度神经网络面临着严峻的过参数化——模型内部参数存在着巨大的冗余。在模型训练阶段,这种冗余是十分必要的,在一定程度上,网络越深,参数越多,模型越复杂,其最终的效果也往往越好。

总体而言,绝大多数的压缩算法,均旨在将一个庞大而复杂的预训练模型,转化为一个精简的小模型。

按照压缩过程中,对网络结构的破坏程度,将 模型压缩技术 分为 “前端压缩”“后端压缩”

1 后端压缩(对原网络结构造成了极大程度的改造)

  • 低秩近似:卷积操作是由矩阵相乘完成的,但通常情况下,权重矩阵往往稠密且巨大,带来计算和存储上的巨大开销。若能将稠密矩阵由若干个小规模矩阵近似地重构出来,便能有效降低存储和计算开销。这类算法大多采用低秩近似的技术来重构权重矩阵,故我们将其归类为低秩近似算法
  • 未加限制的剪枝
  • 参数量化
  • 二值网络

2 前端压缩(不改变原网络结构)

  • 知识蒸馏
  • 紧凑的网络结构
  • 滤波器层面的剪枝

3 前景展望

  • “前端压缩” 未改变原网络结构,仅减少了网络的层数或者滤波器的个数,其最终的模型可以完美适配现有的深度学习库,如TensorFlow;
  • “后端压缩” 为了追求极致压缩比,不得不对原有网络结构进行改造,这种改造往往是不可逆的;同时为了获得理想的压缩效果,必须开发相配套的运行库,甚至是专门的硬件设备,从而带来了巨大的维护成本;
  • 两种压缩不存在绝对的好坏,各有自己的使用场景;
  • 两种压缩技术可以互相结合,将“前端压缩” 的输出作为“后端压缩” 的输入,能够在最大程度上降低模型的复杂度。两种压缩技术实际上是一种互相补充的关系。