首页 > 其他分享 >MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION翻译

MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION翻译

时间:2024-06-23 10:31:58浏览次数:3  
标签:VIA COMPRESSION 缩放 模型 DISTILLATION 准确性 量化 2016 蒸馏

摘要:深度神经网络(DNNs)继续取得重大进展,解决了从图像分类到翻译或增强学习的任务。这个领域的一个受到广泛关注的方面是在资源受限环境中(如移动或嵌入式设备)高效执行深度模型。本文聚焦于这一问题,并提出了两种新的压缩方法,这两种方法共同利用了权重量化和大型网络(称为“教师”网络)到压缩的“学生”网络的蒸馏。我们提出的第一种方法称为量化蒸馏,该方法在训练过程中利用蒸馏,通过将与教师网络相关的蒸馏损失纳入到一个较小的学生网络的训练中,该学生网络的权重被量化到有限的几个等级。第二种方法,可微量化,通过随机梯度下降优化量化点的位置,以更好地适应教师模型的行为。我们通过在卷积和循环架构上的实验验证了这两种方法。我们展示了量化的浅层学生网络可以达到与最先进的全精度教师模型相似的准确性水平,同时提供高达数量级的压缩和几乎与深度减少成线性关系的推理加速。总之,我们的结果使得资源受限环境下的DNNs能够利用在更强大设备上开发的架构和准确性进展。

第一章 引言
背景。神经网络在解决多种真实世界问题中表现出极高的效果,例如图像分类(Krizhevsky等,2012年;He等,2016年),翻译(Vaswani等,2017年),语音合成(Oord等,2016年)或强化学习(Mnih等,2013年;Silver等,2016年)。与此同时,现代神经网络架构通常需要大量的计算、空间和电力,通常需要强大的GPU来进行训练和评估。关于大型模型是否对提高准确性确实必要的辩论仍在继续。已知单个网络权重可能是多余的,并且可能不携带重要信息,例如Han等(2015年)。同时,大型模型通常有能力完全记住数据集(Zhang等,2016年),但它们并不这样做,而是似乎学习到了通用的任务解决方案。一个关于为何需要过完备表示的假设是,它们通过将局部最小值转变为鞍点(Dauphin等,2014年)或发现不依赖于精确权重值的强大解决方案(Hochreiter和Schmidhuber,1997年;Keskar等,2016年)来使学习成为可能。如果大型模型仅在训练期间需要为了鲁棒性,那么应该可以实现这些模型的显著压缩,而不影响准确性。这种直觉通过两个相关但略有不同的研究方向得到加强。
第一个方向是关于训练量化神经网络的工作,例如Courbariaux等(2015年);Rastegari等(2016年);Hubara等(2016年);Wu等(2016年);Mellempudi等(2017年);Ott等(2016年);Zhu等(2016年),这些研究表明,即使权重的值被限制在一组整数水平时,神经网络也能收敛到良好的任务解决方案。
第二个方向旨在压缩已训练的模型,同时保持它们的准确性。为此,提出了各种优雅的压缩技术,例如Han等(2015年);Iandola等(2016年);Wen等(2016年);Gysel等(2016年);Mishra等(2017年),它们结合了量化、权重共享和精心编码网络权重,以将最先进的深度模型的大小减少数个数量级,同时加速推理。这两个研究方向都非常活跃,并且已经显示出可以在嵌入式设备或手机上提供此类模型时,显著压缩和准确性改善是至关重要的。然而,压缩深度网络的文献几乎专门关注于为给定模型找到好的压缩方案,而不显著改变模型的结构。另一方面,最近的并行工作(Ba和Caruana,2013年;Hinton等,2015年)介绍了蒸馏过程,可用于将给定模型的行为转移到任何其他结构。这可用于压缩,例如获得集合的紧凑表示(Hinton等,2015年)。然而,学生模型的大小需要足够大,以便学习成功。一个太浅、太窄或缺少必要单元的模型,可能会导致相当大的准确性损失(Urban等,2016年)。
在这项工作中,我们检验蒸馏和量化是否可以共同利用以实现更好的压缩。我们从直觉出发,1)应利用高精度、全精度教师模型的存在来提高量化模型的性能,而2)量化模型可以提供比仅通过减少层数或层宽度的蒸馏过程更好的压缩。尽管我们的方法非常自然,但当这两个想法结合时,会引发有趣的研究问题。

贡献。我们提出了两种方法,允许用户通过蒸馏一个较浅的学生网络与较深的教师网络达到相似的准确性,以及通过将学生的权重量化到一组限定的整数级别并使用更少的层权重,来复合压缩深度和宽度。基本思想是量化模型可以利用蒸馏损失(Hinton等,2015年),正确目标(由标签表示)和软目标(由教师的输出表示)之间的加权平均。我们通过两种不同的方法实现这种直觉。第一种称为量化蒸馏,旨在通过将其纳入学生网络的训练过程中,利用蒸馏损失,该学生网络的权重受到限制在一组级别。第二种方法,我们称之为可微量化,采用不同的方法,试图通过随机梯度下降收敛到量化点的最优位置。我们通过在卷积和循环网络架构上的一系列实验来实证验证这两种方法。
我们展示了量化的浅层学生可以在诸如CIFAR和ImageNet(用于图像分类)和OpenNMT及WMT(用于机器翻译)的数据集上达到与全精度和更深的教师模型相似的准确性水平,同时提供高达数量级的压缩和与深度线性相关的推理加速。
相关工作。我们的工作是知识蒸馏(Ba和Caruana,2013年;Hinton等,2015年)的一个特例,我们专注于获取既量化又更浅的高准确性学生的技术。更一般地说,它可以被看作是具有特权信息学习的一个特例,例如Vapnik和Izmailov(2015年);Xu等(2016年),其中学生获得了来自更大、预训练模型输出形式的额外信息。我们在可微量化中使用的优化量化点位置的学习过程的想法,之前已在Lan等(2014年);Koren和Sill(2011年);Zhang等(2017年)中使用过,尽管是在矩阵完成和推荐系统的不同背景下。在Hinton等(2015年)中提到了使用蒸馏进行尺寸缩减,用于蒸馏集合。据我们所知,唯一一个在量化背景下使用蒸馏的工作是Wu等(2016年b),它用于提高二值神经网络在ImageNet上的准确性。我们显著地改进了这个想法,例如,我们的4位量化版本的ResNet18的准确性高于全精度的ResNet18(匹配ResNet34教师的准确性):它的顶尖-1准确性(>15%)和顶尖-5准确性(>7%)比Wu等(2016年b)中最准确的模型高。

