GDFQ:基于Data-Free的低比特量化方法

本文是华南理工大学的一个团队发表在ECCV2020上的基于生成器的低比特无数据量化(GDFQ)工作。为消除数据依赖问题,GDFQ利用知识匹配生成器以利用预训练全精度模型的分类边界知识与分布信息生成有意义的假数据,以实现精度损失较少的低比特无数据量化

  • 论文题目:Generative Low-bitwidth Data Free Quantization
  • 论文网址:https://arxiv.org/abs/2003.03603
  • 论文代码:https://github.com/xushoukai/GDFQ

动机

针对无法获得原始数据情况,为消除数据依赖的同时获得比较好的量化效果。本文贡献在于:

  • 提出了一种名为GDFQ的方案,该方案无需任何真实数据即可执行4bit量化。作者提出这是第一个低位宽无数据量化方法。
  • 提出了一个有效的知识匹配生成器,可以通过从预训练全精度模型中挖掘知识来构建数据。生成的数据保留了分类边界知识和数据分布信息。
  • 与现有无数据量化方法相比,在图像分类数据集上的实验证明了我们方法的优越性能。

方法

设计核心在于设计一种生成伪数据的生成器,以便进行监督学习以提高量化性能。总体框架如下图所示:
GDFQ方法示意图

知识匹配生成器

分类边界信息匹配:生成对抗网络(GANs)在生产数据方面取得了巨大的成功,但由于原始数据不已知,判别器不已知的情况导致无法产生有意义的分布,但是我们可以通过预训练模型最后一层很容易确定原始数据类别数量。因此引入了一个以 y 为标签的噪声向量 z。

x ^ = G ( z ∣ y ) , z ∼ N ( 0 , 1 ) ( 3 ) \hat{\mathbf{x}}=G(\mathbf{z} \mid y), \quad \mathbf{z} \sim \mathcal{N}(0,1) \quad (3) x^=G(zy),zN(0,1)(3)

引入交叉熵损失函数训练生成器:

L C E G ( G ) = E z , y [ CE ⁡ ( M ( G ( z ∣ y ) ) , y ) ] ( 4 ) \mathcal{L}_{\mathrm{CE}}^{G}(G)=\mathbb{E}_{\mathbf{z}, y}[\operatorname{CE}(M(G(\mathbf{z} \mid y)), y)] \quad (4) LCEG(G)=Ez,y[CE(M(G(zy)),y)](4)

分布知识匹配:利用预训练模型中的BN层包含训练数据的分布信息。在全精度模型训练时会动态计算批归一化统计量(BNS),即均值和方差。利用(5)可以学习一个好的生成器,以保持训练数据中的分布信息。

L B N S ( G ) = ∑ l = 1 L ∥ μ l r − μ l ∥ 2 2 + ∥ σ l r − σ l ∥ 2 2 ( 5 ) \mathcal{L}_{\mathrm{BNS}}(G)=\sum_{l=1}^{L}\left\|\boldsymbol{\mu}_{l}^{r}-\boldsymbol{\mu}_{l}\right\|_{2}^{2}+\left\|\boldsymbol{\sigma}_{l}^{r}-\boldsymbol{\sigma}_{l}\right\|_{2}^{2} \quad (5) LBNS(G)=l=1Lμlrμl22+σlrσl22(5)

低位宽量化

对于权重和激活量化方法,对于给定 θ 和量化精度 k,θ’是 θ 线性量化得到的离散值,其中 θ ′ = ⌊ Δ ⋅ θ − b ⌉ , Δ = 2 k − 1 u − l , b = l ⋅ Δ + 2 k − 1 \theta^{\prime}=\lfloor\Delta \cdot \theta-b\rceil, \Delta=\frac{2^{k}-1}{u-l}, \quad b=l \cdot \Delta+2^{k-1} θ=Δθb,Δ=ul2k1,b=lΔ+2k1, u、l分别为 θ 的最大值和最小值。

θ q = { − 2 k − 1 ,  if  θ ′ < − 2 k − 1 2 k − 1 − 1 ,  if  θ ′ > 2 k − 1 − 1 θ ′ ,  otherwise  ( 6 ) \theta_{q}=\left\{\begin{array}{ll} -2^{k-1}, & \text { if } \theta^{\prime} < -2^{k-1} \\ 2^{k-1}-1, & \text { if } \theta^{\prime} > 2^{k-1}-1 \\ \theta^{\prime}, & \text { otherwise } \end{array}\right. \quad (6) θq=2k1,2k11,θ, if θ<2k1 if θ>2k11 otherwise (6)

由于没有真实训练数据,从全精度网络直接量化可能会导致严重性能下降,因此采用交叉熵损失函数对量化模型Q进行了微调。

L C E Q ( Q ) = E x ^ , y [ CE ⁡ ( Q ( x ^ ) , y ) ] ( 7 ) \mathcal{L}_{\mathrm{CE}}^{Q}(Q)=\mathbb{E}_{\hat{\mathbf{x}}, y}[\operatorname{CE}(Q(\hat{\mathbf{x}}), y)] \quad (7) LCEQ(Q)=Ex^,y[CE(Q(x^),y)](7)

另外由于数据是伪造的,常见分类损失函数不足以完成微调过程。借助伪造数据,可以通过知识蒸馏来进一步提高量化性能,即使用KL损失函数。

L K D ( Q ) = E x ^ [ K L ( Q ( x ^ ) , M ( x ^ ) ) ] ( 8 ) \mathcal{L}_{\mathrm{KD}}(Q)=\mathbb{E}_{\hat{\mathbf{x}}}[\mathrm{KL}(Q(\hat{\mathbf{x}}), M(\hat{\mathbf{x}}))] \quad (8) LKD(Q)=Ex^[KL(Q(x^),M(x^))](8)

训练过程

交替优化生成器G和量化模型Q。另外,为了使Q的微调更加稳定,首先仅对G进行几次训练作为预热过程。

GDFQ算法伪代码

训练生成器G

L 1 ( G ) = L C E G ( G ) + β L B N S ( G ) ( 9 ) \mathcal{L}_{1}(G)=\mathcal{L}_{\mathrm{CE}}^{G}(G)+\beta \mathcal{L}_{\mathrm{BNS}}(G) \quad (9) L1(G)=LCEG(G)+βLBNS(G)(9)

训练量化模型Q

L 2 ( Q ) = L C E Q ( Q ) + γ L K D ( Q ) ( 10 ) \mathcal{L}_{2}(Q)=\mathcal{L}_{\mathrm{CE}}^{Q}(Q)+\gamma \mathcal{L}_{\mathrm{KD}}(Q) \quad (10) L2(Q)=LCEQ(Q)+γLKD(Q)(10)

实验结果

评估G生成的伪数据是否能够匹配分类边界信息

伪数据分类边界可视化

数据集 4-bit 精度比较

数据集 4-bit 精度比较

消融实验

消融实验-1
消融实验-2


更多内容关注微信公众号【AI异构】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值