大模型分类其实是特征工程


大模型当分类器用就是在浪费它的能力!

你让它直接给答案,它给你的概率还不如抛硬币,换个用法效果立刻翻倍!

用大模型做分类,硬标签的Brier分数零点二五九,比抛硬币的零点二五还差,但把它当特征生成器塞进逻辑回归,Brier分数直接砍到零点一二七,分类准确率也追平了需要专门训练的深度学习模型!


硬标签的分类器根本不会估概率,Brier分数揭穿真相

你让大模型判断一条推文有没有讽刺意味,它干脆利落地回你“有”或者“没有”。你接着想问它“你有多确定”,它要么给不出数字,要么给一个听起来很自信但实际上毫无根据的百分比。

Brier分数就是专门用来揭穿这种自信的。

这个分数干的事情很简单:把模型说的概率和实际发生的事情拿来对比。真发生了,你的预测概率越高,惩罚越小;真没发生,你的预测概率越低,惩罚越小。把所有预测的惩罚取平方再求平均,就是Brier分数。

零分是完美,一分是最差。在正负样本差不多各占一半的二分类任务里,你闭着眼睛每次说“五五开”,长期下来Brier分数稳定在零点二五左右。所以零点二五常被当成一条参考线,比它差,说明你的概率预测还不如瞎猜。

讽刺检测任务上,大模型直接输出的硬标签,Brier分数是零点二五九。你没看错:一个能把百分之九十六点五的讽刺推文找出来的模型,在概率估计这件事上,表现比一枚均匀的硬币还烂。

原因不在大模型笨,在于它压根没被训练来干这件事。

大模型被训练来做的事情是根据上下文生成最合理的下一个词。你说“判断这条推文是否讽刺”,它生成“Ironic”这个词,因为它觉得在这个语境下这个词出现的概率最高。但它内部没有一个统计模型在计算“这条推文有百分之六十八点七的概率是讽刺的”。它在做语言生成,不在做概率估计。你把一个语言生成器硬塞进分类器的模具里,出来的产品当然拧巴。

逻辑回归把大模型的输出变成校准过的概率

大模型的判定不该被当作最终判决,它应该被当作一个特征喂给真正的分类器。

逻辑回归就是那个分类器。它拿到大模型说“讽刺”或“不讽刺”的结果,去训练集里数一数:大模型说“讽刺”的推文里,实际讽刺的比例是多少;大模型说“不讽刺”的推文里,实际讽刺的比例又是多少。然后用这两个比例替代大模型的硬标签,输出一个真正的概率。

在讽刺检测数据上,大模型说“讽刺”的那一批推文,实际讽刺比例是零点六八七;说“不讽刺”的那一批,实际讽刺比例是零点一八八。逻辑回归就用这两个数字做输出。F1分数没变,因为排序没变,大模型本来就把更可能是讽刺的推文排在了前面。但Brier分数从零点二五九降到了零点一七五。

从“不如随机猜”到“比随机猜好不少”,中间只隔了一层逻辑回归。

逻辑回归有一个别的分类器很少有的品质:它输出的概率天然就是校准的。
什么叫校准?模型说“我有百分之八十的把握”,现实中真的应该有大约八成的情况它是对的。逻辑回归直接优化对数损失函数,这个函数的目标就是让输出的概率和实际频率对齐。换成随机森林或者支持向量机,它们的输出概率是偏的,需要额外做校准才能用。

这个视角还顺手解决了一个大模型自带的麻烦:先验偏见。你直接拿大模型当分类器用,它在训练时见过的讽刺推文比例会悄悄影响它的判断阈值。它可能在一个讽刺推文占多数的语料上训练过,于是倾向于把模棱两可的推文判为讽刺。你没法调这个阈值,因为大模型不暴露内部参数。但逻辑回归的截距项自动吸收了训练数据里讽刺推文的基准比例。你训练集里讽刺推文占百分之四十还是百分之六十,逻辑回归自己会调整输出概率的基线。

十九个维度加上九个规则特征,Brier分数继续往下掉

一个特征不够用。大模型能做的事情远不止给一个是或否。你可以让它沿着十九个维度同时输出判断:这条推文是不是在搞笑;描述的场景是否真实可信;是否需要外部上下文才能理解作者意图;是不是真心在抱怨;是否用积极的语言描述消极处境;有没有自嘲;有没有明显的对比结构;是不是反问句;是不是明褒暗贬;批评对象是不是具体的人或组织;底层处境本身是否负面;是不是字面意义上的直接批评;作者是否在为一件坏事叫好;是否假装对可预测的事情感到惊讶;是否使用了夸张的正面语言来描述糟糕的事情;有没有双关语;是否涉及政治;是否涉及名人或体育;是否在讲日常生活琐事。

十九个布尔特征加上大模型自己的讽刺判定,二十个信号全部扔进逻辑回归,Brier分数从零点一七五降到零点一三一,F1从零点七四七升到零点七六八。

