如不雅一个 m x n 阶矩阵只须要少于 m×n 个参数来描述,就是一个构造化矩阵(structured matrix)。平日如许的构造不仅能削减内存消费,还能经由过程快速的矩阵-向量乘法和梯度计算明显加快推理和练习的速度。
一个典范的 CNN 卷积核是一个 4D 张量,须要留意的是这些张量中可能存在大年夜量的冗余。而基于张量分化的思惟也许是削减冗余的很有潜力的办法。而全连接层也可以当成一个 2D 矩阵,低秩分化同样可行。
所有近似过程都是一层接着一层做的,在一个层经由低秩滤波器近似之后,该层的参数就被固定了,而之前的层已经用一种重构误差标准(reconstruction error criterion)微调过。这是紧缩 2D 卷积层的典范低秩办法,如图 2 所示。
图 2. CNN 模型紧缩的低秩近似(Low-rank approximation)。左:原始卷积层。右:应用秩 K 进行低秩束缚的卷积层。
表 2. 低秩模型及其基线模型在 ILSVRC-2012 数据集上的机能比较。
缺点:低秩办法很合适模型紧缩和加快,该办法弥补了深度进修的近期成长,如 dropout、修改单位(rectified unit)和 maxout。然则,低秩办法的实现并不轻易,因为它涉及计算成本昂扬的分化操作。另一个问题是今朝的办法逐层履行低秩近似,无法履行异常重要的全局参数紧缩,因为不合的层具备不合的信息。最后,分化须要大年夜量的从新练习来达到收敛。
迁徙/紧缩卷积滤波器
应用迁徙卷积层对 CNN 模型进行紧缩受到 [42] 中研究的启发,该论文介绍了等变群论(equivariant group theory)。使 x 作为输入,Φ(·) 作为收集或层,T (·) 作为变换矩阵。则等变概念可以定义为:
即应用变换矩阵 T (·) 转换输入 x,然后将其传送至收集或层Φ(·),其结不雅和先将 x 映射到统??变换映射后的表征结不雅一致。
根据该理论,将变换矩阵应用到层或滤波器Φ(·) 来半数个收集模型进行紧缩是合理的。
表 3. 基于迁徙卷积滤波器的不合办法在 CIFAR-10 和 CIFAR-100 数据集上的机能比较。
缺点:将迁徙信息应用到卷积滤波器的办法须要解决几个问题。起首,这些办法的机能可与宽/平坦的架构(如 VGGNet)相媲美,然则无法与较窄/特别的架构(如 GoogleNet、Residual Net)比拟。其次,迁徙假设有时过于强大年夜乃至于无法指导算法,使得在某些数据集上的结不雅不稳定。
常识精华精辟
据我们所知,Caruana 等人 [49] 起首提出应用常识迁徙(KT)来紧缩模型。他们经由过程集成强分类器标注的伪数据练习了一个紧缩模型,并再现了原大年夜型收集的输出结不雅。然而他们的工作仅限于浅层收集。这个设法主意比来在 [50] 中扩大为常识精华精辟(Knowledge Distillation/KD),它可以精深度和宽度的收集紧缩为浅层模型,钙揭捉?缩模型模仿了复杂模型所能实现的功能。KD 的根本思惟是经由过程软 softmax 进修教师输出的类别分布而降大年夜型教师模型(teacher model)的常识精华精辟为较小的模型。
缺点:基于 KD 的办法能令更深的模型变得加倍浅而明显地降低计算成本。然则也有一些缺点,例如 KD 办法只能用于具有 Softmax 损掉函数分类义务,这阻碍了其应用。另一个缺点是模型的假设有时太严格了,以至于其机能有时比不上其它办法。
表 4. 模型紧缩不合的代表性研究中应用的基线模型。
评论辩论与挑衅
深度模型的紧缩和加快技巧还处在早期阶段,今朝还存在以下挑衅:
- 大年夜多半今朝的顶尖办法都建立在设计完美的 CNN 模型的基本上,这限制了改变设备的自由度(例如,收集构造和超参数)。为了处理加倍复杂的义务,还须要加倍靠得住的模型紧缩办法。
- 剪枝是一种紧缩和加快 CNN 的有效方法。今朝大年夜多半的剪枝技巧都是以削减神经元之间的连接设计的。另一方面,对通道进行剪枝可以直接减小特点映射的宽度并紧缩模型。这很有效,但也存在挑衅,因为削减通道会明显地改变下一层的输入。肯定则类问题的解决方法同样很重要。
- 正如之前所提到的,构造化矩阵和迁徙卷积滤波器办法必须使模型具有仁攀类先验常识,这对模型的机能和稳定性有明显的影响。研究若何控制强加锶验常识的影响是很重要的。
- 常识精华精辟(knowledge distillation/KD)办法有很多益处比如不须要特定的硬件或实现就能直接加快模型。开辟基于 KD 的办法并摸索若何晋升机能仍然值得一试。
- 多种小型平台(例如,移动设备、机械人、主动驾驶汽车)的硬件限制仍然是阻碍深层 CNN 扩大的重要问题。若何周全应用有限的可用计算资本以及若何为这些平台设计特定的紧缩办法仍然是个挑衅。
推荐阅读
Java程序员应知道的十条Java优化策略,让你的系统健步如飞
V value : map.get(key); 2017年架构师最重要的48个小时 | 8折倒计时 1、应用StringBuilder(技巧文)StingBuilder 应当是在我们的Java代码中默认应用的,应当避免应用 + 操作符。或许你会对>>>详细阅读
本文标题:当前深度神经网络模型压缩和加速方法速览
地址:http://www.17bianji.com/lsqh/38304.html
1/2 1