微分 2018-01-18
【新智元导读】在利用深度网络解决问题的时候人们常常倾向于设计更为复杂的网络收集更多的数据以期获得更高的性能。但是,随之而来的是模型的复杂度急剧提升,参数越来越多,给深度学习在设备上的应用带来挑战。阿里iDST团队最新提出的ADMM神经网络压缩和加速算法,可以无损地压缩掉最后一个比特。论文已经被AAAI 2018录用为oral。
近年来,深度学习在人工智能领域取得了重大的突破。在计算机视觉、语音识别等诸多领域,深度神经网络(DNN, Deep Neural Network)均被证明是一种极具成效的问题解决方式。如卷积神经网络(CNN, Convolutional neural network)在计算机视觉诸多传统问题(分类、检测、分割)都超越了传统方法,循环神经网络(RNN, Recurrent Neural Networks)则在时序信号处理,如机器翻译,语音识别等超过传统方法。
在利用深度网络解决问题的时候人们常常倾向于设计更为复杂的网络收集更多的数据以期获得更高的性能。但是,随之而来的是模型的复杂度急剧提升,直观的表现是模型的层数越来越深,参数越来越多。这会给深度学习带来两个严重的问题:
随着模型参数的增多,模型的大小越来越大,给嵌入式端模型的存储带来了很大的挑战。
随着模型的增大,模型inference的时间越来越长,latency越来越大。
以上两个问题给深度学习在终端智能设备上的推广带来了很大的挑战。比如,经典的深度卷积网络VGG-16的模型大小达到528M,用户很难接受下载一个如此大的模型到手机或者其他终端设备上。同时,在一般的智能手机上,VGG-16识别一张图像的时间高达3000+ms,这个latency对于大多数用户来说也是难以接受的。此外,由于深度网络的计算量很大,运行深度网络的能耗很高,这对于手机等终端设备也是一个巨大的挑战。
基于低比特表示技术的神经网络压缩和加速算法
在这个工作中,我们提出一种基于低比特表示技术的神经网络压缩和加速算法。我们将神经网络的权重表示成离散值,并且离散值的形式为2的幂次方的形式,比如{-4,-2,-1,0,1,2,4}。这样原始32比特的浮点型权重可以被压缩成1-3比特的整形权重,同时,原始的浮点数乘法操作可以被定点数的移位操作所替代。在现代处理器中,定点移位操作的速度和能耗是远远优于浮点数乘法操作的。
首先,我们将离散值权重的神经网络训练定义成一个离散约束优化问题。以三值网络为例,其目标函数可以表示为:
更进一步,我们在约束条件中引入一个scale参数。对于三值网络,我们将约束条件写成{-a, 0, a}, a>0. 这样做并不会增加计算代价,因为在卷积或者全连接层的计算过程中可以先和三值权重{-1, 0, 1}进行矩阵操作,然后对结果进行一个标量scale。从优化的角度看,增加这个scale参数可以大大增加约束空间的大小,这有利于算法的收敛。如下图所示,
对于三值网络而言,scale参数可以将约束空间从离散的9个点扩增到4条直线。
为了求解上述约束优化问题,我们引入ADMM算法。在此之前,我们需要对目标函数的形式做一个等价变换。
其中Ic为指示函数,如果G符合约束条件,则Ic(G)=0,否则Ic(G)为无穷大。该目标函数的增广拉格朗日形式为:
ADMM算法将上述问题分成三个子问题进行求解,即
与其它算法不同的是,我们在实数空间和离散空间分别求解,然后通过拉格朗日乘子的更新将两组解联系起来。
第一个子问题需要找到一个网络权重最小化:
在实验中我们发现使用常规的梯度下降算法求解这个问题收敛速度很慢。在这里我们使用Extra-gradient算法来对这个问题进行求解。Extra-gradient算法包含两个基本步骤,分别是:
第二个子问题在离散空间中进行优化。通过简单的数学变换第二个子问题可以写成:
该问题可以通过迭代优化的方法进行求解。当a或Q固定时,很容易就可以获得Q和a的解析解。
实验结果
ImageNet图像识别:我们分别在Alexnet、VGG16、Resnet18、Resnet50、GoogleNet等五个主流的CNN框架上验证了所提出的算法。实验中我们分别尝试了Binary网络、Ternary网络、{-2, -1, 0, 1, 2}、{-4, -2, -1, 0, 1, 2, 4}四种形式。在Imagenet上Top-1和Top-5准确度结果如下:
Alexnet和VGG16:
Resnet:
GoogleNet:
其中BWN[1]和TWN[2]为我们对比的两种Binary网络和Ternary网络量化方法。从这些结果可以看出,在各个网络框架下,我们的算法都显著超过对比算法。同时,当比特数达到3时,量化之后的网络精度相比于原始网络几乎可以达到无损。在Alexnet和VGG16这两个冗余度比较高的网络上,量化之后的网络甚至可以取得超过原始网络的精度,这是因为量化操作可以起到一个正则的作用,从而提高这类网络的泛化性能。
Pascal VOC目标检测:我们在SSD检测框架下对算法进行验证,分别采用了VGG16+SSD和Darknet+SSD两种网络结构。对于检测任务,尝试了Ternary网络和{-4, -2, -1, 0, 1, 2, 4}两种量化形式。实验结果如下:
对于Darknet我们使用了两种设置,第一种设置中所有的权重进行相同的量化;第二种设置中,1x1的卷积核使用INT8量化,即括号中的结果。和识别中的结果类似,在VGG+SSD结构中,我们的算法几乎可以做到无损压缩。
参考文献:
[1] Rastegari, M.; Ordonez, V.; Redmon, J.; and Farhadi, A. 2016. Xnor-net: Imagenet classification using binary convolutional neural networks. European Conference on Computer Vision.
[2] Li, F.; Zhang, B.; and Liu, B. 2016. Ternary weight networks. arXiv preprint arXiv:1605.04711.
※论文题目(中英文):极限低比特神经网络:通过ADMM算法压缩掉最后一个比特 / Extremely Low Bit Neural Network: Squeeze the Last Bit Out with ADMM
※主要作者(中英文):冷聪 窦则胜 李昊 朱胜火 金榕 / Cong Leng, Zesheng Dou, Hao Li, Shenghuo Zhu, Rong Jin
加入社群
新智元AI技术+产业社群招募中,欢迎对AI技术+产业落地感兴趣的同学,加小助手微信号: aiera2015_1 入群;通过审核后我们将邀请进群,加入社群后务必修改群备注(姓名-公司-职位;专业群审核较严,敬请谅解)。
此外,新智元AI技术+产业领域社群(智能汽车、机器学习、深度学习、神经网络等)正在面向正在从事相关领域的工程师及研究人员进行招募。