AdaRound

本文提出AdaRound,一种改进的预训练神经网络量化方法,通过理论分析和实验表明,它能更有效地适应数据和任务损失,无需网络微调且对未标记数据依赖少。相比传统的四舍五入,AdaRound在保持相近精度的同时,提供了更大的浮点值范围。
摘要由CSDN通过智能技术生成

摘要

在量化神经网络时,将每个浮点权值赋给其最近的定点值是主要的方法。在本文中,提出了一种更好的适应数据和任务损失的PTQ加权舍入机制AdaRound。AdaRound速度很快,不需要对网络进行微调,并且只使用少量未标记的数据。

从理论上分析预训练神经网络的舍入问题。通过泰勒级数展开式逼近任务损失,将舍入任务化为二次型无约束二元优化问题,将其简化为分层局部损失,并建议使用软松弛来优化该损失。

背景

以前的量化方法是使用的四舍五入,权重会被四舍五入到最近的一个定点权值

但是在PTQ方法中,这个方法并不是最佳的。为了分析方法,作者将舍入表述成为一个层二次无约束二进制优化问题。

分析

是我们想要的最小任务损失

使用了泰勒展开式得到上式。在任务损失中,当Δw不太大时,忽略泰勒级数展开中的高阶项是一个很好的近似。

当我们在本例中只考虑这些对角项时,舍入到最接近是最优的。然而,对于对应于∆w1∆w2的项,符号很重要,其中两个相反符号改善了损失。为了最小化量化对任务损失的总体影响,我们需要在对角线项和非对角线项的贡献之间进行权衡。舍入到最接近忽略了非对角线的贡献,使其经常是次优的。

为了证明这一想法,作者进行了一个实验。随机抽样的精度在52.06%±5.52%之间,而四舍五入到最近是52.29%,两者的结果差不多,但是前者的浮动值范围大。

核心

我们只用向下取整的方法,使用h(V)来调节最后的取整部分。

Vi,j是我们要优化的连续变量,h (Vi,j)可以是取值在0到1之间的任意可微函数,即h (Vi,j)∈[0,1]。附加项freg (V)是一个可微正则器,它的引入是为了促使优化变量h (Vi,j)收敛于0或1,即收敛时h (Vi,j)∈{0,1}。

总结:

这就需要看的值在 ℎ(v)=0 或者 1 的时候,函数值才会等于 0。所以,只要最小化 ,那么最后求解出来的 ℎ(v) 肯定就是 0 或者 1,那么相应地,最后就会收敛到 w-ceil,w-floor 中的某个数值。相当于间接实现了我们最开始的优化目标。

在优化h(V)前是四舍五入到最近;但是优化后,下图中可以看到不一定是舍入到最近。

实验

跟nearest方法比较可以看出adaround算法结果非常突出。

这篇论文跟我的工作的关联是比较大的,对权重w使用h(v)进行一个微调

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值