免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

文本分类模型发展史:从词袋到 Jev

文本分类模型发展史:从词袋到 Jev 刚发布的 Jev[2] 模型过去两周在技术圈里成了现象级的存在。Jev 干的就是分类于是很容易被一句不过是个分类器打发掉。我这两天对它的判断也变了不少从分类器是我写了十年的老本行我自己搭一个就行后面还会聊到变成它居然真的比我预想的好用。图 1Jev API 速览后面细说。最新的前沿 GPT 和开源权重 LLM 当然也能做 Jev 能做的那些分类而且它们还能做更通用的决策。Jev 的优势是这类任务跑得更快、花费更低。反过来对于范围很窄、定义清楚的问题Jev 大概不会比专门训练的分类器更准、更快或更便宜。它真正卖的点是比那些任务专用模型通用得多。那么 Jev 用的是什么方法基于合理猜测、它能做什么、为什么会火这些我打算放在文章后面。不过我觉得更好的开场方式是先简单走一遍用于决策的语言模型发展史。回头看这条线大概能帮大家看清 Jev 到底擅长什么它确实是个文本分类器同时它也不只是一个文本分类器。1 Transformer 出现之前的语言模型与分类为了把 Jev 放回它该在的位置这里没有双关的意思按时间顺序讲会更顺。这一节简单走一遍应用型文本分类朴素贝叶斯、逻辑回归以及 Transformer 出现之前那些更经典的深度神经网络。1.1 词袋朴素贝叶斯、逻辑回归与 XGBoost15 年前我读研的时候循环神经网络其实已经存在了后面还会提到但文本分类通常还是用词袋表示来做。它足够直接在中等规模的数据集上就能拿到不错的结果。简单说词袋表示是一种让不定长的自由文本能够喂给经典分类器的方法。经典分类器包括朴素贝叶斯、逻辑回归、SVM、随机森林、XGBoost 等等它们都要求固定长度的输入向量。现实里的应用从新闻分类到垃圾邮件过滤都有。据称 Gmail 最早期的垃圾邮件过滤器用的也是词袋加朴素贝叶斯。顺带一提我在 12 年前写过这个方法的文章[3]那是我最早发到 arXiv 的东西之一。图 2我 2014 年的旧教程讲的是词袋模型下的朴素贝叶斯分类器。那么词袋表示具体长什么样它把长度不一的自由文本比如训练样本 1“Zentropa is the most original movie I’ve seen in years. If you like unique thrillers that are influenced by film noir, then this is just the right cure for all of those Hollywood summer blockbusters clogging the theaters these days. Von Trier’s follow-ups like Breaking the Waves have gotten more acclaim, but this is really his best work.”训练样本 2“This film is just plain horrible. John Ritter doing pratt falls, 75% of the actors delivering their lines as if they were reading them from cue cards, poor editing, horrible sound mixing”训练样本 3“Zentropa has much in common with The Third Man, another noir-like film set among the rubble of postwar Europe.”转换成前面那些经典分类器可以直接吃的固定长度表示。上面这几条摘自常用的 IMDb 影评分类数据集[4]。图 3词袋表示示意图。词袋模型的第一步是建词表也就是把训练集里所有不重复的词收集起来也可以顺手去掉 a、the 这类停用词它们在多数语境里几乎不携带语义信息。词袋表示得到固定长度输入的方式是给词表里的每个词在向量里分配一个位置然后统计每个词在文档里出现了多少次。假设词表有 50000 个不重复的词那么不管输入是 10 个词还是 30 万个词产出的都是长度 50000 的固定向量。注意其中绝大多数位置是 0因为一篇文档只覆盖词表的一小部分。除了直接用原始计数也有 TF-IDF 之类的归一化方案。拿到词频向量之后就可以在带标签的训练集上训一个分类器比如标成垃圾邮件和非垃圾邮件的邮件。逻辑回归会学到一组特征权重把某些词及其计数和特定标签关联起来某些词会推高预测为垃圾邮件的概率另一些会压低它。这套办法计算开销很低在特定词能强烈提示标签的任务上效果不错。垃圾邮件分类这种简单任务靠它往往就能很快拿到一个精度合理的结果。它最大的短板在于词袋表示天然丢掉词序。所以the dog bites the man和the man bites the dog会得到完全相同的向量尽管它们描述的是两件不同的事。有一些变通办法能保留部分局部顺序比如把词对或者更长的序列也就是 n-gram作为特征加进去代价是词表会变大。尽管有这些缺陷我依然认为词袋在某些低风险场景里有一席之地因为它实在太便宜了。而且词袋加逻辑回归仍然是我做每一个文本分类任务时的首选基线实现起来太方便。图 4对想搭一个简单逻辑回归分类器的人我写过一篇教程。这个模型在平衡数据集上达到 89.9% 的准确率。1.2 文本分类用的深度神经网络前面说的词袋模型也能配简单的深度神经网络用比如多层感知机。但短板依然存在我们还是丢掉了句子结构和词序。更讲究一些的神经网络架构绕开了词袋这个变通方案卷积神经网络CNN和循环神经网络RNN它们可以直接吃词嵌入作为输入。1.2.1 词嵌入在把文本喂进模型之前得先转成合适的表示。一种表示是词袋另一种是词嵌入向量。两者的区别在于词袋向量靠统计每个词出现多少次来代表整段文本而词嵌入把单个词表示成一串学出来的稠密数字。图 5词嵌入生成过程示意图。词嵌入的工作方式和 LLM 里的嵌入层很像都是把输入 token 转换成稠密向量。嵌入可以发生在模型之外比如 Word2Vec[5] 和 GloVe[6] 这两个经典且流行的方法也可以把嵌入层直接放进神经网络架构里在训练过程中一并学习和调整。这些经典嵌入在查表时是上下文无关的。举例来说bank 在river bank和bank account里拿到的是同一个向量上下文这件事通常要靠注意力这类机制来处理。想深入了解嵌入这几个资源可能有用Chapter 2: Working with Text Data[7]这是 LLM 那本书的章节但足够让你理解词或 token 嵌入的大意。在 LLM 的 tokenizer 里词会被切成子词 token在 Word2Vec 里通常一个词就是一个 token。Understanding the Difference Between Embedding Layers and Linear Layers[8]这篇说明了嵌入向量在什么情况下与线性层、矩阵乘法在数学上等价。1.2.2 循环神经网络RNN估计很多人对循环神经网络已经很熟悉了这节我写得短一点。RNN 是自然语言处理里的经典主力架构主流变体的历史可以追溯到 1980 年代和 90 年代初。2017 年出现的 Transformer它用的注意力机制最早也是在 RNN 里提出的简要时间线见我的《Understanding Large Language Models》[9]后来逐渐在很多 NLP 任务上取代了它们。RNN 一次读一个词。读每一步的时候它把当前的词嵌入上一节讲的和上一步的隐藏状态结合起来。隐藏状态可以理解成一个固定长度的向量用来概括到目前为止处理过的文本。所以词序在这里是有意义的把词重新排列会改变状态更新的顺序。图 6RNN 分类器示意图。注意上图用的是 RNN 的展开表示。也就是说RNN 对每个输入复用同一套层所以叫循环。也正因为是循环的输入文本的长度可以是任意的。下一张图把折叠和展开两种表示并排放在一起。两者画的是同一个架构只是可视化方式不同。图 7同一个 RNN 的折叠与展开示意。RNN 出了名地难训好在后来有一些重要改进比如 1997 年提出的长短期记忆网络[10]LSTM以及 2014 年提出的门控循环单元[11]GRU。它们用学习到的门来控制信息如何保留和更新。还有更新的 xLSTM扩展长短期记忆[12]2024 年提出。状态空间模型也受固定长度隐藏状态顺序更新这个思路启发相比 Transformer 的注意力要便宜。不过瓶颈还是隐藏状态能存多少信息而且它仍然必须顺序处理。一个有趣的冷知识注意力最早就是为 RNN 开发的早于 Transformer 架构这是另一个故事了我在《Understanding Large Language Models》[9]里写过。结论是 RNN 确实可以用来训练文本分类器。回到 IMDb 影评数据集词袋加逻辑回归的准确率大约是 89.9%平衡数据集上而一个 LSTM 的 RNN 只拿到 85.66%。是的RNN 确实更难训下面还有个 ULMFiT 方法等着它能把 RNN 训到高得多的准确率。图 8一个带 LSTM 的简单 RNN 教程。这个模型在平衡数据集上达到 85.66% 的准确率训练准确率明显更高说明过拟合相当严重。注意这个 RNN 是从零开始训的。更好的做法是先在更大的数据集上预训练再在目标数据集上微调经典的说法叫迁移学习。在 NLP 领域提出这个思路最有影响力的论文之一是 2018 年的 ULMFiT[13]它在 IMDb 上拿到了 95.4% 的测试准确率。图 9ULMFiT 论文中的标注图。1.2.3 卷积神经网络CNN卷积神经网络你大概是从计算机视觉那里认识的。不过它也能用在文本上只是历史上用得没那么普遍。图 10用卷积神经网络给图像分类的示意图。正如上图图像分类的例子CNN 会把学习到的滤波器作用在图像块窗口上。同样的道理在自然语言里我们可以把学习到的滤波器作用在相邻词嵌入构成的窗口上。图 11文本分类 CNN 的逐步拆解。为简单起见只画了 1 个滤波器通道。如上图所示窗口大小为 3 的卷积滤波器对每一组相邻的三个词使用同一套权重。然后它在the movie had surprisingly good acting上滑动每次往前挪一个词。这样就得到四个窗口为简单起见忽略 padding1the movie had2movie had surprisingly3had surprisingly good4surprisingly good acting在接分类头之前的最后一层我们可以把结果展平flatten也可以做全局最大池化global max pool然后再接到分类头上。展平虽然保留了全部信息但会产生长度随输入文本变化的向量比如the movie had surprisingly good acting要是更长特征图就更长。所以要让模型与输入长度无关这里全局最大池化是更好的选择。简单起见文本 CNN 可以这样理解。图 12带多个滤波器通道的文本分类 CNN。还有一点很讨喜滤波器在各个位置上的计算是可以并行的避开了 RNN 那种逐步的依赖关系。快速对比一下在前面那个 IMDb 数据集上我的实验显示这样的 CNN 准确率约为 90.07%但要注意这高度依赖架构就像你从计算机视觉那边知道的准确率的浮动范围可能很大。比如老牌的 AlexNet 在 ImageNet 上的 top-1 准确率约 62.5%而 ConvNeXt V2-H 能到 88.9%。图 13训练用来分类 IMDb 影评的 CNN在这个平衡数据集上拿到 90.07% 的准确率。源码可以在这里找到。2 Transformer2017 年最初的 Transformer 架构出现在 Attention Is All You Need[14] 这篇论文里。这个话题已经被讲得太多太透我和别人都写了不少所以我这里只聚焦和分类相关的部分。对注意力机制和其他架构细节感兴趣的请看我另外几篇文章关键在于最初的 Transformer 架构是一个用于语言翻译的 encoder-decoder 结构但稍加改造就能用在文本分类任务上下面几节会说明。图 14Attention Is All You Need 中的原始 Transformer 架构。2.1 encoder 风格的语言模型最初的 Transformer 架构发布之后的头几年我记得非常清楚。那几年基本被两条路线的竞争所定义BERT 这类 encoder 风格模型主要由 Google 推动GPT 这类 decoder 风格模型主要由 OpenAI 推动。encoder 风格模型天生就是文本分类器而 GPT 模型能通过零样本和少样本做分类但那更像是涌现出来的附带能力它的强项在生成任务上。不过我们先从 encoder 风格模型讲起看看怎么微调它们来做文本分类。用 Transformer不论 encoder 还是 decoder 风格有一个共通点我们用的是在大规模文本语料上预训练好的模型。除了把它们当零样本或少样本分类器直接用还可以在目标数据集上微调和前面 RNN 一节提到的 ULMFiT 类似。如下图所示摘自 BERT 论文[15]2018BERT 这类 encoder 风格模型在第一个位置有一个分类 token我们可以很方便地针对它做微调。图 15BERT 原论文的标注图。虽然 BERT 模型远不如自回归的 GPT 风格 Transformer 流行好在住仍有人时不时更新和现代化它们。最近一个我常在分类任务上用的例子是 2024 年的 ModernBERT[16]。如下图在 IMDb 影评上ModernBERT 只花很少的微调功夫就能拿到大约 95% 的准确率。图 16不同 LLM 微调后分类 IMDb 影评的结果源码可以在这里找到。我几乎没调超参数而且还有 1% 到 2% 的提升空间不过这里的重点之一是用相当小的力气就能拿到很好的结果。2.2 decoder 风格的 LLMGPT 这类 LLM 是 decoder 风格的自回归 Transformer生成文本和代码的全部注意力都在它们身上这里没有双关。不过正如我在《Build A Large Language Model (From Scratch)》[17]一书第 6 章里解释的那是讲微调的一个平缓入门在讲指令微调之前我们也可以把它们改造成文本分类器。当然也可以直接提示一个大模型如下图所示。图 17提示大模型给一条影评做分类。不过如果我们想要结构化输出又已经明确知道目标领域这样做既脆弱又低效。更好的做法是把输出层换成一个更精简的分类头如下图。图 18把 GPT 风格模型的输出层换成更精简的分类头。微调有几个需要注意的地方。比如因为有自回归的注意力掩码我们必须小心设计微调方式确保分类 token 能拿到序列里其他所有 token 的信息。图 19BERT 和 GPT 中的注意力掩码。想了解更多技术细节可以看我最近那篇端到端的《Building an AI Text Detector From Scratch》[18]总的来说用 GPT 风格 LLM 而不是 BERT 变体的优势在于市面上有大量现代的开源权重架构可以直接拿来用从小参数的 Qwen 3 0.6B 到最新的 Kimi、GLM、DeepSeek 都可以。当然拿这种超过 10 亿参数的模型做分类从效率角度看可能有点过剩但确实可行。图 20在前面那个 IMDb 影评数据集上一个相对较小的 GPT-2 124M 模型能拿到大约 92% 的准确率更大更新的 LLM比如近期的 Qwen3 变体表现大概率会更好。2.3 encoder-decoder 风格的架构最初的 Transformer 架构一个 encoder-decoder后来被拆成了两种范式BERT 这类 encoder 风格模型和 GPT 这类 decoder 风格 LLM但也有把 encoder-decoder 风格用起来的尝试最近的一个有点出人意料地是 DeepSeek V4.1 Flash[19]。不过这里是因果 encoder不是 T5 那种双向的。聚焦到分类任务上encoder-decoder 架构里最值得一提的是 Google 2019 年的 T5Text-to-Text Transfer Transformer[20]。在架构上T5 和原始 Transformer 的差别包括下面这些改动训练方式也变了。原始 Transformer 是以监督方式训练来做语言翻译的T5 用的是无标注文本上的 span corruption 预训练encoder 收到的是缺了一段 span 的文本decoder 把这些缺失的 span 生成出来。图 21T5 相对原始 Transformer 架构的改动。架构图取自 Attention Is All You Need。现在我们就可以像前面那些 RNN、CNN 和 Transformer 路线一样给 T5 加一个分类头来用。另外我们还可以让训练decoder 直接输出类别标签预测在 IMDb 影评这个场景下就是positive或negative这和常规 LLM 一样。我们把这个做法叫文本到文本分类。GPT 风格 LLM 虽然是在海量文本上训练的但它们开箱就能很好地做文本到文本分类前面已经演示过下面这张图为了方便又放一次。图 22用 GPT 模型做文本到文本分类。但在 T5 的情况下通常还会进一步微调 decoder让它在给定目标领域的这类任务上表现更好。对 T5 来说两种方式都管用。总结一下图 23分类头路线与文本到文本路线的对比。3 Jev 概览到目前为止我们已经看过文本分类的很多条路线从词袋表示加逻辑回归、朴素贝叶斯这样的传统方法到提示 GPT-6 这类最新前沿 LLM再到自己给任意开源权重 LLM 接一个分类头或做文本到文本分类。一开始我几乎也把 Jev 当成不过是个分类器打发掉了毕竟我用自然语言输入做分类任务时天天都在搭这种东西比如最近的《AI Detector》[18]就是一个公开的例子。3.1 Jev 和现有的文本到文本分类不过在继续之前先简单介绍一下 Jev。Jev 是 TypeSafe AI 发布的新模型[2]几周前才脱离隐身状态收获了大量关注刚出来的时候看起来有点怪因为它看上去就是个分类器。Jev 是闭源模型虽然发布之后涌现出海量快速跟进的开源仿制不过这个后面再讲。它用起来相对便宜官方宣称在决策能力上和 GPT-5.6 Luna 相当同时快几个数量级、便宜几个数量级图 24来自 TypeSafe AI 博客的基准测试。这里提到的 GPT-Luna可以对应到前面讲的文本到文本分类路线。那它为什么能掀起这么大热度我认为一部分原因是 API 设计得不错另一方面是它在各种任务上表现都很好不需要定制微调。比如我可以用它给客服工单和邮件分类我做了个视频版来展示响应速度或者用同一个模型实时玩俄罗斯方块这里用的是 Choice API在进入技术细节之前也许这样概括最贴切2022 年的 ChatGPT 之所以让人兴奋是因为它是一个通用的对话模型能生成各种文本技术圈对 Jev 兴奋的原因之一是它是分类领域的 ChatGPT 时刻能低成本地对各种文本输入做分类而不必为每个任务微调一个专门的分类器。截至撰写时关于它的架构和确切训练算法已知不多只知道一位创始人说它是通过Reinforcement Learning for Calibrated Decisions训练的后面还会细讲。3.2 Jev 的 API过去几年我们已经习惯了对各种问题抛出更大、更好、更贵的 GPT 风格 LLM。所以对针对性决策或分类任务来说像 Jev 这样便宜又快的方案对大多数人来说会显得耳目一新。尤其是一锤子买卖的任务为了做一件事去收集训练数据、微调一个定制的 ModernBERT 实在麻烦我们可能干脆扔一个 Luna 级别的模型上去。除了靠多功能性也就是开箱就能在不同目标领域上表现好火起来之外Jev 还有一套相当顺手的 API可以用 curl 在终端里调也可以用它自己的 Python API。简单说主要有三种 API 类型见下图。先从 Choice API 开始它适合多分类。图 25Jev 的 Choice API用来做多分类。接下来是 Noul API更简单给一个问题打上是的概率。图 26Jev 的 Noul API用来做二分类或多标签分类配多个 Noul 问题。最后是 Score API按一个评分标准给出分数下面的例子是 0、1、2。图 27Jev 的 Score API用来做有序分类。总结一下各种 API 和它们的适用场景如下。图 28Jev API 速查表。3.3 用 Jev 分类 IMDb为了让这些 API 更具体也回答一下 Jev 在前面那个 IMDb 数据集上能做到什么程度我们可以用 Choice 或者 Noul API 跑一遍。先看 Choice API。每条影评的调用格式如下export TYPESAFE_API_KEYYOUR_API_KEYcurl -sS https://api.typesafe.ai/v1/systemone \ -H Authorization: Bearer $TYPESAFE_API_KEY \ -H Content-Type: application/json \ -d { model: jev-1.13.0, state: The acting was excellent and the story kept me engaged throughout. I would happily watch this movie again., questions: { sentiment: { type: choice, instructions: What is the overall sentiment of this movie review?, criteria: { negative: An overall unfavorable opinion of the movie, positive: An overall favorable opinion of the movie } } } }如果我们想用显式标签做二分类这里是二分类或者多分类问题Choice API 很方便。返回结果大概是长这样{ model: jev-1.13.0, answers: { sentiment: { type: choice, choice: positive, confidence: 1.0, probabilities: { negative: 0.0, positive: 1.0 } } }, usage: { input_tokens: 342, output_tokens: 32 }}除了choice: positive这个标签还能拿到这次预测的 confidence在实际应用里非常有用以及每个类别的概率。confidence 衡量的是概率分布有多集中它和获胜类别自己的概率是两回事。Jev 的卖点之一按官方文档的说法是这些概率经过良好校准校准后面还会细讲。也可以换用 Noul API 来分类这些影评。同样的影评分类场景格式如下curl -sS https://api.typesafe.ai/v1/systemone \ -H Authorization: Bearer $TYPESAFE_API_KEY \ -H Content-Type: application/json \ -d { model: jev-1.13.0, state: The acting was excellent and the story kept me engaged throughout. I would happily watch this movie again., questions: { is_positive: { type: noul, instructions: Does this review express an overall positive opinion of the movie?, criteria: { true: An overall favorable opinion of the movie, false: An overall unfavorable opinion of the movie } } } }Noul API 的返回是{ model: jev-1.13.0, answers: { is_positive: { type: noul, noul: 0.98 } }, usage: { input_tokens: 328, output_tokens: 21 }}有意思的是同一段文本Noul 给正类打的是 0.98不是 1.0。Noul API 也可以用来做多分类每个类别问一个问题就行比如这篇文章是关于财经的吗这篇是关于政治的吗这篇是关于技术的吗这里每个问题各自独立返回一个概率这些概率不需要加起来等于 1。所以一段文本可以同时命中多个标签的场景用 Noul 更合适只需要一个最终答案的场景Choice 用起来更省事。在测试集的 25000 条影评上分别跑 Choice 和 Noul结果如下Choice总耗时22 分 24 秒15456663 个输入 token总成本 $0.6492准确率 96.47%24117 条判对Noul总耗时23 分 3 秒15106663 个输入 token总成本 $0.6345准确率 96.20%24050 条判对Choice 和 Noul 在性能和耗时上的这点差距很可能只是随机波动。和其他 LLM 一样这里的调用并不完全确定。举例来说我在同一个测试集上把 Choice API 又跑了一遍结果会略有不同图 29Jev 重复运行的结果。大规模服务 LLM 和其他模型时出现的不确定性一般来自批大小相关的 GPU kernel 执行改变了浮点运算顺序Horace He 去年写过一篇很好的博客文章[21]讲这个。总的来说结果相当不错。有个前提要说明我们并不知道 IMDb 的测试集有没有被算进训练集。作为参照一个 ModernBERT 模型在训练集上微调花了 23 分钟在测试集上评估花了 7 分钟。对比之下最好的 ModernBERT 模型准确率与 Jev 相当如下图我觉得再调调超参数还能再高 1% 到 2%。注意这是在 DGX Spark 上跑的如果做量化再配更快的硬件推理还能更快。图 30ModernBERT 与 Jev 的对比。不过比如我们这个 ModernBERT 模型不会玩俄罗斯方块不给它针对新任务做微调它也干不了影评分类以外的任何事。而换成 Jev就可以直接扔一个 GPT-5.6 Luna 或 GPT-6 Luna 上去慢一些也贵一些。过去有条经验法则一次性的决策任务用便宜的 LLM比如 GPT-6 Luna这个任务要反复做就微调一个定制分类器。现在像 Jev 这样的东西可以取代上面这套做法一是比 Luna 降低延迟、省下成本二是省掉微调定制模型的工作。当然如果任务调用量极大又想在某个非常具体的任务上把速度和精度都拉满微调仍然是合理的选择。4 给 BERT 和 GPT 风格模型套上 Jev API当然我们也可以在一个ModernBERT 或任意 GPT 风格模型上面加一层 Jev 式的 API。加这样一个 API 相当直接。事实上 Jev 刚发布的时候我就做了一个 Jev 式的 ModernBERT 模型来展示自己搭一个 Jev 有多简单。后来我改了主意决定不把这个仿制版本放出来。原因是给 ModernBERT 套一个 Jev 式 API 很容易在一堆分类任务上微调它也很容易。但要让这个模型在各种不同任务比如俄罗斯方块上都表现好需要大量的训练和调测这就不容易了。而且现在已经有足够多的快速 Jev 仿制品在蹭这波热度了世界不需要再来一个快速仿制品。当然一个强有力的开源权重版本还是很值得要的。不过如果你对这种改造具体怎么做感兴趣这里给一个快速概览。比如我们可以给任意 BERT、GPT 或 T5 风格的模型加一个小分类头实现一个 Jev 式的 Choice API前面已经演示过。但这次不是让这个头的输出节点等于类别数而是只留 1 个输出节点如下图这个改造过的 GPT 模型所示。图 31把 GPT 模型里映射到整个词表的输出层换成一个只有一个节点的输出头。前面我们讨论过把这些模型微调到某个具体任务比如预定义了positive和negative两个标签的影评分类。在这个单输出节点的设置下我们可以把它扩展到任意数量、任意定义的类别。要扩展到任意数量的类别以三分类为例把客服工单分到 billing、technical、account 三类做法如下图。图 32在 BERT 或 GPT 风格模型上使用 Jev 式的 choice API。如上图所示对每个候选选项我们把输入文本、任务说明和该候选的描述一起喂给模型。分类打分头把输出的表示映射成一个标量分数。然后我们在各候选分数上做 softmax得到概率分布返回概率最高的选项。这里的关键在于提出的这个头每个类别只有一个输出。每个类别描述生成自己的表示再由同一个头通过输出层给它打分这个输出层本质上就是一个逻辑回归模型其中si是类别标签i的标量分数w是可学习的权重b是可学习的偏置项hi是分类头之前 Transformer 的输出。对N个候选这会产出N个分数。softmax 随后返回N个概率。N变化时学到的参数保持不变。关于hiBERT 风格的 encoder 模型用[CLS]token 的最终隐藏状态也可以先过一个池化层GPT 风格的自回归模型通常用最后一个非 padding token 的隐藏状态前面讲过自回归特性所以必须这样取最后一个非 padding token 能看到前面的文本、指令和候选描述。然后我们用交叉熵损失对着正确选项把模型和打分头一起微调。因为所有候选共用同一个打分头我们可以在不改动架构的前提下改变选项的数量和描述。但再说一次它在陌生任务上表现如何取决于训练数据。顺便问一句为什么用 BERT 或 GPT 风格的 Transformer 模型而不是前面说的更简单的 RNN 和 CNN 架构纯从技术角度看上面这套做法对两者都成立。但 Transformer 模型的扩展性非常好意味着它们能在更大的数据集上预训练收益也比别的模型更大。而且得益于注意力它们能充分利用上下文里提供的信息。所以如果我们希望模型在没有针对每个任务单独微调的情况下也能很好地泛化到不同目标任务在高质量数据集上预训练一个 Transformer 模型大概率比用 RNN 或 CNN 更接近我们想要的效果。5 Jev 的架构与训练算法那 Jev 为什么能在这么多不同的任务上从影评到下俄罗斯方块这种任意的事都做得这么好遗憾的是架构、算法和训练数据的细节都没有公开。另外也要记住这背后是一整个团队和一家数百万美元的公司在这一个模型上死磕我们不能指望用一周时间在公开数据集上训一个 ModernBERT 级别的模型就达到同等水平。话虽如此如果要让我猜架构上我猜他们用的是类似 ModernBERT 的小模型这也解释了它的低延迟。训练数据方面前面提到过TypeSafe AI 的 CEO 说过[22]我们的数据 100% 是合成的但显然不是那种从大模型里直接吐出来的垃圾所以我认为大部分功夫花在了这个数据集的策划上。这件事我给学生和合作者讲了很多年了。举个例子大概 8 年前我和社科院另一位教授合作帮她设计一个文本分类问题的实验方案。她的学生花了很多天给词袋基线和 BERT 模型调超参数抠出了大约 2% 到 5% 的准确率提升。后来我建议我们各自花几天手工多标一些数据我印象里原始数据集大概 300 条我们把它翻了一倍结果准确率提升了 10% 到 20% 以上。是的为此画学习曲线[23]很重要。图 33一条经验法则通常多要数据比多调超参数更管用。最后是训练算法。细节同样未知但 TypeSafe AI 的博客提到[2]他们用了一个叫 Reinforcement Learning for Calibrated DecisionsRLCD的新算法我们构建了一整套完全围绕自动化的技术栈全新的模型架构、用于极致效率的并行采样器以及我们称为 Reinforcement Learning for Calibrated DecisionsRLCD的训练方法。这个方法没有公开。有一个公开方法在校准目标上很接近是 2025 年论文 Beyond Binary Rewards: Training LMs to Reason About Their Uncertainty[24] 提出的 RLCRReinforcement Learning with Calibration Rewards。在展开更多细节之前下一节先简单介绍一下校准本身。5.1 校准校准不是一个新话题而且对任何你想使用和评估类别成员概率的生产模型我都会建议做这一步。简单说校准调整模型的概率估计让它们更贴近实际观察到的类别频率。再拿 IMDb 影评分类问题举例。模型可能给一条影评打 74% 正向、26% 负向。这些是概率估计但模型可能过度自信也可能信心不足。不评估校准的话我们不能假定这些数值可靠。也就是说74% 正向和 54% 正向的预测在 50% 阈值下都会得到positive这个类别标签尽管模型在 74% 那个情况下表达的信心要强。图 34校准原理示意图。校准技术会用一个单独的有标签数据集比如留出来的验证集来调整这些概率估计。校准成功之后在所有被赋予约 74% 正向概率的影评里大约 74% 应该是真的正向。想了解更多我推荐去看那篇经久不衰的 scikit-learn 文档[25]。做法有很多。比如我在AI detector 项目[26]里用过的一种是温度缩放。温度缩放在做 softmax 之前先把模型的 logits 除以一个温度值T。T一个正数通过在校准数据集上最小化交叉熵损失来学习模型权重保持冻结。温度大于 1 会降低对最高概率类别的信心温度在 0 到 1 之间则提高它。之后对新预测就用同一个温度。因为这个缩放保留了 logits 的相对顺序我们选最高概率类别时预测结果不会变。5.2 带校准奖励的强化学习RLCRJev 的 RLCD 训练方法仍然是闭源的不过有一个相关思路可以讨论带校准奖励的强化学习RLCR由 2025 年的 Beyond Binary Rewards: Training LMs to Reason About Their Uncertainty[24] 提出。注意这两种方法之间没有官方确立的联系我只是假设它们可能相关。可验证奖励强化学习RLVR通常给正确答案 1 分错误答案 0 分。想要完整的解释和实现推荐看我的《Build A Reasoning Model (From Scratch)》[27]一书。简单说RLCR 为不准确的信心估计加了一项额外惩罚。在常规的 RLVR 里奖励R根据答案对错取 0 或 1为简单起见这里忽略可选的格式奖励和长度惩罚。在 RLCR 里模型生成推理和答案之后给出一段不确定性分析和一个数值置信度q。修改后的奖励是R c − (q − c)²其中 c 在答案正确时为 1否则为 0。举个例子一个错误答案却给了 90%0.9的信心奖励是 −0.81因为0 − (0.9 − 0)² −0.8120% 信心时奖励是 −0.04。而一个正确答案是 90% 信心奖励是 0.99。熟悉评估校准模型的读者可能会注意到这里的平方误差项就是答案为正确的概率这个陈述所对应的 Brier 惩罚。图 35RLCR 概览。注意不确定性分析和q是由同一个模型这里是 Qwen2.5-7B在它的回答里生成的。不确定性分析是一份关于它的答案可能在哪儿出错的书面评估。回答之后模型会检查缺失的证据、含糊的措辞、可疑的假设或者可能的推理错误。论文的提示词要求它指出具体的不确定之处而不是提出修正方案。系统提示词还会明确要求给出q一个 0 到 1 之间、用标签包裹的数字。它代表模型对自己答案正确与否的估计概率。所有这些部分由系统在同一段回答里顺序生成。举个例子模型的回答可能是这样think...reasoning about the question.../thinkanswerpositive/answeranalysisThe passage mentions a positive movie review, but the connection to the second paragraph is unclear./analysisconfidence0.6/confidence下面是论文里的一张标注图说明它相比常规 RLVR 加温度缩放如何改善期望校准误差。在 HotpotQA 上相比 RLVRRLCR 把期望校准误差ECE从 0.37 降到 0.03准确率基本持平62.1% 对 63.0%。在另外六个数据集上平均 ECE 从 0.46 降到 0.21准确率从 53.9% 升到 56.2%。这些是论文表 1(a) 里的结果。图 36来自 Beyond Binary Rewards: Training LMs to Reason About Their Uncertainty 论文的 RLCR 结果。从概念上说“RLVR Classifier里的那个Classifier”是一个预测所生成答案是否正确的有监督二分类器。对 Jev 来说可以把校准奖励直接用在类型化决策上不生成推理文本。比如给一个 GPT 风格模型配上 2.2 节那个分类头然后把 RL 的训练目标改成同时奖励准确的决策和校准过的概率模型主干和分类头一起训练。这是一个受 RLCR 启发的改造Jev 的 RLCD 是不是这么干目前还不清楚。另一条路是直接偏好优化DPO是基于人类反馈的强化学习RLHF的一种交叉熵替代方案那么我们也可以直接在分类器输出的概率上最小化 CE Brier 损失。我在 ModernBERT 模型上这么做过相比常规的温度缩放有 modest 的提升。图 37ModernBERT 通过受 RLCR 启发的 Brier 损失优化获得的提升。↑ 表示越高越好↓ 表示越低越好。6 Jev 适合谁Jev 讲得已经足够细了那么它适合谁按我的判断目标人群相当大交叉在这样两类人之间一是想省下为每个决策任务微调一个定制分类器的时间二是想省下使用 GPT-6 这类大杀器的钱。还有不少有意思的用法可以想。下面这一节是一个简短的点子清单。6.1 Jev 的使用场景用例清单看起来没完没了。当然有些很炫的例子比如让它下俄罗斯方块前面那个视频就是用来展示 API 的低延迟。不过对大多数人来说给邮件分类更实用。比如可以把 Jev 当成一层额外的垃圾邮件过滤、优先级排序之类的。但除了这些它还能当作增强 LLM agent 脚手架的工具。在那里它可以作为常规 LLM agent 脚手架的前置筛查器扫描上下文里的提示注入为一个模型选择推理强度档位从你注册的技能库里选一个 skill.md作为评审judge用于评估或自我改进为构建上下文找出相关文件。这份清单基本没完。有人甚至在 arXiv 上发了一篇调查[28]分析了最近几天冒出来的 2170 个与 Jev 相关的项目。6.2 关于 Jev 的仿制品和本地版 JevJev 发布以来几百上千个快速仿制品冒了出来。我看过的大多数就是拿 ModernBERT 或 Qwen 模型用 SFT 微调一下再加一个 Jev 式的 API。据我所知它们没有一个能在这么广的任务面上达到 Jev 的水平。把这些项目和 Jev 相比就像把 Alpaca基于最初的 LLaMA 开源权重模型做的早期指令微调 LLM和 GPT-6 相比。精神上也许相似但在真实任务上表现会差很多。没有冒犯的意思但它们看起来就是为了蹭热度做的快速项目我不想在这里推荐具体的哪一个。这里可能有个例外是 GLiNER[29] 项目它已经存在大约 3 年了虽然底层原理并不相同但可以做类似的事。不过按一份基准测试[30]Jev 确实更强。图 38GLiNER 与 Jev 的对比数据来自 https://github.com/AbdelStark/jev-benchmarks/blob/main/results/reports/btzsc-pilot-v1.md[30]总之对一个好的开源权重 Jev 替代品需求和意愿都是真实存在的。原因未必是成本Jev 已经很便宜了而是隐私。另外如果 Jev 在互联网上已经这么快了想想它在本地高性能硬件上能有多快。所以我当然希望 Jev 也有一个 DeepSeek或者 Kimi、GLM、MiMo式的时刻。我确信有人在做这件事但这需要时间。TypeSafe AI 是靠一支专家专职团队做了很多个月的。指望一周之内复制出那套开发和评测工作并不现实。不过毕竟这是个比一万亿参数模型更小更高效的模型按理说不会等太久。7 结论总的来看Jev 一眼看去似乎没带来什么根本性的新东西。毕竟人们完全可以说它不过是个分类器上面套了层好用的 API 而已。然而它在极其广泛的任务上表现得出奇地好。从这个意义上说它是专用分类器的即插即用版本。专家当然还是会微调专用模型但为微调一个专用模型做论证的门槛现在高多了因为随手扔一个 Jev 或 Jev 式模型上去就能拿到够用的结果。我也不认为 Jev 和它的仿制品会解锁新能力或者解决以前解决不了的任务。但如果把这类模型放进我们的 agent 脚手架里让它们在脚手架内部帮 GPT-6 或者 Opus 5.5 这类昂贵模型做决策那么将来用 agent 脚手架这件事可能会变得又快又便宜。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表