微软论文拆解LLM决策力:不用微调,换个问法就能选对答案
有一个问题,可能很多做AI应用的人都没想过:当你让一个大语言模型从几个选项里选一个答案的时候,你到底在信任它的什么能力?是它"读懂了问题"的能力,还是它"按格式输出"的能力?这两者听起来差不多,但其实是两码事。一个模型可能完全理解你的问题,知道正确答案是什么,但因为你要求它用特定格式输出(比如先输出字母再加...
做 AI 应用的人里,恐怕不少都没琢磨过一件事:当你把几个选项摆到大语言模型面前,让它挑一个,你实际押注的是它哪样本事?
是它把题目看明白了,还是它把输出格式走对了?
听着像一回事,其实是两回事。模型完全可能把问题吃透了,正确答案也清楚,结果却因为你规定了输出样式(先给字母再补句号,或者套一层 JSON)而答偏。这就像一个数学高手,被你逼着用罗马数字列竖式做乘法,最后算错了,你能说他不通数学?
微软的 Yinheng Li 和 Justin Wagle 两位研究者写了篇论文,专门拆这件事。他们给"从预设选项里挑答案、不生成自由文本"这类决策系统取了个名字,叫 Jev 风格决策模型。
**Jev**:一种决策模型范式,只返回预定义选项上的概率分布,不生成自由文本,由 Diogo Almeida 在2026年提出,为的是让下游软件系统直接消费模型输出,不必再解析一段话。
设想你在搭一个客服工单路由系统,用户丢来一句"我这笔订单被扣了两次钱",系统得在"账单问题""技术问题""退款"里挑一个。交给标准聊天模型来答,它大概会说"这听起来像是账单重复扣款的问题,建议归到账单问题",然后你还得写代码解析这句话,把"账单问题"四个字抠出来,还得应付模型时不时扯出一堆选项之外的东西。Jev 范式的路子很直接:选项你都定好了,那就让模型直接给一个概率分布,中间那道解析省掉。
这条赛道眼下已经挤满了人。公开排行榜 JevBench 上,社区自制的 Jev 风格模型挂了 60 多个。做法五花八门,效果也天上地下:有的下大力气微调,准确率做到 89.6%;有的同样微调,却只有 82.3%、79.2%,跟那些不训练、直接从原始模型里抠概率的"懒人方案"打平。
这就费解了。同样是适配 Qwen3.5-4B 这个底座,差距怎么会这么大?是微调本身不顶用,还是有人微调的路子走歪了?
论文要答的就是这个:预训练好的大语言模型,天生自带多少决策能力?微调又得在什么条件下才真正起作用?
架构不动,词表不换,只把问法改一改
研究者拿出的方案叫 LLM-as-Jev,思路简单得有点出人意料:模型的架构不动,分词器不动,词表也不扩,改的只是提问的方式。
具体怎么问?把选项列出来,前面加方括号和数字编号,比如"[1] 账单问题 [2] 技术问题 [12] 退款",再在模型该作答的位置预先写好"最佳答案:[",逼它顺着往下生成。模型要干的,就是在这个前缀后头吐出"1]"或"12]"这样的续写。
**前缀填充(prefill)**:在模型开始生成回答之前,先人为地往它的回答开头塞一段固定文字,模型只能接着这段文字往下写,从而被引导着按你想要的格式起笔。
这个设计看着不起眼,妙处却有两处。
头一处妙在方括号的位置。选项为什么写成"[12]"而不是光写数字"12"?因为省掉右括号的话,选项一旦超过9个,"1"就成了"12"的前缀,模型生成时便有了歧义:它刚吐出一个"1",你没法马上判断这是要选选项1,还是正在拼选项12的头一个字符。而在末尾补上右括号,"1]"和"12]"就变成两个谁也包不住谁的独立字符串,术语叫前缀无关(prefix-free)。这样一来,无论选项是10个还是151个,编号系统都不会乱。
打个生活里的比方,能帮你看清这设计非做不可:超市排队结账,收银员喊号,要是喊"3号"时柜台后头同时站着"3号"和"35号",你根本不知道叫的是谁,除非他喊完补一句"到此为止"。方括号的右半边"]",就是这句"到此为止"。少了这个收尾符号,等选项涨到两位数、三位数,系统就得反复猜模型还要不要继续吐字符,推理效率往下掉,误判也跟着来。这可不是锦上添花,是数量一多就躲不开的硬需求。
第二处妙处,是这种编号方式天然长成一棵树,论文里叫它前缀树(trie)。
**前缀树(trie)**:一种树形数据结构,把一堆字符串按共同前缀组织起来,像"12"和"120"会共享前半段路径,分叉只出现在不一样的地方。
拿选项1、2、12来说,它们的续写序列"1]"、"2]"、"12]"在 token 层面天然长成一棵从"["分叉的树:走到"1"这个分支,模型可以直接吐"]"收尾(成了选项1),也可以接着吐"2"再补"]"(成了选项12)。这棵树多深,取决于分词器怎么切数字。Qwen 这类逐字符切数字的分词器,树深最多是选项数量的位数加2;Phi-4 这类能把三位数字打包成一个 token 的分词器,树深恒为2,模型往前走一步就知道答案。
这
这套打分机制写成公式,其实就是把每个候选答案续写序列的对数概率加起来,再做一次 softmax 归一化,温度缩放、排列平均这些花样一概没有。
**softmax 归一化**:一种数学操作,把一组任意实数转成加起来等于1的概率分布,常放在分类任务的最后一步,把模型打的分数变成"看着像概率"的输出。
论文还点出一个常被跳过的设计取舍:候选选项全塞进同一个提示词里,让模型一口气看完,而不是挨个拎出来问一句“这个行不行”。看着差别不大,落到实际却影响很深。像从几档价格里挑“性价比最高”、判断某个查询算不算“以上都不是”,这类活儿本来就得把所有选项摆在一起横向比,拆开单问根本办不到。实验数据也能对上:同类系统jev-local对每个候选单独打分,就算换上更大的9B模型,JevBench准确率也只到74.9%,比论文这套方法用更小的4B模型还低6.5个百分点。
没训练就能跟对手打平,这件事本身就够琢磨一阵。
整篇论文里最出人意料的结论,大概要数“到底要不要微调”这个问题的答案。
按直觉,一个没做过任何专门训练的通用大模型,去跟那些为Jev任务精心调教过的社区模型同场比拼,多半要吃亏。可实验结果正好反过来:完全没训练的Qwen3.5-4B,在JevBench公开测试集上准确率拿到81.4%,跟社区里专门用LoRA微调过的reflex 4B模型(79.7%)、以及号称在同一底座上做过优化的SemIf(80.5%)摆在一起,不光没落下风,还略微高出一截。
**LoRA(低秩适配,Low-Rank Adaptation)**:这是一种微调方式,讲究参数效率——它并不去动模型全部参数,改的是另一些塞进模型里的小体积“补丁层”,训练时只更新这些补丁,原模型的大多数权重则原封不动。
这组数字说明什么?社区模型挂在嘴边的“微调提升”,很大一部分恐怕来自提问方式的优化,而非真的往模型里灌进了新能力。换句话说,早先那些效果不理想的微调模型,毛病未必出在“微调”本身没用,而是它们提问的接口没设计好。比如只靠单个字母的token去读模型概率(letter-logit readout),这种方式天生被卡在16到26个选项以内,碰上Banking77这种77类意图识别任务就没法处理。而LLM-as-Jev这套编号加方括号的接口,同样零训练,在外部基准测试上比单字母读数方式领先3.2个百分点,胜率313胜154负,统计显著性极高。
打个比方或许更好体会这个差距:你去考一场选择题,一种做法是在答题卡上涂A、B、C、D四个圈,另一种是直接在空白处写下“我选第二个”。两种方式传出去的信息听着一样,可考试系统只认涂卡那四个固定符号,题目选项一旦超过4个,涂卡这套立马抓瞎,写字却永远不受选项数量限制。要是没有方括号编号这层设计,模型遇到几十上百个选项的任务,就只能退回去用“逐个问每个选项行不行”的笨办法,效率和准确率两头都吃亏。论文反复强调接口设计本身就是一份被低估的“免费午餐”,原因就在这儿。
准确率之外,校准质量同样是个容易忽略、却相当要紧的指标。
**期望校准误差(ECE,Expected Calibration Error)**:衡量模型“说自己有多少把握”和“实际上对不对”之间差距的指标,数值越低说明模型越诚实,不会盲目自信。
论文在完全没做任何事后温度调整的前提下,零训练4B模型的ECE只有0.057,低于SemIf的0.061和reflex 4B的0.070,而reflex还专门套了官方校准映射。也就是说,这个没训练过的模型不光选得准,“信心”也更靠得住。对需要把低置信度案例转给人工复核的实际业务系统来说,这一点很关键。
更有意思的是,这套接口天生能吃多模态。研究者把图像token直接拼在提示词前面,不做任何额外的视觉微调,Qwen3.5-4B在MMBench图像分类基准上就能拿到82.4%的准确率(采用要求每种选项排列组合都答对的CircularEval严格评测方式),MMStar上也有64.6%。作为对照,故意撤掉图片后,准确率直接掉到15.2%和28.8%,可见模型确实在看图说话,不是蒙对的。LLM-as-Jev这套框架的通用性由此显现:不限于文本决策,任何带视觉编码器的多模态底座,理论上都能原封不动套用。
当然,这一切成立的前提是底座模型本身够强。论文也如实摆出了反面案例:同样的框架搬到更小的Qwen3-0.6B上,零训练表现明显拉胯。ECE高达0.278,说明这个小模型经常对错误答案也一脸自信;77类的Banking77意图识别任务上,准确率只有22.2%,几乎就是瞎蒙;151类的CLINC150验证集上,初始交叉熵损失达到6.9纳特(nats),比纯随机猜测的理论值ln(151)≈5.0还差,这个小模型的概率分布乱得连均匀分布都不如。这个发现分量不轻——“不训练也行”是有边界条件的,边界就落在底座模型自身的能力水平上。
微调究竟什么时候管用?答案是“看训练数据和任务对不对得上”。
零训练在强模型上已经表现不错,那微调还有没有必要?论文的回答是:有必要,但只在特定条件下成立,而且很容易用错,反倒帮倒忙。
研究者搭了六种不同的训练数据组合,从只含意图分类任务的“Intent”系列,到混入多种推理格式的“Reason”系列,再到加了长文本的“Reason+Long”系列,逐一在两个模型尺寸上做对比。
规律随之浮出:微调带来的提升,几乎全落在训练数据直接覆盖到的任务类型上,没覆盖的领域基本原地不动。
训练组合里都塞了意图分类数据,Banking77这个意图识别基准因此在各种配置下都稳稳上涨。可MMLU、MMLU-Pro、TriviaQA这些考知识广度的基准,训练数据里压根没有同类内容,成绩几乎纹丝不动。论文还点出一个反直觉的细节:论词汇层面的相似度,MMLU和MMLU-Pro跟ReClor、LogiQA这两个推理数据集其实最接近,训练完照样没起色。可见起决定作用的是任务结构和格式对不对得上,词汇重不重合并不关键。
整篇论文里最耐人寻味的,是一个让人印象深刻的反例。研究者起初拿一批意图分类数据集加常识问答数据集去微调4B模型,Banking77涨了5.6个百分点,JevBench整体准确率却从81.4%掉到77.5%,跑满一整个epoch后进一步跌至74.9%。错误分析归出四个系统性问题:模型变得特别爱答"是",哪怕正确答案是"否";拼命躲开"以上都不是"这类兜底选项;容易被表面关键词牵着走;整体过度自信,ECE从0.057飙到0.134。
最讽刺的是,训练途中验证损失一路稳步下降,看上去模型"越学越好",实际上它只是在一条狭窄的沟里越钻越深。原因不难想明白:那批意图训练数据里没有"是非判断"类题目,需要选"以上都不是"的场景也很少,多数样本靠关键词匹配就能蒙对,指令模板翻来覆去只有四种。模型学会的不是"怎么做决策",而是"怎么应付这四种模板套路"。
换个生活场景就好懂了:你想培养孩子的阅读理解能力,练习题却全来自同一本漫画书,简单到瞄一眼封面插图就能答对。孩子正确率节节攀升,家长看着成绩单挺欣慰,可换一套没有插图的文字题,孩子立马露馅——他压根没学会阅读,学会的是"看图蒙题"这条捷径。训练数据本身有系统性偏差,模型学到的就不是能力,而是偏差本身,训得越久,偏差被强化得越深。论文反复强调"训练数据必须覆盖目标分布",根子就在这里:微调并非没用,而是它会放大你喂进去的任何东西,好的坏的照单全收。
研究者没有停在发现问题这一步。他们换了一批更均衡的数据集:加入需要三元判断(真、假、未知)的ProofWriter规则验证任务、正确答案包含"以上都不是"的CosmosQA、需要正经逻辑推理而非关键词匹配的ReClor和LogiQA 2.0。这一轮调整过后,"爱答是"的偏见被纠正,校准质量也回来了,JevBench准确率重回81.4%,打平零训练基线,在所有全参数微调版本里表现最好。
论文还挖出另一个陷阱:同类型训练数据单纯堆得更多,长文本场景反而更差。那批推理数据集里的文本普遍很短,不超过570个单词,模型被海量短文本反复轰炸,处理长文档的能力就被削弱了。研究者后来补进三个长文本数据集——合同条款推理、多跳问答、长文章阅读理解——长文本场景才回到正轨,在0.6B小模型上长文本准确率甚至直接翻倍。
道理朴素,却常被忽视:训练数据不光要覆盖任务类型,还得覆盖输入长度的分布。好比练长跑,平时只跑100米冲刺,跑再多回,到了马拉松那天照样掉链子,身体压根没适应过长时间耐力消耗的状态。
把发现汇总起来,论文得出一个朴素但实用的结论:模型规模决定微调的性价比。0.6B这类小模型,天生在格式遵循和高基数分类任务上吃力,微调几乎全方位受益;4B这种本身够强的模型,收益更多局限在特定薄弱领域,比如高基数的意图路由任务,而在覆盖面广、任务异质性高的基准(比如JevBench)上,全参数微调反而可能带来负迁移,只有LoRA这种轻量级适配方式还能在4B上额外挤出2.6个百分点的提升。
KL锚点:怎么让模型既学会新本事,又不忘记怎么好好说话
讲到这里,有个技术细节值得单独拎出来说,它要解决的问题特别具体,可一旦出岔子,后果又很隐蔽。
微调决策任务时,研究者用了一个叫"树状因式分解列表损失"的东西,训练模型在候选项之间做选择。
**列表损失(listwise loss)**:这类损失函数用于训练排序或分类模型,它不逐个候选项单独打分,而是把所有候选项放在一起比较彼此之间的相对关系。
这个损失函数怎么算?沿着前面那棵前缀树,只盯着"正确答案所在的那条路径",在每一步局部重新归一化概率。听着挺合理,隐患就藏在这儿:它只约束"合法token之间怎么排序",至于"合法token总共能分到多少概率、非法token的内部排序怎样、答案前后其他位置的输出分布会不会跑偏",一概不管。
换句话说,模型在"选1还是选2"上答对了,损失函数就满意了;可达成这个目标的过程中,句子开头该怎么写、答案说完该不该停这些基本礼仪,模型完全可能一并忘光。
研究者发现,真放任不管,后果相当难看:没有任何约束时,4B模型在231道JevBench题目里,有69道在吐出正确答案后继续喋喋不休往下编;0.6B模型跟人聊天,经常写到1024个token的长度上限还没说完一句话,甚至陷进循环重复。
论文给出的解法是引入三个KL散度锚点,把模型在"不该变化的地方"强行摁在原模型行为附近。
**KL散度(Kullback-Leibler散度)**:一种衡量两个概率分布之间差异程度的数学工具,数值越接近0,说明两个分布越相似。
三个锚点各自管住一件事。其一,合法答案该分到多少概率总量,不能让模型把这部分概率压得没道理地小;其二,错误token彼此之间的相对次序,就算选错,模型对“哪个错得更离谱”的排序也得跟原模型对得上;其三,决策位置以外的地方,像回答开头的那个位置、方括号后面紧跟的位置,输出分布要尽量和原模型一致。
打个比方或许好懂。你给一名员工做专项培训,比如只练某条产品线的报价流程。要是培训只盯“报价算得对不对”这一项,他训完还接不接电话、还说不说“您好”“再见”,全都不管,那很可能报价是算对了,接起电话却忘了打招呼,甚至机械地重复一句话停不下来。KL锚点干的事,就是在专项训练的同时额外规定:除了这项专精技能,平时怎么说话、怎么收尾,必须保持原样。不设这道约束,省下的训练成本看着不多,代价却是模型可能变成“会做题但不会好好说话”的怪物,真实业务场景里没法接受。
实验数据也说明这套锚点设计有必要。锚点权重调得很轻也行——论文里用λ表示权重大小——只要λ大于等于0.01,格式失控的生成结果几乎就能消掉绝大多数。λ取默认值1时,4B和0.6B模型在各自最强的LoRA配置下,JevBench准确率和校准表现都拿到全场最佳,聊天场景里的异常行为也压到了最低。论文的建议很明确:λ=1是跨规模的推荐默认值;更强的模型(比如4B)配LoRA加紧锚点效果最好;更小的模型若想换更高的领域内准确率,可以适度放松锚点,但要清楚这是拿聊天稳定性做交换。
锚点机制里还有个挺实际的工程优化。完整保留整个词表的概率分布去做KL约束,计算和存储成本都太高——0.6B模型词表有15万多个token,4B模型词表更是接近25万——研究者于是只留每个被锚定位置概率最高的64个token,其余全部打包进一个“尾部桶”统一处理。这个截断在数学上仍保证KL散度下界严格有效;实测这64个token已能覆盖94.5%以上的概率质量,缓存开销只有完整词表的千分之一左右。思路就是抓大放小:大部分概率质量集中在少数高频候选上,没必要为那条又长又细的概率尾巴耗费巨大的存储和计算资源。
这事儿往后会怎么发展
论文发表在2026年10月。它依托的Jev范式由Diogo Almeida在同年稍早提出,概念还比较年轻。往前追溯,整条技术路线踩在两个更早的研究传统上。一是模型校准领域的工作,Guo等人2017年那篇讲现代神经网络过度自信的经典论文就是源头,专门测ECE和Brier分数这类指标,根子在这里。二是大语言模型位置偏差的研究,Zheng等人2024年指出“大语言模型并非稳健的多选题选择器”,论文因此反复强调训练时要随机打乱选项顺序,对抗模型对选项位置的无端偏好。
往后看,“训练数据必须对齐任务格式与长度分布”这条原则,很可能被后续工作细化成某种自动化的数据诊断工具,训练前就预判一批数据会不会引入某种系统性偏差,而不是训完再做错误分析。另外,KL锚点机制目前还停在“人工设定三个锚点位置+固定权重”的阶段,一个自然的延伸是让锚点位置和权重变成可学习的,按任务实际需求自动调节。比如某些任务天生不太需要保留聊天能力,那能不能把锚点约束适当放松,换更高的领域准确率?这类权衡现在还是靠人工经验拿捏。
写在后面
读完这篇论文,最让我意外的不是哪个具体技术细节,而是背后的研究态度:人人都在卷“怎么微调得更好”,这篇论文却先停下来问了一句“我们真的需要微调吗”。先验证必要性再动手,这个顺序在工程实践里挺少见。大部分团队拿到任务,默认动作就是找数据、上LoRA、跑实验,很少有人先花力气证明零训练方案到底差在哪、差多少。
另一个让我反复琢磨的细节,是那个“爱答是”的失败案例。训练数据里缺了某种题型(比如否定判断),模型就在毫不相关的任务上系统性地产生了行为偏差。这种隐性污染比直接的准确率下降更难察觉,验证损失一直在正常下降,表面上一切正常。很多实际业务里的模型微调项目,可能正悄悄踩着类似的坑而不自知,因为大家盯的往往只是一两个聚合指标,不会去做论文里这种细颗粒度的错误模式分析。
还有一点值得单独拎出来:论文反复强调“check behavior beyond in-domain metrics”,意思是光看领域内指标不够,还得看模型在自由文本生成模式下到底会不会正常说话、正常收尾。判断一个模型训练得好不好,光看考卷上的分数远远不够,得看它在没有考卷约束的真实对话里,是不是还是那个讲道理的模型。
一个没被训练过、只是换了个问法的模型,居然能打平那些精心调教过的同行。这件事值得每个做模型部署的人多想一层:你花大价钱去微调,到底是在教模型新本事,还是只是在修补一个本可以靠更好接口设计解决的问题?
Q&A
Q1:LLM-as-Jev是什么?
A:LLM-as-Jev是一个让通用大语言模型直接变成Jev风格决策模型的框架。它不改模型架构、分词器或词表,靠给选项编号加方括号、预填充回答前缀,直接从模型的token概率里提取校准过的决策分布,既支持零训练使用,也支持配合KL锚点做微调。
Q2:为什么不训练的大模型也能做好选择题?
现代大模型本身的理解和推理能力已经够强,前提是用对提问方式。论文提到,方括号加数字编号、把所有选项一起摆出来这类做法,能让模型天然的概率分布直接给出靠谱的决策结果。说白了,问题常常出在提问接口没设计好,并非模型能力不够。
Q3:微调大模型做决策任务,是不是一定会变好?
未必。论文发现,微调效果在很大程度上取决于训练数据有没有覆盖目标任务的格式与长度分布。训练数据一旦存在系统性偏差,比如缺了否定判断题,模型就会学到错误的捷径,在没见过的任务上表现反而下滑。所以动手微调之前,先得确认训练数据和实际场景对不对得上。