很多人以为LLMs最难的是奥数题、是高考压轴题,但真实业务里最容易翻车的,其实是“多选题”。因为现实世界几乎没有“唯一正确答案”的舒适区:内容安全往往同时触发多条规则,医疗场景要处理并发症和多重风险,法律检索要命中多条要件与法条,新闻事件也天然是多标签。单选题只需要押中一个,多选题却要求你把所有正确项都选全,还要克制自己别乱猜——这才是生产系统真正需要的能力。这就是论文《SATA-Bench: Select All That Apply Benchmark for Multiple Choice Questions》想解决的问题 专门测模型在多选里的可靠性
论文 https://arxiv.org/pdf/2506.00643
数据 https://huggingface.co/datasets/sata-bench/sata-bench
代码 https://github.com/sata-bench/sata-bench
论文结果指出LLMs压根不会做多选题 即便是很强的模型,在 SATA-Bench 上也并不稳,完全选对所有答案的可能性甚至不超过50%。模型解释得像专家,最后输出却总是瞎猜。 你在业务里那种熟悉的不稳定性,在多选题里会被系统性地放大:有的题它明明理解了,但它只敢选一两个,导致关键点漏掉;有的题它其实不确定,却选择“多选就多选”式的凑数,把边缘项也塞进去,误报瞬间爆炸。你以为这是随机波动,但 SATA-Bench 直接告诉你:这不是偶然,这是偏差。
论文总结出三种偏差 第一类偏差,是选择偏差:模型会对某些选项位置、措辞或形式天然偏爱或厌恶,哪怕内容没变,换个顺序结果就漂。第二类偏差,是数量偏差:模型会系统性低估或高估正确答案的数量——胆小的模型宁可少选也不多选,导致召回差;嘴硬的模型不确定也要多选,导致精度掉。在32个模型中只有2个模型没有少选。 第三类偏差最危险,叫猜测偏差:当模型没有足够证据时,它仍倾向“装懂”,把不确定当正确输出,这在安全、医疗、法律场景里,往往就是事故的起点。
SATA-Bench 不只是给你一个排行榜,它更像一份体检报告:通过文中提出的10个测量指标,你能看清模型究竟是“漏得多”还是“乱得多”,从而决定你该做的是阈值校准、提示词结构调整、解码策略约束,还是干脆换模型。很多团队评测时最痛苦的一点是:分数掉了但不知道为什么掉;SATA-Bench 的价值在于,它把“为什么掉”拆成可观察的机制,让优化不再靠玄学。
SATA-Bench 论文里还提出的一种多选题解码策略(Choice Funnel):它把“选答案”做成一个逐步收缩的过程——先在选项集合里加入一个辅助选项“None of the above(都不选/没有更多正确项)”,然后每一轮让模型只根据去偏后的首 token 概率在当前选项中挑出最可能的那个选项,把它加入预测集合并从候选集中移除;如此迭代,直到出现两种停止条件之一:模型选中了 “None of the above”,或下一候选的概率低于预设的置信阈值(相当于早停)。这个设计用“迭代 + 早停”来动态决定该选多少个答案(缓解 count bias),用 token debiasing 来减轻选项/位置等带来的系统性偏好(缓解 selection bias),并且推理成本通常随“真实答案数”增长而不是随“选项总数”增长,所以比把每个选项都做一次 yes/no 二分类更省。这个解码策略能够将小模型在多选题的正确率成倍提升。
如果你也在做 LLM 评测或多标签业务,我建议你用 SATA-Bench 做一次快速体检:你会很快知道你的模型到底是漏选型还是乱选型。如果你想提升你的模型在多标签任务上的表现,不妨试试Choice Funnel。