【论文阅读笔记】Towards Effective Low-bitwidth Convolutional Neural Networks

全文概括

  该论文主要是介绍了一些训练量化网络的Tricks,其4-bit网络的表现比 5-bit 的INQ网络效果要好一点

  该论文为训练量化网络提供了三个方法:

  1. 两步优化策略 ,先量化权重,再量化激活值;(Two-step, TS
  2. 逐步量化 ,在训练过程中逐步减少量化位宽;(Progressive Quantization, PQ
  3. 联合训练 浮点网络和低精度网络;(Guided training with a full-precision network, Guide

简介

  以往的经验告诉我们,当权重和激活值一起量化时,很容易陷入一些比较差的局部最小值,这将带来很大的精度损失。

  与同时量化相比,两步量化权重和激活值,更容易优化找到更好的局部最小值;借鉴这种逐步找到更好的局部最小值的想法,逐步降低 bit-width 也是一个好的选择;全精度模型能给低精度模型训练提供指示(但对比时,也需要将全精度模型量化后来对比)

  与逐层量化的网络相比,该方法对于更深的网络,其应用性更强。、


方法

量化函数

  网络应用量化方法 Q ( ⋅ ) Q (\cdot) Q()得到量化值: z q = Q ( z r ) = 1 2 k − 1 r o u n d ( ( 2 k − 1 ) z r ) z_q=Q(z_r)=\frac1{2^k-1}round((2^k-1)z_r) zq=Q(zr)=2k11round((2k1)zr)  其中, z r ∈ [ 0 , 1 ] z_r\in[0,1] zr[0,1],表示全精度值; z q ∈ [ 0 , 1 ] z_q\in[0,1] zq[0,1],表示量化值。

权值量化:
w q = Q ( t a n h ( w ) 2 m a x ( ∣ t a n h ( w ) ∣ ) + 1 2 ) w_q=Q(\frac{tanh(w)}{2max(|tanh(w)|)}+\frac12) wq=Q(2max(tanh(w))tanh(w)+21)  其中, t a n h ( w ) 2 m a x ( ∣ t a n h ( w ) ∣ ) + 1 2 \frac{tanh(w)}{2max(|tanh(w)|)}+\frac12 2max(tanh(w))tanh(w)+21 可以看做是将 w w w 进行归一化,然后再进行量化; t a n h ( ⋅ ) tanh(\cdot) tanh()是减少较大值的影响

激活值量化:

  在将激活值进行量化时,先将激活值应用 clip function ,从而将激活值限制在 [ 0 , 1 ] [0,1] [0,1],然后再进行量化。 f ( x ) = c l i p ( x , 0 , 1 ) = { 0 , x &lt; 0 x , 0 ≤ x ≤ 1 1 , x &gt; 1 f(x)=clip(x,0,1)=\begin{cases}0, &amp;x&lt;0 \\ x, &amp; 0\leq x\leq 1 \\ 1, &amp; x&gt;1 \end{cases} f(x)=clip(x,0,1)=0,x,1,x<00x1x>1 x q = Q ( f ( x ) ) x_q=Q(f(x)) xq=Q(f(x))

带有量化函数的反向传播:

  一般来说,量化函数是不可微分的,所以不能直接进行网络的反向传播。所以为了解决这个问题,我们直观地将 z r z_r zr z q z_q zq 等同起来,即 ∂ z q ∂ z r ≈ 1 \frac{\partial z_q}{\partial z_r} \approx 1 zrzq1。因此, ∂ l ∂ z r \frac{\partial l}{\partial z_r} zrl 可以被近似为 ∂ l ∂ z r = ∂ l ∂ z q ∂ z q ∂ z r ≈ ∂ l ∂ z q \frac{\partial l}{\partial z_r}=\frac{\partial l}{\partial z_q}\frac{\partial z_q}{\partial z_r}\approx \frac{\partial l}{\partial z_q} zrl=zqlzrzqzql

两步优化

  由于之前我们都直观地将 ∂ z q ∂ z r ≈ 1 \frac{\partial z_q}{\partial z_r} \approx 1 zrzq1,所以这必将带来噪声,即梯度方向并不一定是目标方向(如果该公式成立的话,那么直接训练是没有任何问题的)。由于该公式并不完全正确,所以如果同时引入两个该误差,则更可能陷入一个较差的局部最小点。因此,将量化训练分成两个步骤,能减轻训练的困难。

逐步量化

  借鉴两步量化的思想,逐渐减少位宽能减轻训练量化网络的难度,比如 32 b i t → 16 b i t → 8 b i t → 4 b i t → 2 b i t 32bit \rightarrow 16bit\rightarrow8bit\rightarrow4bit\rightarrow2bit 32bit16bit8bit4bit2bit

使用全精度网络进行引导式培训

  该方法是借鉴了信息蒸馏(information distillation)的思想。本文在训练低精度网络的时候,同时训练另一个“引导”网络。“引导网络”和低精度网络拥有一样的网络结构,只是保持全精度权重和全精度激活值(在与低精度网络结果进行对比时,再进行量化比较)

  假设有一些全精度模型,我们所要的低精度网络模型可以直接通过量化其中一个全精度模型得到。

  假设 μ ( x ; W f u l l ) \mu(x;W_{full}) μ(x;Wfull) ν ( x ; W l o w ) \nu(x;W_{low}) ν(x;Wlow) 是两个需要对比的 feature map,前者是全精度的,后者是量化后的,这两者不直接比较。将全精度的 feature map 进行量化, Q ( μ ( x ; W f u l l ) ) Q(\mu(x;W_{full})) Q(μ(x;Wfull)) ν ( x ; W l o w ) \nu(x;W_{low}) ν(x;Wlow) 进行量化,其引导损失为: R ( W f u l l , W l o w ) = 1 2 ∥ Q ( μ ( x ; W f u l l ) ) − ν ( x ; W l o w ) ∥ 2 R(W_{full}, W_{low}) = \frac12\|Q(\mu(x;W_{full}))-\nu(x;W_{low})\|^2 R(Wfull,Wlow)=21Q(μ(x;Wfull))ν(x;Wlow)2  则两个网络训练时的损失变为: L 1 ( W f u l l ) = L θ 1 + λ R ( W f u l l , W l o w ) L_1(W_{full})=L_{\theta_1}+\lambda R(W_{full},W_{low}) L1(Wfull)=Lθ1+λR(Wfull,Wlow) L 2 ( W f u l l ) = L θ 2 + λ R ( W f u l l , W l o w ) L_2(W_{full})=L_{\theta_2}+\lambda R(W_{full},W_{low}) L2(Wfull)=Lθ2+λR(Wfull,Wlow)

实现细节

  在最后一个全连接层之后添加一个标量层(在将low-bit放入softmax层之前)
  使用牛顿SGD,batch_size 设置为 256 256 256
  对于全精度基线,初始学习率设为 0.01 0.01 0.01,每 30 30 30个周期衰减为 1 10 \frac1{10} 101;weight_decay 设置为 0.0001 0.0001 0.0001;动量设置为 0.9 0.9 0.9
  对于量化权重和激活值,初始学习率设为 0.001 0.001 0.001,每 10 10 10个周期衰减为 1 10 \frac1{10} 101

  对于 ResNet-50,只在最后两个残差模块使用 guide loss;对于 AlexNet,在最后两个全连接层使用 guide loss。


实验

  实验对象为两个网络(AlexNet、ResNet-50);两个数据集(Cifar100、ImageNet)。

实验结果

  在AlexNet网络上,4-bit比全精度有所提升;2-bit 比全精度有明显下降;但2-bit 的结果表现的比 直接量化成 2-bit 的基线结果更好。
在这里插入图片描述

  在 ResNet-50 网络上,4-bit和全精度表现一样;2-bit 比全精度有明显下降;但2-bit 的结果表现的比 直接量化成 2-bit 的基线结果更好。
在这里插入图片描述

  通过以上两组对比,可以发现:对比直接量化得到的baseline,2-bit的提升要比4-bit的多,说明对于更难优化的问题,该方法更有效。

  通过消融学习,发现有的论文提到的“第一层和最后一层不进行量化有助于保持精度”,这个现象对于本文来说不存在,即第一层和最后一层量化与否,都对本方法的结果产生不了较大精度损失。
  作者觉得可以通过两方面解释这个问题:1) finetune减少了优化难度;2) PQ + Guide 减轻了优化的不稳定性。
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最近,对于图神经网络的研究日益深入,引起了广泛关注。图神经网络是一种能够对图数据进行建模和分析的神经网络模型。它可以处理任意结构的图形数据,如社交网络、蛋白质互作网络等。 在过去的几年中,研究者们提出了许多图神经网络的模型和方法。然而,这些方法仍然面临一些挑战,例如有效地处理大型图形数据、学习高质量的图嵌入表示以及推理和预测复杂的图结构属性等。 为了克服这些挑战,研究人员开始通过增加神经网络的深度来探索更深的图神经网络模型。深度模型具有更强大的表达能力和学习能力,可以更好地捕捉图数据中的关系和模式。这些深层图神经网络可以通过堆叠多个图神经网络层来实现。每个图神经网络层都会增加一定的复杂性和抽象级别,从而逐渐提高图数据的表达能力。 除了增加深度外,研究人员还提出了一些其他的改进来进一步提高图神经网络的性能。例如,引入注意力机制可以使模型能够自动地选择重要的节点和边来进行信息传播。此外,研究人员还研究了如何通过引入图卷积操作来增强图数据的局部性,从而提高图神经网络模型的效果。 综上所述,对于更深层的图神经网络的研究将在处理大规模图形数据、学习高质量的图表示以及进行复杂图结构属性的推理方面取得更好的性能。随着深度图神经网络的推广和应用,我们可以预见它将在许多领域,如社交网络分析、推荐系统和生物信息学中发挥重要作用,为我们带来更多的机遇和挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值