专栏名称: 机器之心
专业的人工智能媒体和产业服务平台
51好读  ›  专栏  ›  机器之心

AAAI 2018 | 阿里巴巴提出极限低比特神经网络,用于深度模型压缩和加速

机器之心  · 公众号  · AI  · 2018-01-22 01:27

正文

选自arXiv

主要作者:冷聪 窦则胜 李昊 朱胜火 金榕 

机器之心编译



国际知名的人工智能学术会议 AAAI 2018 即将于 2 月份在美国新奥尔良举办,据机器之心了解,阿里巴巴共有 11 篇论文被接收。在介绍的这篇论文中,阿里巴巴提出利用ADMM算法学习极限低比特神经网络的架构。


论文:Extremely Low Bit Neural Network: Squeeze the Last Bit Out with ADMM



论文地址:https://arxiv.org/pdf/1707.09870.pdf


研究背景


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


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



更进一步,我们在约束条件中引入一个 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.