模型量化论文阅读#4----EWGS:Network Quantization with Element-wise Gradient Scaling

本文介绍了针对STE缺点的元素级梯度缩放(EWGS)算法,用于深度学习模型量化。EWGS在反向传播中自适应地放大或缩小梯度元素,以更精确地处理量化函数的不可微问题。通过归一化、截断、量化操作,以及使用尺缩因子δ调整梯度,EWGS提高了量化网络的训练效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在量化中,因为量化函数是不可微分的,所以一旦涉及到量化函数的反向传播时,就需要对量化函数的梯度进行近似,目前常用的近似是STE,从而避免量化函数的零梯度问题。所谓STE就是一个直通器,它只是传播相同的梯度而不考虑量化函数的输入和输出之间的离散误差。这篇论文就针对STE的缺点提出了一种元素级的梯度放缩算法,叫做EWGS。给定量化函数量化输出的梯度,EWGS自适应地放大或缩小每个梯度元素,并使用缩放后的梯度作为量化函数输入的梯度,通过反向传播来训练量化的网络。缩放是根据每个梯度元素的符号和量化函数的连续输入和离散输出之间的误差进行的。

EWGS量化的前向过程:

Step1: 对连续的输入值进行归一化和截断处理;

x n = clip ⁡ ( x − l u − l , 0 , 1 ) x_{n}=\operatorname{clip}\left(\frac{x-l}{u-l}, 0,1\right) xn=clip(ulxl,0,1)
其中, l , u l,u l,u 分别表示量化的上下边界,这两个值是可以被学习的。

Step2: 量化操作;
x q = round ⁡ ( ( 2 b − 1 ) x n ) 2 b − 1 x_{q}=\frac{\operatorname{round}\left(\left(2^{b}-1\right) x_{n}\right)}{2^{b}-1} xq=2b1round((2b1)xn)
其中, b b b表示量化的bit数。

Step3: 针对量化后的激活值和权重单独进行处理;
Q W ( x ) = 2 ( x q − 0.5 ) , Q A ( x ) = x q Q_{W}(x)=2\left(x_{q}-0.5\right), Q_{A}(x)=x_{q} QW(x)=2(xq0.5),QA(x)=xq

另外,为了调整每一层的输出的尺度,在额外为每一层训练一个参数 α \alpha α ,将其乘以每一层的激活值。
前向过程与其余的量化方法基本是一致的,该论文的核心在反向过程中的量化函数的梯度近似上。

EWGS量化的反向过程:

下式即为EWGS算法中梯度的近似公式:

g x n = g x q ( 1 + δ sign ⁡ ( g x q ) ( x n − x q ) ) g_{x_{n}}=g_{x_{q}}\left(1+\delta \operatorname{sign}\left(g_{x_{q}}\right)\left(x_{n}-x_{q}\right)\right) gxn=gxq(1+δsign(gxq)(xnxq))

在STE中, g x n = g x q g_{x_{n}}=g_{x_{q}} gxn=gxq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值