1. 深度神经网络模型压缩和加速
    1. 1. 综合现有的深度模型压缩方法,它们主要分为四类:
    2. 2. 不同模型的简要对比:
    3. 3. 蒸馏
    4. 4. 量化
    5. 5. 矩阵分解

深度神经网络模型压缩和加速

1. 综合现有的深度模型压缩方法,它们主要分为四类:

  • 参数修剪和共享(parameter pruning and sharing)
  • 低秩因子分解(low-rank factorization)
  • 转移/紧凑卷积滤波器(transferred/compact convolutional filters)
  • 知识蒸馏(knowledge distillation)

2. 不同模型的简要对比:

基于参数修剪和共享的方法针对模型参数的冗余性,试图去除冗余和不重要的项。如矢量量化,二进制编码和稀疏约束来执行任务
基于低秩因子分解的技术使用矩阵/张量分解来估计深度学习模型的信息参数。
基于转移/紧凑卷积滤波器的方法设计了特殊的结构卷积滤波器来降低存储和计算复杂度。仅支持卷积层。
知识蒸馏方法通过学习一个蒸馏模型,训练一个更紧凑的神经网络来重现一个更大的网络的输出。

3. 蒸馏

用一个性能好的大网络来教小网络学习,使小网络具备跟大网络一样的性能,但参数规模小
训练小模型 (distilled model) 的目标函数由两部分组成:

  • 与大模型的softmax输出的交叉熵,称为软目标
  • 与groundtruth的交叉熵
    训练的损失为上述两项损失的加权和

参考:
(ICLR 2017) Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer https://arxiv.org/abs/1612.03928
(NIPSW 2014) Distilling the Knowledge in a Neural Network https://arxiv.org/abs/1503.02531

4. 量化

把网络权值从高精度转化成低精度(32位浮点数 float32 转化成 8位定点数 int8 或二值化为 1 bit),但模型准确率等指标与原来相近,模型大小变小,运行速度加快。

5. 矩阵分解

低秩分解(SVD分解、Tucker分解、Block Term分解)
原理:权值向量主要分布在一些低秩子空间,用少数基来重构权值矩阵

参考文献:


技术交流学习,请加QQ微信:631531977
目录