测试时计算还能这么省?中山大学SVR只需一半token精度反超oracle
数学考试里有个经典场面:学霸写完就交卷,学渣越改越错。大模型推理也有这毛病——简单题算力浪费,难题越修越歪。中山大学这篇新论文,教模型“自我检查”:有把握才交卷,没底就再改一轮。结果平均2.99轮推理,精度反而超过固定10轮,还省了一大半token。这招龙哥看了直呼内行!
原论文信息如下:
大语言模型推理能力越来越强,背后的代价也肉眼可见:一个问题可能要采样十几次、推理好几轮才能拿到答案。问题在于,同样一份计算预算,不同题目带来的收益天差地别——简单题一次就做对了,硬要跑满十轮纯属浪费;难题改一轮就能改对,有时候改着改着反而把对的答案改错了。
现有方法各有各的死角:固定预算方法(fixed-budget)对所有输入一视同仁,按统一轮次采样或搜索;输入级自适应分配方法(input-level adaptive allocation)虽然会按题目难度分配算力,但通常是在推理之前一次性决策,不能根据“当前这版答案到底行不行”来动态调整;自纠错方法(self-correction)重点研究怎么改,改多少轮却要外部指定;验证器引导的方法(verifier-guided)确实能提供反馈,但往往需要额外的奖励模型、过程验证器、执行环境或者任务相关正确性信号,部署时不一定拿得到。
这篇论文想回答一个更本质的问题:模型能不能只靠“自己生成的信号”,来决定当前答案应该保留还是再改一轮?换句话说,把“测试时计算分配”这件通常由外部规则或验证器干的事,交给策略自身来完成。
由此引出本文的主角:SVR(Self-Verifying Refinement,自我验证细化)。它不依赖额外验证器,不预设固定轮次,而是把“自我检查”直接训练成一种计算控制策略,让模型边走边判断、有把握就停。
SVR的做法非常直白:第 t 轮,模型不只是输出一个答案,而是生成一个结构化结果 o_t = (r_t, a_t, v_t, c_t)。其中 r_t 是推理过程(reasoning trace),a_t 是任务答案,v_t 是模型自己给出的离散判定(verdict),c_t 是模型自报的置信度(confidence)。
这里的判定 v_t 分成三档:C(Correct,正确)、I(Incorrect,错误)、U(Unsure,不确定)。置信度 c_t 是一个 0 到 1 之间的数值,代表模型认为当前答案正确的概率。这两个信号合在一起,构成一个“自检门”(self-check gate)。
推理时的停止规则不复杂:当输出没有被截断(q_t=0)、判定为 Correct、且置信度不低于部署阈值 γ 时,SVR 就返回当前答案;否则,只要还有预算,就继续进入下一轮细化。写成公式就是:
t̂γ = min({ t ∈ {1,…,Tmax} : qt=0, vt=C, ct≥γ } ∪ {Tmax})
也就是说,第 γ 门控既不是光看置信度,也不是光看判定,而是要求“离散判定为正确”和“连续置信度够高”同时成立。这样设计的好处是:判定防止模型只管报个高分就草率交卷,置信度又避免了离散判定太粗糙、没法表达“我其实没把握”的情况。
如果继续细化,下一轮的提示词怎么构造?论文中的设计是只保留“原始问题 + 当前草稿 + 当前自检状态”,而不是把完整的多轮对话历史全塞进去。这种“一阶上下文”(first-order context)保证了提示长度不会随着细化轮数无限膨胀,也让训练和推理的信息接口完全一致。
LONGGE AI COMMUNITY
把每天读到的论文,变成长期积累
加入「龙哥读论文」知识星球,持续获取 AI 论文、资讯、开源项目、招聘与研究思路。
加入龙哥读论文微信群:添加微信 kangjinlonghelper,备注“研究方向 + 地点 + 学校/公司 + 昵称”。
微信扫码加入知识星球