Abstract
在DeepLearning日益发展的同时,模型压缩的关注度也越来越大。继BWN和TWN之后, 这篇论文在超低比特量化领域的一篇新思想文章,发表在AAAI2018上,作者是阿里的。
该文的主要思想是将超低bit quantization建模成一个离散约束优化问题(discretely constrained optimization problem)。借助ADMM(Alternating Direction Method of Mutipliers)思想,将连续参数从网络的离散约束中分离出来,并将原来的难题转化为几个子问题。该文针对这些子问题采用了extragradient以及iterative quantization算法(比传统算法更快收敛)。实验在图像分类以及目标检测(SSD)上都比最新的方法要好。
解决了什么?为什么写这篇文章?
- 之前的工作将pretrained weights量化到4-12bit效果很好,但是当只用1bit或者2bit表示weights时,只是在小datasets(MNIST、CIFAR10)上表现很好,在大datasets通常会产生很大的loss。
- 该文提出了一个独特的strategy,将超低bit weights作为一个离散约束的非凸优化问题(MIP)。借助ADMM算法,本文主要思想是使用离散空间中的辅助变量将离散约束中的连续变量解耦。不像之前量化方法修改连续参数中的特定梯度,本文同时优化连续和离散空间,使用增广拉格朗日函数连接了两个空间的解。
ADMM算法
主要参考这篇博客http://mullover.me/2016/01/19/admm-for-distributed-statistical-learning/
若优化问题可以表示为
其中 与是优化变量,是目标函数,是等式约束条件。
等式的增广拉格朗日函数(augmented Lagrangian)可以表示为:
其中是拉格朗日乘子, 是惩罚参数。增广就是由于加入了二次惩罚项。
则ADMM由三步迭代组成:
可以看出,每次迭代分为三步:
1.求解与相关的最小化问题,更新变量
2.求解与相关的最小化问题,更新变量
3.更新
Objective function
记作为一个NN的loss fuction, {}, 代表网络的第层的权重,是一个维的向量, .本文中由于是训练超低bit进行量化,特别的,网络中的weights被严格限制为0或者是2的幂次方,这样float-point操作就可以被更快的bit移位操作所代替。假设training一个三元网络{},这样就training这样的网络就可以在数学公式上作为MIP:
由于weights被严格限制为0或者2的幂次方,所以, N是bits的数量。在这里引入一个scaling factor参数来限制,..这里应该注意的是不同层的是不同的。换句话说,对于一个层的网络来说,实际是引入了L个不同的scaling factors 。这样低比特量化网络的目标函数可以表示为:
其实在每层中是不需要花更多的计算量的,由于可以在最后乘以这个因子就可以。可以帮助扩展constraint space.如下图,
在二维的空间中,上图是一个三元网络,被限制为,可能的解是九个离散点,当增加因子之后,约束空间被扩展为四条线。这种约束空间的large expansion可以是优化变得更容易。
Decouple with ADMM
公式(3)其实是一个NP难问题,由于weights被限制在一个离散的空间。这里引入一个辅助变量,受离散空间限制,让它等于原始变量。首先,定义一个indicator function , 目标函数(3)变成
其中如果, , 否则
引入辅助变量,重写公式(4),
,公式(6)可以被转化为:
根据ADMM,这个问题的求解迭代步骤:
这三部分别是proximal step, projection step以及dual update.跟之前的工作不同的是,这里是同时在连续空间以及离散空间优化问题,这样在learning过程中两个空间的解通过ADMM算法就联系在一起了。
Algorithm subroutines
- 1.Proximal step
对于这个步骤,在连续space优化(??为什么是连续空间,W和G都是离散空间的啊~想不通),需要最小化下面这个公式
利用standard梯度下降方法可以得到的梯度:
然而该文发现用venilla梯度下降方法收敛很慢,因为第二个平方项在整个lost中所占比重很大,因此SGD迅速将优化器拉回到当前量化的权重以至于第二项消失(Since the second quadratic term occupies a large proportion of the whole lost, SGD will quickly pull the optimizer to the currently quantized weights so that the second term vanishes, and stack in that point没太懂?)。这就导致了loss的次优解,由于网络的损失函数没有得到充分的优化。
为了克服这个困难,本文采用了extragradient方法。extragradient方法的一次迭代由两个简单的步骤组成,prediction和correction:
其中和都是学习率。extragradient方法的显著特点是使用了额外的梯度步骤,这可以当做在优化过程中的一个guide。这种额外的迭代考虑了曲率信息,导致比stardard梯度下降方法更好的收敛。对于prediction step,算法将快速move到接近值的一个点进而导致了平方项消失;对于correction step,算法最小化loss函数。这两个步骤就避免陷入局部最小。在实践中,这种方法极大地加速了收敛。
2.projection step
对于辅助变量来说,所有都被解耦,因此每层的辅助变量都可以被独立的被优化。寻找一种Euclidean映射可以将映射到离散的上。这里记作为.这种映射可以被表示为:
将scaling因子拿掉,变为:
本文提出了一种量化迭代方法,该方法交替优化和,一个固定另一个变。当固定的时候,这个问题变成了一个单变量优化,。当固定,实际是在上的投影,。
实验
1.Image Classification
可以看出无论是在哪个网络,本文超低比特量化都最突出。
需要着重看的是,为什么GoogleNet会降低的比较多,本文的猜测+实验是由于的卷积核用这样强的一个调节器来优化会导致网络的欠拟合。在网络的不同部分用不同的bit来量化会更为有效。