【模型量化】|偏差修正 Fighting Quantization Bias With Bias

文章认为量化会使网络激活值的均值发生偏移,通过对偏移进行修正,可以有效提高量化模型的性能。

首先考虑“激活值的均值偏移”。

网络BN会统计出数据经过某层后的均值和方差信息。
而网络在经过量化后,同样的数据经过该层后,其均值已经不符合原BN统计出的均值,也即数据分布发生了变化(注意BN存在于多个层,这里说的数据分布是泛指各个层的激活,而不仅仅指第一层网络的输入)。

如上图所示,是32张图片经过MobileNet某层某channel后激活值分布情况,Q是量化模型,FP是float模型,可以看到两个数据分布是不一样的,均值会发生偏移。
在这里插入图片描述

其次感性上理解这个过程:某个channel的均值发生偏移,感性上可以理解为量化模型在该channel上计算出的值会偏大或偏小。那么既然我们知道量化模型某层的激活会偏大或偏小,那么我们就可以对其进行修正。

IBC方法:使用calibration数据,逐层迭代,逐channel进行偏差修正,具体如下:

# IBC伪代码
for:对网络层数进行遍历:
    for:对该层channel进行遍历:
         偏差deta = 该channel float网络激活值 - 该channel量化网络激活值
         量化网络的bias += 偏差deta
     end
end   

# 注意“该channel float网络激活值”和“该channel量化网络激活值”都是在全部calibration
# 数据下计算出平均激活值,calibration数据集文章说只需要8-64张;

目前在网络量化上,偏差修正已经成了一个较为常见的操作,涨点明显。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值