论文链接:https://arxiv.org/pdf/1605.04711.pdf
摘要
我们介绍了三值化权重网络(TWNs)——将神经网络权重约束到{+1,0,-1},全精度(float或者double)的权重和三值化权重之间的欧式距离被缩放因子的引入而最小化。此外,基于阈值的三值化函数也被优化来获得一个近似的计算友好的解决方法,TWNs比最近提到的二值化网络的表达能力更强,也更高效。与此同时,TWNs实现了16x 或者 32x 的压缩率,并且与全精度相比乘法操作更少。再MNIST、CIFAR-10和大型数据集ImageNet上的结果也显示了我们的TWNs只稍微比全精度网络差一点,而大幅度领先于类似的二值化网络。
1. Introduction
1.1 Binary weight and model compression
为了解决存储和计算需求,二值化权重和**值的网络相继提出,这些方法大大减少了前向传播和反向传播中的乘法操作,通过简单操作代替许多乘法加速操作来实现硬件上的加速。此外,二值化权重网络也实现了32x 或者 64x的压缩比例。
也有一些技术聚焦于设计轻量级的网络,比如MobileNet、SqueezeNet、ShuffleNet等。
2. Ternary weight networks
我们引入TWNs来解决存储和计算资源有限的问题,将权重约束到{+1,0,-1}。TWNs追求的是全精度权重网络(FPWNs)和二值化权重网络(BPWNs)之间的平衡,具体的细节如下:
- 表达能力:在大多数目前的网络架构中(如VGG、GoogleNet、ResNet等),卷积核的普遍尺寸为 3x3,在二值化精度下,共有中不同的情况,然而,同样尺寸下的三值化有中情况,相比于二值化的表达能力提升了 38x。
- 模型压缩:在TWNs,每个权重单元需要2bit的存储空间,因此,TWNs相比于float(32-bit)和double(64-bit)实现了16x 和 32x 的压缩比率。以VGG-19为例,float型的权重参数需要~500M的存储空间,而三值化后的模型只需要大约32M的存储空间。因此,尽管TWMs的压缩比率比BPWNs少了2倍,但是相比于全精度的模型已经是好很多了。
- 计算需求:相比于BPWNs,TWNs多了一个0状态,然而,“0”项也不需要做乘法操作,因此,MAC操作相比于二值化网络没有变化。因此,它对于训练大规模网络的硬件平台也是硬件友好的。
在下面的部分,我们会给出关于三值化网络问题的具体细节和一个近似却高效的解决方法,在这之后,一个简单的误差反向传播训练算法被引出,并在最后描述了在run time阶段的用途。
2.1 Problem formulation
为了使得三值化权重网络表现得很好,我们来解一个优化问题——最小化全精度权重W和带有缩放因子 的三值化权重之间的欧式距离。优化问题被公式化如下:
这里的n代表卷积核的尺寸,这里需要注意的是n和XNOR-Net里面的n意义一致,是一个单个卷积核包含的权重的数量,并不是像其他博客中说到的一层的权重数量,做一个近似,那么三值化权重网络前向传播的基本运算如下:
这里的X表示输入,*表示卷积或者内积运算,g表示非线性**函数,表示没有乘法的卷积或者内积运算;表示该层的输出,同时也是下一层的输入。
2.2 Approximated solution with threshold-based ternary function
一种求解优化问题(1)的方法就是对成本函数扩展,即将约束放到目标函数中构造拉格朗日方程,进而对的求导,然而,这样得到的解不是相互独立的。因此,没有一个确定式的解决方案,为了克服这个问题,我们找到了一个近似的优化方法——基于阈值的三值化函数。
这里的,代表的是中元素的个数,是一个与无关的常量。因此,对于给定的优化问题可以如下解决:
将得到的代入(4)式中,的最优值如下:
问题(6)没有直接的解决方案,尽管离散优化可以用来解决这个问题(因为的状态是有限的),但是这样会十分耗时。相反,如果我们做一个简单的假设——s是由均匀分布或者正太分布产生的,当s均匀的分布在[-a,a]之间,在(0,a]之间,的近似值为,即;当s是由正太分布产生的,那么的近似值为,即;因此,我们取。
2.3 Training with stochastic gradient descent method
- 我们使用SGD算法来训练网络;
- 前向传播中用到的是三值化的权重,但反向传播中更新的是原始权重;
- 另外两个tricks,BN层和变化的学习率被采用,也可以使用动量做收敛加速;
2.4 Model compression and run time usage
在前向传播中,缩放因子与输入相乘得到新的输入,因此,部署过程中我们仅仅需要三值化的权重和全精度的缩放因子值,这导致了在推理阶段有16x 或者 32x的压缩比例。
3. 实验
细节上的配置:实验结果:
可以看出来,相比于全精度网络我们的精度只掉了一点,但要比BPWNs的精度高很多,这使得在压缩比例和精度之间取了一个平衡。