Token导航 LogoToken导航

AI 资讯 · 科技行者

大语言模型选择题能力受输出格式影响

更新 2026-11-03科技行者正文 9500字阅读约 30分钟

有一个问题,可能很多做AI应用的人都没想过:当你让一个大语言模型从几个选项里选一个答案的时候,你到底在信任它的什么能力?

是它"读懂了问题"的能力,还是它"按格式输出"的能力?

这两者听起来差不多,但其实是两码事。一个模型可能完全理解你的问题,知道正确答案是什么,但因为你要求它用特定格式输出(比如先输出字母再加句号,或者用JSON包裹),它反而答错了。这就好比一个精通数学的人,因为你非要让他用罗马数字做竖式乘法,结果算错了,你能说他不会数学吗?

这篇来自微软研究者Yinheng Li和Justin Wagle的论文,就是在拆解这个问题。他们给这类"从预设选项里选答案、不生成自由文本"的决策系统起了个名字,叫Jev风格决策模型

**Jev**:一种只返回预定义选项上概率分布、不生成自由文本的决策模型范式,由Diogo Almeida在2026年提出,目的是让下游软件系统能直接消费模型输出,不需要再解析一段话。

想象你在做一个客服工单路由系统,用户发来一句"我这笔订单被扣了两次钱",系统需要在"账单问题""技术问题""退款"之间选一个。如果用标准聊天模型回答,它可能会说"这听起来像是一个账单重复扣款的问题,建议归类到账单问题",然后你还得写代码去解析这句话,提取出"账单问题"这四个字,还要处理模型偶尔东拉西扯说出一堆不在选项里的东西的情况。Jev范式的思路很直接:既然你知道选项是什么,那就让模型直接告诉你一个概率分布,省掉中间商。

这个赛道现在已经挺热闹了,有个叫JevBench的公开排行榜,上面已经挂了60多个社区自制的Jev风格模型。但这些模型做法五花八门,效果也天差地别:有的模型花了大力气做微调,最后准确率能到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,意味着模型只需要往前走一步就能知道答案。

这棵树状结构带来一个直接的工程好处:所有候选答案可以并行打分,而不需要一个一个慢慢生成。原因在于,这些候选续写序列是提前知道的,不需要像自由文本生成那样走一步看一步,模型可以把提示词的前半部分(prompt)算一次缓存下来,然后同时对着每条候选分支做"teacher forcing"式的并行评分。论文里提到,即便是151个选项的分类任务,在批处理资源充足的情况下,也只需要一次提示词预填充加最多三次短促的前向传播。

这套打分机制用公式表达出来,其实是在算每个候选答案续写序列的对数概率之和,然后做个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:为什么不训练的大模型也能做好选择题?

A:因为现代大模型本身已经具备很强的理解和推理能力,只要用对了提问方式(比如方括号加数字编号、联合展示所有选项),就能直接从模型天然的概率分布里读出靠谱的决策结果,问题往往出在提问接口设计不好,而不是模型能力不够。

Q3:微调大模型做决策任务一定会变好吗?

A:不一定。论文发现微调效果高度依赖训练数据是否覆盖目标任务的格式和长度分布,如果训练数据存在系统性偏差(比如缺少否定判断题),模型反而会学到错误的捷径,导致在没见过的任务上表现下降,所以微调前要先确认训练数据和实际场景对不对得上。

资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。