你的 LLM 天生就会做决策模型:为什么多数人一开始就不该微调
- 关联论文:2610.02076
让 LLM 做一个选择,传统做法是让它生成自由文本,再写个解析器去抠答案——慢(多一轮生成)、贵(Token 翻倍)、还容易出畸形输出,下游解析失败。
更麻烦的是社区的实现路径:加自定义分类头、上 LoRA、甚至插 reserved token。换一次 backbone 就要重来一遍,而新增的分类头和保留 token 在标准语言生成任务上还可能变成负担。
这篇论文说:你手上的通用 LLM,本来就已经是一个 Jev 风格的决策模型了。冻结的 Qwen3.5-4B 在 JevBench 公开集上答对 81.4%(188/231),和同底座的社区 Jev 模型打平,还超过了字母 logit 读取方案(SemIf 80.5%),并且天然支持任意数量的候选选项。
为什么重要
它把一个工程决策的门槛彻底拆掉了。以前想做结构化决策,得专门训一个模型;现在可以直接用主流 LLM 的下一 token 概率实现,而且新模型发布当天就能评估,不用等适配。
还有一个被低估的收益:概率输出天然带上了置信度。下游系统不只拿到一个标签,还拿到完整分布,可以据此做拒答、降级或转人工。传统做法把这一步的信息全丢在文本解析里。
再往前一步,多模态几乎是"免费"的——带 vision encoder 的模型通过同一套接口零样本做图像分类和 VQA。同一模型在 MMBench 上(CircularEval)拿到 82.4%、MMStar 64.6%;而抽掉图片后掉到 15.2% 和 28.8%,说明这些分数不是纯语言先验。
核心机制
做法是编号前缀 + 前缀树(trie):
把候选选项格式化成带括号编号的列表,注入固定前缀 Best answer: [,诱导模型生成编号。选中第 k 个选项的概率 = 在该前缀条件下生成候选后缀的联合概率,取 argmax 即为决策,同时输出完整分布。
前缀树是这个方案的技术核心。每个候选后缀以 ] 结尾,因此任何完整后缀都不是另一后缀的前缀——这保证了无论候选是 10 个、100 个还是 1000 个,系统都能正确区分,突破了字母 logit 方案最多 26 个选项的硬限制。所有候选在同一个 prompt 内联合评分,一次推理出全部概率,不用逐个独立判断(这还顺带规避了 AnyJev 处理选项顺序偏置的那类问题)。
微调配方则是两条约束叠加:在 trie 结构上定义树因式分解的列表损失,梯度沿树结构回传且保证候选总概率归一;再叠加KL 散度锚定,把其他生成上下文中的分布拉回基座模型。KL 锚定是本文最值得抄走的工程贡献——没有它,微调后的模型会在对话生成中产生"退化输出",开始"像决策模型一样说话"而不是"像对话助手一样说话"。
证据边界
- 冻结 baseline 数字全文未披露是最大缺口,读者无法独立判断它与社区最优(Plumb 89.6%)差多少,而这直接决定"值不值得微调"。
- 社区对比数字(SemIf 81.0%、Hopper 82.3%、reflex 79.2%、Plumb 89.6%)多来自社区仓库而非本文原创实验,属间接引用。
- JevBench 公共集仅 231 条(48 easy / 72 standard / 111 hard),官方 test set 私有,论文报的是诊断准确率,不是正式 leaderboard 排名。
- 只在 Qwen3.5-4B 和 Qwen3-0.6B 两个模型上验证,Llama、Mistral、Phi 上表现未知,强 backbone 的一致性不能假设。
- 0.6B 小模型零样本明显吃力:JevBench 56.7%(超 raw-logit 基线 48.1%),但校准很差(ECE 0.278),高基数任务崩到 22.2%,CLINC150 上初始交叉熵 6.9 nats 甚至不如随机猜(ln151≈5.0)。
工程局限
- trie 要自己实现:论文讲清了接口但没给前端代码,候选后缀编码和概率归一化都得动手。
- 语义相近的选项会给误导性置信度:公共前缀被当共享信息,"退款"和"换货"这类近义选项置信度会拉得很平。在信贷审批、风控这类要细分的场景,高置信未必对,建议加 rerank 或外部 verifier。
- λ=1 不是万能值:KL 锚定强度在 JevBench 上最优,生产环境对话分布不同,得自己 sweep λ ∈ {0.5, 1.0, 2.0},同时盯决策准确率和对话能力指标。
- 合成数据有领域偏移:微调用教师模型生成数据并做 hard-negative mining,教师自身的偏见会被继承,建 100 条以上人工标注验证集兜底。
- 安全面:选项文本里注入特殊 token 可能被用来操纵概率分布、劫持路由,入口必须做内容过滤。
落地第一步不是微调,是先跑你自己的题库。 建一个 ≥500 条、覆盖真实业务题型的内部评测集,先测冻结 baseline,用实际差距决定要不要投微调资源。
标题变体
- 让 LLM 做选择题的正确姿势:读概率,别读文本
- 冻结的 4B 就打 81.4%:LLM 决策模型的零训练路线
- 前缀树 + KL 锚定:结构化决策里最省事又最安全的一套
小红书卡片文案
「你的 LLM 其实早就会做选择题了。」
99% 的人做意图识别,第一反应是微调、加分类头、搞 reserved token——换模型再来一遍。
其实不用。
把候选选项编上编号,塞进 prompt,然后问模型「选哪个」的概率。四个关键点:
🔹 零训练:Qwen3.5-4B 冻结状态下 JevBench 公开集 81.4%,打平同底座的社区方案 🔹 选项数量不限:前缀树结构,10 个、100 个、1000 个都能表达——字母 logit 方案最多 26 个就卡死了 🔹 要微调的话:LoRA + KL 锚定(λ=1),这是防对话能力退化的安全配方 🔹 多模态也免费:带 vision encoder 的模型,图像分类和 VQA 零样本就能做
⚠️ 但别盲信:论文没给冻结版对比数字,社区几个 81/89% 是间接引用,基准只有 231 条题。
👉 所以第一件事不是微调,是在你自己的业务题库上跑一遍冻结 baseline。
存下来,别急着训。