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

简介: 在利用深度网络解决问题的时候人们常常倾向于设计更为复杂的网络收集更多的数据以期获得更高的性能。但是,随之而来的是模型的复杂度急剧提升,参数越来越多,给深度学习在设备上的应用带来挑战。阿里iDST团队最新提出的ADMM神经网络压缩和加速算法,可以无损地压缩掉最后一个比特。

近年来,深度学习在人工智能领域取得了重大的突破。在计算机视觉、语音识别等诸多领域,深度神经网络(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比特的整形权重,同时,原始的浮点数乘法操作可以被定点数的移位操作所替代。在现代处理器中,定点移位操作的速度和能耗是远远优于浮点数乘法操作的。

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

9736b3098539f9fef50ffe70f4f77d31f2451e41

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

45ce666ffcf4cb0012f5531c901920d5db35cd78

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

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

b08a63f92f463af2f8fe4e10c00d49a75a6f8fbb

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

81bc29b4d395f7b4c75d8a7c818ef88ec6273b2281bc29b4d395f7b4c75d8a7c818ef88ec6273b22

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

5c331c8d78fd026f6c03e9b465301876dc05e54d

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

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

8ff31d6eb224bf8cf44e2afddef662852044ac8e

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

c080cb61b5ad87fbbfe07553972338c31db5dbbf

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

d327f04861e51c28d84711865e89a95d6bfa9411

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

67a1071ef61674932a94a63c5d6e73e434b01cad

Resnet:

ce0c6e1ccd5d602a7be0e34df5c254261ed999a8

GoogleNet:

e1e73b9464c923b0d0ddddc421e0b97fcd6171bd

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

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

97ec121dcf1327d2ef2cef0cbec7f8f8b7009eaf

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


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

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

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

相关文章
|
27天前
|
机器学习/深度学习 存储 算法
神经网络分类算法原理详解
神经网络分类算法原理详解
50 0
|
1月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
229 1
|
1月前
|
机器学习/深度学习 自然语言处理 搜索推荐
神经网络算法 —— Embedding(嵌入)!!
神经网络算法 —— Embedding(嵌入)!!
60 1
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【MATLAB】tvf_emd_ MFE_SVM_LSTM 神经网络时序预测算法
【MATLAB】tvf_emd_ MFE_SVM_LSTM 神经网络时序预测算法
46 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【MATLAB】REMD_ MFE_SVM_LSTM 神经网络时序预测算法
【MATLAB】REMD_ MFE_SVM_LSTM 神经网络时序预测算法
44 5
|
1月前
|
机器学习/深度学习 算法 计算机视觉
|
12天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
286 9
|
12天前
|
机器学习/深度学习 数据采集 算法
|
15天前
|
机器学习/深度学习 自然语言处理 算法