直通估计器(Straight-Through Estimator, STE)是一类反向传播技巧:前向传播照常执行不可导的离散操作,反向传播时却把它的梯度“假装”成恒等映射的梯度,通常就是1。
在量化训练里,这个操作特别常见。假设要把权重从32位浮点数量化到4位整数,前向会做 q = round(x / s) * s,其中 s 是量化步长。round 是阶跃函数,几乎处处导数为0。如果老老实实求导,梯度传到量化器就断了,前面的层根本收不到更新信号。STE 的做法是:前向仍然用 q,反向时直接令 ∂q/∂x = 1,让梯度原封不动地穿过去。
打个比方:你让工厂把原料装进标准箱子(量化),但给上游的反馈单上写“装箱没造成任何影响,继续按原计划送货”。这听起来像掩耳盗铃,但工厂最终往往还能正常运转。为什么?
因为量化误差通常有界且不大。只要步长 s 没大到离谱,round 带来的扰动就是有限的;梯度方向即使有偏,大方向仍然对。而且大量样本的取整误差近似零均值噪声,随机梯度下降本身就对噪声有容忍度。训练后期学习率降低,参数会在量化格点附近稳定下来。所以 STE 是一个有偏但方差可控的梯度估计,实践里经常够用。
和相邻概念的区别可以这样看:
| 方法 | 前向 | 反向 | 典型用途 |
| STE | 真正量化/取整 | 梯度当作1 | AI 词典:量化感知训练">量化感知训练、二值网络 |
| Gumbel-Softmax | 采样离散结果 | 用软松弛求导 | 离散隐变量、生成模型 |
| 梯度截断 | 任意 | 梯度置0 | 阻止某条路径更新 |
|---|
对从业者来说,STE 是做低比特量化、模型压缩、端侧部署时的常用工具。它让你在训练中直接模拟量化误差,减少“训练时浮点、部署时量化”的精度落差。对普通人来说,手机、摄像头、耳机里的小模型能跑得更省电更流畅,背后可能就有这个“假装梯度等于1”的粗暴技巧。当然,STE 不是万能药,比特太低或学习率太大时也可能不收敛;不同框架的实现细节有差异,具体以官方文档为准。
