港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

雷锋网(公众号:雷锋网)AI科技评论按:神经网络功能强大,但是其巨大的存储和计算代价也使得它的使用特性,特别是在一些计算能力相对较弱的移动设备上受到了很大的限制。为了解决这个问题, 最近有许多针对于神经网络压缩和加速的工作被提出, 例如神经网络剪枝, 权重矩阵低秩分解,权重量化等。这次分享主要是针对于权重量化这一类方法。

近期,在雷锋网 GAIR 大讲堂上,来自香港科技大学的博士生侯璐同学分享了深度学习网络的权重量化的一些最新进展。以及几篇ICLR的论文解读。视频回放地址:http://www.mooc.ai/open/course/473

侯璐,香港科技大学在读博士,主要研究方向为机器学习。

分享主题:基于损失函数的神经网络量化方法

分享提纲

1. 概述近期神经网络压缩和加速的工作, 例如神经网络剪枝, 权重矩阵低秩分解,权重量化等。

2. 回顾近两年来的权重量化方法,并分析这些方法的优缺点。

3. 介绍基于减小最终目标函数的量化方法, 并分析这种方法和其他量化方法的关系和优势。

分享内容

深度学习在我们的的生活中已经得到了非常广泛的应用,包括自动驾驶、机器翻译、医疗、游戏竞技等方面。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

先介绍一下深度学习模型的建立。深度学习一般分为训练和测试两个模块。在训练部分,训练模型、数据集以及耗费的GPU资源一般都很大,但测试时我们往往要把这些模型应用到如手机等计算能力较弱的平台。这是就会遇到两个问题,一是计算资源不足,二是内存不足。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

目前也有很多研究工作在试图解决这个问题。方法包括使用更加先进的硬件,迁移学习,优化算法,但今天的分享内容着重讲模型的压缩和加速。港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

模型压缩这个领域当前比较火的有这几个方向。一是权重的剪枝与共享,二是使用一些更加紧凑又有效的模块,三是使用一些低秩的矩阵,最后就是今天分享的重点——权重量化。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

先介绍一下权重剪枝。这是2015在NIPS上提出来的,这个方法分为三步,先训练一个全连接的网络,然后去掉一些不太重要的连接,最再训练剪枝后的网络。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

在介绍一下权重共享,这个方法是2016年NIPS的bestpaper中提出的。该方法同样分为三步,第一步就是剪枝的过程,第二步是量化和权重共享,最后使用哈弗曼编码处理达到更高的压缩率。但这种方法对计算量的减少并不明显。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

第二部分就是使用更加紧凑有效的模型,如SqueezeNet,MobileNet,ShuffleNet等。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

SqueezeNet在较小的网络上效率提升并不显著。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

其实这两种方法和别的方法相比实施起来并不容易。第三部分我想介绍一下低秩矩阵的方法,这种方法可以减少计算中乘法和加法的次数也减少了。但问题也很明显,即安插到原模型后训练量会增加。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

接下来是今天的重点,即权重量化的内容。最简单的是二值化,用1个比特来表示原来32比特表示的权重。更精确的是三值化,最常见的是m-bit。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

先介绍一下权重量化与之前方法相比较下的优势,包括训练与量化同时进行等。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

然后再说一下量化的流程。简单介绍就是先用量化之后的权重做正向传播,再做反向传播得到量化权重的梯度,然后更新权重进入下一次迭代。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

接下来介绍一下二值化网络的主要工作,第一个是BinaryConnect,这种方法虽然可以量化,却无法知晓量化后的效果优劣。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

第二是Binary Weight Network,这种方法任然无法保证对降低损失函数有正面效果。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

然后是三值化的工作,包括Ternary-connect 和Ternary Weight Networks (TWN)以及Trained Ternary Quantization(TTQ)。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

前两种方法的问题与二值化工作的问题是一样的,但权重的精度提高了。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

这种方法任然存在与前两种方法类似的问题。目前更常见的方法是m-bit的方法。包括DoReFa-Net和Low-Bit Neural Network (LBNN)两种方法。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

如上图所示,这两种方法各自存在自己的问题。接下来介绍我们团队在ICLR2017和2018发表的方法。先将Loss-aware Weight Quantization的框架。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

然后求解算法用的是Proximal Newton Algorithm。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

再将这个算法应用到之前的formulation。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

我分析一下上面两步的具体含义,如下:

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

然后在看一下具体的算法。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

这个算法的一些证明如下:

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

以上是框架介绍,接下来具体介绍Loss-aware Binarization,

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

以及Loss-aware Ternarization (LAT)。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

针对Ternarization,我们提出了精确求解的方法即LATe。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

但因为精确解涉及到排序算法,耗费增大。然后我们提出LATa去求近似解。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

之后我们还提出Loss-aware Ternarization的两个变种。

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

接着介绍一下实验部分,FNN实验我们使用了MNIST、CIFAR-10、CIFAR-100、SVHN这四个数据集。最终模型的实验效果如下

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

RNN实验我们使用WAR andPeace、Linux Kernel、Penn Treebank这三个数据集,实验结果如下

港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

这两个实验我们的算法的表现都是比较好的。这就是我今天全部的分享内容。

以上就是雷锋网对侯璐博士直播全部内容的整理,大家如果感兴趣可以直接去看观看视频回放:http://www.mooc.ai/open/course/473,更多公开课视频请到雷锋网 AI 慕课学院观看。


港科大博士生侯璐:基于损失函数的神经网络量化方法|分享总结

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/129786.html

(0)
上一篇 2021年8月31日
下一篇 2021年8月31日

相关推荐

发表回复

登录后才能评论