一句话定义
误差反馈(Error Feedback) 指在量化过程中,把这次被舍入丢掉的误差记下来,在后面的步骤里补回去,而不是让它直接消失。
这个思路最早用在通信和分布式训练的梯度压缩里——压缩时损失的梯度留在本地,下一轮再传。现在它也被用在模型量化和模型压缩上。
它解决什么问题
量化就是「把连续的数值塞进有限的格子」。每个数值塞进去都会有一点偏差。单个偏差很小,但有两个放大机制:
- 累积:逐层往下传、或者逐轮迭代,偏差不断叠加。
- 方向一致:如果舍入总是偏向同一边(比如一律向下取整),误差就不会互相抵消,模型输出会出现系统性偏移,而不是两边对称的抖动。
误差反馈针对的就是这两点:把误差当成一笔要还的账,先攒着,后面还。
关键做法
- 残差缓存:维护一份「上次被舍掉多少」的记录;本轮输入先加上这份残差,再量化。
- 系数可调:补多少不是只有「全补」一个选项。arXiv 论文 Revisiting Error Feedback for Model Quantization(编号 2610.18139)把误差反馈的系数当作可设计的变量来研究,并把瞬时量化误差建模为独立、零均值的随机量——也就是说反馈强度可以按场景标定。
- 分层补偿要分情况:逐层量化时,让每一层去补偿上游继承下来的误差,并不总是有效。这个边界在 arXiv 的另一篇工作(编号 2610.16020)里有专门讨论。
用不上的时候
- 误差反馈要存状态。对内存紧张的端侧设备,多一份残差缓存就是一份额外开销,未必划算。
- 它属于量化流程内部的一步,不是设备上随时开关的功能。推理模型的权重量化通常在离线完成,误差反馈的价值体现在那一步做得好不好。
- 补偿有上限。如果位宽低到信息本身就不够,反馈只能减轻偏移,救不回精度——该加位宽的地方还得加。
参考
- arXiv Revisiting Error Feedback for Model Quantization(编号 2610.18139)
- arXiv When Does Compensating Inherited Quantization Error Help? Mean-Square Guarantees for Layer-Wise Quantization and Their Limits(编号 2610.16020)
延伸阅读
- 模型压到四分之一大小,识别率一定会掉吗 —— 这篇讲的是这件事对门店意味着什么。
相关词条
火眼识别提供端侧视觉引擎与设备管理平台,相关方案见 火眼识别官网。