2020李宏毅学习笔记——353.Network Compression(4

    技术2022-07-11  93

    4.Parameter Quantization(参数量化)

    less bits 一个很直观的方法就是使用更少bit来存储数值,例如一般默认是32位,那我们可以用16或者8位来存数据。

    weight clustering(权重聚类) 最左边表示网络中正常权重矩阵,之后我们对这个权重参数做聚类(可以用kmean),比如最后得到了4个聚类,那么为了表示这4个聚类我们只需要2个bit,即用00,01,10,11来表示不同聚类。之后每个聚类的值就用均值来表示。这样的一个缺点就是误差可能会比较大。每个参数不用保存具体的数值,而是只需要保存参数所属的类别(取均值所得)即可。

    Huffman Encoding 思路很简单,以上面的图为例,就是对于常出现的聚类用少一点的bit来表示,而那些很少出现的聚类就用多一点的bit来表示。

    Binary Connect(二进制权重) Binary Connect是以一种更加极致的思路来对模型进行压缩,即每个节点只有1或-1来表示。比较具有代表性的论文:BInary Connect BInary Network XNOR-Net

    简单介绍一下Binary Connect的思路:灰色节点表示使用binary weight的神经元,蓝色节点可以是随机初始化的参数,也可以是真实的权重参数。 第一步我们先计算出和蓝色节点最接近的二元节点,找一个离蓝点最近的一个Binary Weight,并计算出其梯度方向(红色剪头)。 第二步,蓝色节点的更新方向则是按照红色箭头方向更新,而不是按照他自身的梯度方向更新。如下图示,梯度下降后,蓝色节点到了一个新的位置。 最后在满足一定条件后(例如训练之最大epoch),蓝色节点会停在一个灰色节点附近,那么我们就是用该灰色节点的权重。 结果还不错,可以看到把权重限制为+1或者-1相当于加上了正则化。

    Processed: 0.009, SQL: 9