【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

近年来,深度学习在人工智能领域取得了重大的突破。在计算机视觉、语音识别等诸多领域,深度神经网络(DNN, Deep Neural Network)均被证明是一种极具成效的问题解决方式。如卷积神经网络(CNN, Convolutional neural network)在计算机视觉诸多传统问题(分类、检测、分割)都超越了传统方法,循环神经网络(RNN, Recurrent Neural Networks)则在时序信号处理,如机器翻译,语音识别等超过传统方法。

在利用深度网络解决问题的时候人们常常倾向于设计更为复杂的网络收集更多的数据以期获得更高的性能。但是,随之而来的是模型的复杂度急剧提升,直观的表现是模型的层数越来越深,参数越来越多。这会给深度学习带来两个严重的问题:

  1. 随着模型参数的增多,模型的大小越来越大,给嵌入式端模型的存储带来了很大的挑战。
  2. 随着模型的增大,模型inference的时间越来越长,latency越来越大。

以上两个问题给深度学习在终端智能设备上的推广带来了很大的挑战。比如,经典的深度卷积网络VGG-16的模型大小达到528M,用户很难接受下载一个如此大的模型到手机或者其他终端设备上。同时,在一般的智能手机上,VGG-16识别一张图像的时间高达3000+ms,这个latency对于大多数用户来说也是难以接受的。此外,由于深度网络的计算量很大,运行深度网络的能耗很高,这对于手机等终端设备也是一个巨大的挑战。

基于低比特表示技术的神经网络压缩和加速算法

在这个工作中,我们提出一种基于低比特表示技术的神经网络压缩和加速算法。我们将神经网络的权重表示成离散值,并且离散值的形式为2的幂次方的形式,比如{-4,-2,-1,0,1,2,4}。这样原始32比特的浮点型权重可以被压缩成1-3比特的整形权重,同时,原始的浮点数乘法操作可以被定点数的移位操作所替代。在现代处理器中,定点移位操作的速度和能耗是远远优于浮点数乘法操作的。

首先,我们将离散值权重的神经网络训练定义成一个离散约束优化问题。以三值网络为例,其目标函数可以表示为:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

更进一步,我们在约束条件中引入一个scale参数。对于三值网络,我们将约束条件写成{-a, 0, a}, a>0. 这样做并不会增加计算代价,因为在卷积或者全连接层的计算过程中可以先和三值权重{-1, 0, 1}进行矩阵操作,然后对结果进行一个标量scale。从优化的角度看,增加这个scale参数可以大大增加约束空间的大小,这有利于算法的收敛。如下图所示,

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

对于三值网络而言,scale参数可以将约束空间从离散的9个点扩增到4条直线。

为了求解上述约束优化问题,我们引入ADMM算法。在此之前,我们需要对目标函数的形式做一个等价变换

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

其中Ic为指示函数,如果G符合约束条件,则Ic(G)=0,否则Ic(G)为无穷大。该目标函数的增广拉格朗日形式为:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

ADMM算法将上述问题分成三个子问题进行求解,即

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

与其它算法不同的是,我们在实数空间和离散空间分别求解,然后通过拉格朗日乘子的更新将两组解联系起来。

第一个子问题需要找到一个网络权重最小化:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

在实验中我们发现使用常规的梯度下降算法求解这个问题收敛速度很慢。在这里我们使用Extra-gradient算法来对这个问题进行求解。Extra-gradient算法包含两个基本步骤,分别是:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

第二个子问题在离散空间中进行优化。通过简单的数学变换第二个子问题可以写成:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

该问题可以通过迭代优化的方法进行求解。当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:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

Resnet:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

GoogleNet:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

其中BWN[1]和TWN[2]为我们对比的两种Binary网络和Ternary网络量化方法。从这些结果可以看出,在各个网络框架下,我们的算法都显著超过对比算法。同时,当比特数达到3时,量化之后的网络精度相比于原始网络几乎可以达到无损。在Alexnet和VGG16这两个冗余度比较高的网络上,量化之后的网络甚至可以取得超过原始网络的精度,这是因为量化操作可以起到一个正则的作用,从而提高这类网络的泛化性能。

Pascal VOC目标检测:我们在SSD检测框架下对算法进行验证,分别采用了VGG16+SSD和Darknet+SSD两种网络结构。对于检测任务,尝试了Ternary网络和{-4, -2, -1, 0, 1, 2, 4}两种量化形式。实验结果如下:

【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

对于Darknet我们使用了两种设置,第一种设置中所有的权重进行相同的量化;第二种设置中,1x1的卷积核使用INT8量化,即括号中的结果。和识别中的结果类似,在VGG+SSD结构中,我们的算法几乎可以做到无损压缩。


原文发布时间为:2018-01-18

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:【AAAI Oral】阿里提出新神经网络算法,压缩掉最后一个比特

上一篇:linux bash环境变量简单总结


下一篇:Shell内置命令