Advertisement

[deep compression] compressing deep neural networks 论文学习

阅读量:

deep compression 深度压缩 ICLR2016
论文地址:https://arxiv.org/abs/1510.00149

深度压缩技术分为三个主要步骤,在全连接层进行优化:

  1. 网络剪枝技术
  2. 权重共享机制
  3. 哈夫曼编码方法

1,network 剪枝

剪枝过程看作是最小化loss的过程:

这里写图片描述

该损失函数L由权重矩阵W与二进制掩码mask进行点积运算构成;这些二进制掩码变量mask用于标识哪些权重参数更为关键;例如,在神经网络中通常会将具有较大权重系数w₁的节点标记为重要节点。

那么怎么知道这个w的重要性呢?!

这里写图片描述

该论文指出设置了threshold。该阈值等于w的绝对均值(the average absolute value),其中a设为该阈值,则b则设为该阈值加一个小幅度t(t是一个很小的实数 a small margin)。

这个表达式较易理解的方式是将a与b视为同一阈值。它们之间的差异极为微小(仅是一个极其微小的t),将其视为同一阈值对结果影响可以忽略不计。因此实际上存在两种情况:一种情况是变量w大于该阈值(表示该变量重要),另一种情况则是变量w小于该阈值(表示该变量不重要或可忽略)。需要注意的是,在这种情况下W采用拉格朗日乘数法与梯度下降算法相结合的方式进行更新:

这里写图片描述

持续剪裁,并监测loss的变化情况。若发现loss增加,则表明这个剪枝不够明智,并进行调整。流程图如下:

这里写图片描述

剪除权重w后发现其分布分为正负两个部分。论文未对此进行说明:是否意味着权重为正时对损失有积极影响?而负权重则可能带来负面影响。这背后的原因是什么?是否需要针对负面权重的影响进行抑制?

这里写图片描述

2,权值共享

研究者指出,在权值之间差异较小的情况下,并非有必要为每个w单独设定不同的权重;相反地这些差异不大的w群体可以共享一个average weight。在此研究中采用k均值聚类算法然而该算法存在一个显著的问题即其初始设置对最终聚类结果具有显著影响因此本研究通过比较Forgy Density-based 和 Linear 三种方法在不同初始条件下对权值初始化效果的表现最终确定采用13个聚类数量

这里写图片描述

3,Huffman 编码

用于最后的硬压缩,减小parameters memory


总体流程图:

这里写图片描述

experimental result

这里写图片描述
这里写图片描述
这里写图片描述

全部评论 (0)

还没有任何评论哟~