让大模型做选择题,常规做法是让它生成一段带答案的文字,再解析出选项,慢、贵、还可能跑偏格式。上周一篇工程博客给出了另一种做法,把问题变成选择题,让模型一次前向传播直接吐出选项分布,答案与置信度同时到手。教程上了技术社区热榜。我把原文、配套仓库与社区讨论读了一遍,这篇是可以照着敲代码的硬教程,硬在数据齐全步骤完整。
方法四步走
作者选了一个十七亿参数的小模型当底座,模型不大,消费级显卡都塞得下。第一步把任务格式化成多选题,问题加五选一的选项。第二步是精髓,约束解码,只允许选项字母出现在输出位置,对原始概率分布做归一化,单次前向传播就得到每个选项的概率,最高的当答案,概率本身就是置信度,选择题的选项数量有实际上限,示例实现里两百五十五选一是天花板,覆盖绝大多数分类场景够用。第三步微调,用一个常识问答数据集训练,准确率从五成九提到六成二。第四步校准,用温度缩放把模型置信度与实际准确率调成一致,这步之前模型说九成把握时实际只对七成,调完两者贴合,温度参数靠拟合得出,示例值约三点八,一个标量就把嘴硬的模型调诚实了。
与传统生成式输出的对比有数字支撑。同样输出一段结构化答案,常规做法要对每个词各做一次前向,示例里要十一次,决策模型只要一次,成本差一个量级。配套仓库齐全,数据构建、评测、微调、校准的脚本都有,技术栈是最主流那一套,照着跑一遍一个下午足够,跑通的成本只是电费,电费跑出一个决策引擎,值,值在学到的远不止一个引擎。
背景与争论
这篇教程的由头是某商业公司新推出的一类产品,输入非结构化状态输出带校准概率的类型化决策,厂商宣称比前沿大模型快上几十倍,还给了具体量级,端到端几十到几百毫秒,输入按百万 token 计价几美分,输出免费,数字全部按自称口径对待。作者用开源件复现了同款思路,等于给热炒的概念做了次去魅,去魅的另一面是普及,教程跑通后,商业产品的神秘感就剩工程打磨那一层了。
社区的反驳也要听。有从业者指出这本质是零样本分类器,老技术换了新包装,某二零二零年的论文早用过同款技巧;也有人认为概念虽旧,工程化的封装与校准环节仍有价值。作者未参与争论,教程本身摆在仓库里,谁对谁错跑一遍便知。时间线上还有个注脚,另一家头部厂商也推出了同类的决策接口,小模型加约束输出的路线正在变成一个小品类。
教学价值
这篇教程的适用人群分层清楚。学机器学习的学生看它是约束解码与置信度校准的入门活例,概念在教材里是公式,在这里是能跑的脚本。应用工程师看它是一种省钱思路,高频小决策场景例如内容分类、意图识别、路由分发,一次前向加本地小模型,成本压到近零,路由分发这个例子值得展开,把用户提问转给最合适的模型或人工,高频调用下省钱省到审计部门都点头。看热闹的读者至少带走一个认知,模型的概率输出经过校准才可信,没校准的九成把握要打七折听,这一条值回整篇阅读时间。
提醒一句,作者在文中自己划了边界,模型概率反映对下一个词有多大把握,不直接等于答对的概率,校准环节因此不可省略,省略它的小心翻车。一句话收尾,一次前向传播完成决策,这个技巧值得进每个工程师的工具箱。
来源
- 教程原文 https://nishtahir.com/build-your-own-decision-model/
- 配套仓库 https://github.com/nishtahir/build-your-own-jev
- 社区讨论 https://news.ycombinator.com/item?id=50037949
- 商业产品背景 https://typesafe.ai/blog/introducing-system-one-models-and-jev