第二章 基础知识

2.1 量化过程

我们首先定义一个缩放函数 sc : Rn → [0, 1],它将取值范围任意的向量标准化为取值在 [0, 1] 范围内的向量。有了这样一个函数,量化函数的一般结构如下:

Q(v) = sc^{-1}(\hat{Q}(sc(v))) \tag{1}

其中 sc−1sc−1 是缩放函数的逆函数,QQ​ 是实际的量化函数,它只接受 [0, 1] 范围内的值。我们始终假设 v 是一个向量;实际上,权重向量可以是多维的,但我们可以将它们重塑为一维向量,并在量化后恢复原始维度。

缩放。有关缩放函数的各种规范;在本文中,我们将使用线性缩放,例如 He 等人 (2016b),即:

sc(v)=v−βαsc(v)=αv−β​

其中 α=max⁡ivi−min⁡iviα=maxi​vi​−mini​vi​,β=min⁡iviβ=mini​vi​,结果使得目标值位于 [0, 1] 范围内,并且量化函数 Q(v)=αQ(v−βα)+βQ(v)=αQ​(αv−β​)+β。

分桶。这种表述的一个问题是,对整个向量使用相同的缩放因子,其维度可能非常大。幅度不平衡可能导致重大的精度损失,其中大部分缩放向量的元素被推向零。为了避免这种情况,我们将使用分桶,例如 Alistarh 等人 (2016),即我们将缩放函数分别应用于某个固定大小的连续值桶。这里的权衡是,我们为每个桶获得更好的量化精度,但将需要为每个桶存储两个浮点缩放因子。我们将在第5节中描述压缩比较。

量化函数 QQ​ 也可以有几种定义方式。我们将考虑使用均匀和非均匀的量化点布置。

均匀量化。我们固定一个参数 s≥1s≥1,描述使用的量化级别数。直观上,均匀量化考虑在 0 到 1 之间(包括这些端点)均匀分布的 s+1s+1 个点。确定性版本将为每个(缩放的)向量坐标 vivi​ 分配最近的量化点,而在随机版本中,我们以概率方式进行四舍五入,使得结果值是 vivi​ 的无偏估计,具有最小的方差。形式上,具有 s+1s+1 级的均匀量化函数定义为:

\hat{Q}(v, s)_i = \left\lfloor \frac{v_i s}{c} \right\rfloor + \frac{\xi_i}{s} \tag{3}

其中 ξiξi​ 是四舍五入函数。对于确定性版本,我们定义 ki=svi−⌊vis⌋ki​=svi​−⌊vi​s⌋ 并设置 ξi={1,if ki>120,otherwiseξi​={1,0,​if ki​>21​otherwise​,而对于随机版本,我们将设置 ξi∼Bernoulli(ki)ξi​∼Bernoulli(ki​)。注意,kiki​ 是 vivi​ 与小于 vivi​ 的最近量化点之间的标准化距离,并且向量分量是独立量化的。

非均匀量化。非均匀量化接受一组量化点 {p1,…,ps}{p1​,…,ps​} 作为输入,并将每个元素 vivi​ 量化到这些点中最近的一个。为简便起见,我们仅定义这个函数的确定性版本。

第2.2节 随机量化等同于添加高斯噪声

在本节中,我们列出了均匀量化函数的一些有趣的数学特性。显然,随机均匀量化是其输入的无偏估计器,即 (E[Q(v)] = v)。

我们感兴趣的是将这个函数应用于神经网络;由于标量乘积是神经网络执行的最常见操作,我们希望研究 (Q(v)^T x) 的属性,其中 (v) 是网络中某一层的权重向量,(x) 是输入。我们能够展示 (Q(v)^T x = v^T x + \epsilon) (5),其中 (\epsilon) 是一个随机变量,它是渐近正态分布的,即 (\frac{\epsilon}{\sigma_n} \overset{D}{\rightarrow} N(0, 1))。这种收敛随着维数 (n) 而发生。更正式的陈述和证明见附录中的B.1节。

这意味着量化权重等同于在每层的输出(激活函数之前)添加一个零均值误差项,该误差项是渐近正态分布的。这个误差项的方差取决于 (s)。这将量化与倡导在神经网络的中间激活中添加噪声作为正则化器的工作联系起来,例如 Gulcehre 等人(2016)。

标签:VIA,COMPRESSION,缩放,模型,DISTILLATION,准确性,量化,2016,蒸馏
From: https://www.cnblogs.com/FrostyForest/p/18263133

相关文章