再往前一步,加上完全不需要大模型的规则特征:推文是不是以“@”开头;有没有链接;字符长度多少;有多少个井号;多少个感叹号;多少个全大写单词;有没有省略号;是不是以引号开头;有多少个表情符号。九个字符串层面的确定性特征,零成本,零歧义,任何人都能复现。加上之后Brier分数降到零点一二七,F1升到零点七七九。

三个层次的嵌套模型展示了一条清晰的改进路径:只用大模型判定,加上十九个维度,再加上九个规则特征。每加一层信息,概率估计就更准,分类表现就更好。从零点二五九到零点一二七,Brier分数砍掉了大约一半。从“不如随机猜”到“接近经过精心调优的深度学习模型”,中间只隔了一层逻辑回归和一堆可以自动提取的特征。

特征工程把调提示词变成可调试的工程流程

调大模型的提示词,本质上是在黑暗中摸索。你把“请判断讽刺”改成“请仔细分析语言和语境后判断讽刺”,F1可能涨一点也可能跌一点,你没法预判,也没法解释。不同提示词之间的比较缺乏可复现的基准。更麻烦的是,你调提示词的时候同时在做两件纠缠在一起的事情:你在改变大模型提取了什么信息,也在改变它怎么表达这些信息。两个变量一起动,你永远说不清哪个起了作用。

特征工程的视角把这两件事分开了。大模型提取了什么信息,由你让它输出的那些特征维度决定。这些特征怎么组合成最终判断,由逻辑回归的系数决定。你想知道“反问句这个特征到底有没有用”,去看逻辑回归里对应变量的系数和标准误。系数显著为正,说明反问句在控制其他所有变量之后确实跟讽刺有正相关。系数不显著,删掉它。你想知道“加了大模型提取的特征之后,性能提升是不是只是因为它多输出了几个词”,去看Brier分数在嵌套模型之间的变化,那个变化就是这些特征的净贡献。

你甚至可以用残差来指导下一步该提取什么特征。逻辑回归在哪些样本上错得最厉害,那些样本就是现有特征没有覆盖到的模式。有一条错分推文说“我猜我的猫去看了兽医也瘦了三磅”,大模型说它不讽刺,因为它在字面意义上描述一件宠物的事。但它用了健身和减肥的标签来描述一只猫的体重变化,这本身就是一种讽刺性的框架迁移。这个模式——把一套语境下的语言挪到另一个语境里使用——没有被现有的十九个维度捕捉到。这就是下一个特征候选。

这个循环就是机器学习最经典的循环:提取特征,训练模型,检查残差,设计新特征。大模型在这个循环里扮演的角色是特征提取器里最强力的那一个,但它不是唯一的,也不是终点。字符串规则特征是特征,大模型的判定是特征,十九个维度是特征,残差的模式分析可以催生更多特征。分类器永远只是逻辑回归,它的输出永远是一个概率,你永远可以用这个概率去计算任何你想要的评价指标。

竞赛冠军被甩在身后,但判断稳定性这个特征还没人试过

讽刺检测的竞赛数据集SemEval 2018 Task 3,训练集三千八百三十四条推文,测试集七百八十四条,讽刺推文通过#irony、#sarcasm、#not这三个标签收集,再由人工标注去掉噪声。竞赛冠军系统用了稠密连接的LSTM结合词嵌入和情感特征,F1零点七零五。竞赛结束后有团队用LSTM加注意力机制做到F1零点七八六。

直接用大模型的硬标签,F1零点七四七,已经超过竞赛冠军。加上逻辑回归做特征工程之后,F1零点七七九,跟竞赛后的最优结果处在同一个水平线上,置信区间互相重叠。

你用的工具是什么?一个通用的、没有针对讽刺检测做过任何微调的大语言模型,加上一个你在机器学习入门课第一周就会写的逻辑回归。没有LSTM,没有注意力机制,没有词嵌入,没有情感词典。大模型替代了所有这些手工设计步骤,你只需要让它把理解拆成结构化输出,然后交给最简单的统计模型汇总。

但有一个没有被回答的问题:当大模型对同一条推文在不同温度下给出不同判定时,这些判定之间的不一致性本身是不是一个有用的特征?温度设为零时输出确定。把温度调到零点七跑五次,你可能看到三次说讽刺、两次说不讽刺。这五次结果的方差,可能比任何单个判定都更能说明这条推文的模糊程度。一条模糊的推文,大模型的判断会摇摆;一条清晰的推文,它会稳定。这个“判断稳定性”指标,逻辑回归还没有见过。它可能有用,也可能只是噪声。没人知道,因为没人试过。

还有一件事值得注意:有研究者发现,当模型准确率很高的时候,Brier分数和期望校准误差这些常用指标会变得有偏,因为正确预测占了绝大多数,错误的那些预测的校准问题被淹没了。他们提出了平衡Brier分数来纠正这个问题。这意味着你现在看到的零点一二七可能还偏乐观,大模型在错的那几条推文上的概率估计,可能比你想象的要差得多。


原文期刊 / 发表日期:Minimally Sufficient 博客 / 2026年9月13日 / LLM Classification Is Feature Engineering / 独立技术博客,作者聚焦机器学习与大语言模型交叉领域的工程实践与统计方法论。