当我们与现代大型语言模型 (LLM) (如 GPT-4 或 Llama) 交互时,我们通常体验到的是一种“流式”格式。文字一个接一个地出现,营造出对话的错觉。但对于构建复杂应用程序 (如自动化事实核查器或知识图谱构建器) 的开发人员和研究人员来说,这种流式文本是一个挑战。

你如何从未完成生成的文本流中提取结构化数据,例如姓名、地点或日期 (命名实体识别,简称 NER) ?

传统的方法非常笨重: 你需要等待句子完成,然后将其输入到一个单独的、重型的 NER 模型中。这引入了延迟并使计算成本翻倍。或者,你可以微调 LLM 本身以输出标签,但那样有破坏模型通用能力的风险 (即灾难性遗忘) 。

在论文 《Embedded Named Entity Recognition using Probing Classifiers》 (使用探针分类器的嵌入式命名实体识别) 中,研究人员提出了一种名为 EMBER 的新颖解决方案。EMBER 不再将 LLM 视为黑盒,而是在模型生成文本时窥视其“大脑”内部。通过分析模型已经产生的内部信号,EMBER 可以几乎零延迟地实时识别实体,且无需更改 LLM 中的任何权重。

在这篇文章中,我们将详细拆解 EMBER 的工作原理、其背后的架构,以及为什么它可能会改变我们对生成式 AI 中信息提取的看法。

问题所在: 延迟与实用性的权衡

要理解为什么 EMBER 如此重要,我们需要先看看目前使用的“基线”方法。

在典型的流程中 (下图中图 1 的上半部分) ,你有一个两步过程。首先,大型语言模型生成完整的文本序列。只有在生成完成后,单独的 NER 模型才会处理该文本以查找像 “Miami” (GPE - 地缘政治实体) 这样的实体。这很慢。延迟很高,因为第二个模型必须等到第一个模型完成后才能开始。

EMBER (图 1 的下半部分) 合并了这些步骤。它将轻量级的“探针”附加到 LLM 上。当 LLM 生成标记 “Miami” 时,探针会立即将其识别为城市。

图 1: EMBER 通过使用语言模型的内部表示作为分类的特征空间,实现了同时进行文本生成和实体标注。与使用最先进的 NER 模型相比,这产生了一个效率高得多的流程,允许进行流式命名实体识别。图中陈述的参数和延迟比较是基于第 6 节中展示的 \\(\\mathrm { G P T - } 2 _ { \\mathrm { X L } }\\) 实验。

作者提出的主张非常大胆: 比基线方法快 80 倍 , 且参数少 50 倍

背景知识: 什么是探针分类器?

在深入了解架构之前,我们需要了解这里使用的核心工具: 探针分类器 (Probing Classifier)

当 LLM 处理一个单词时,它会将该单词转换为一个数字向量 (隐藏状态) 并通过许多层进行传递。“机械可解释性 (mechanistic interpretability) ”的研究表明,这些内部向量包含丰富的语义信息。即使模型被训练用于预测下一个单词,其内部状态本质上“知道”当前单词是动词、名词还是专有名词。

探针分类器是一个非常简单、小型的神经网络 (通常只有几层) ,训练用于查看这些冻结的内部向量并预测某个属性,例如“这是一个人吗?”它是一种诊断工具——就像神经网络的听诊器。

EMBER 的创新之处在于将探针分类器从诊断工具转变为生产工具。

EMBER 架构

作者设计 EMBER 旨在解决命名实体识别的两个不同子问题:

  1. 实体分类 (Entity Typing) : 这个词是什么? (例如: 人名、地点、组织) 。
  2. 跨度检测 (Span Detection) : 哪些词属于一起? (例如: “New York” 是一个实体,而不是两个分开的实体) 。

由于仅解码器模型 (如 GPT) 是一次生成一个词 (自回归) ,它们无法“看到”未来的词。这使得知道实体在哪里结束变得困难。为了解决这个问题,EMBER 使用了双探针架构。

图 2: 使用探针分类器进行命名实体识别的建议方法示意图。黑色方块象征各个时间步的单个 Transformer 层,而虚线象征整个 Transformer 中的信息流。探针分类器以红色显示,圆圈象征访问表示的位置。一个分类器使用单层的隐藏状态执行标记级实体分类,而第二个分类器基于注意力权重检测跨度。两个预测都被聚合并生成跨度级实体预测。

如图 2 所示,该系统从 Transformer 块的两个不同部分提取信息: 隐藏状态 (Hidden States)注意力权重 (Attention Weights)

1. 标记级分类 (“是什么”)

为了确定实体的类型,EMBER 查看当前标记 (\(i\)) 在特定层 (\(l\)) 的隐藏状态 (\(h_i^l\)) 。它将此向量通过一个小型的分类器来预测标签 (如 B-PER 代表“人名的开头”) 。

该分类函数的数学公式为:

()\nf _ { t y p e } ( h _ { i } ^ { l } ) = \\hat { y } _ { i } ,\n[

然而,标记级分类有一个缺陷。如果你只看到单词 “New”,你可能会猜它是形容词。你需要 “New York” 的上下文才知道它是一个城市。因为模型在生成 “York” 之前先生成 “New”,所以 “New” 的初始分类可能是错误的。这就是第二个组件发挥作用的地方。

2. 跨度检测 (“在哪里”)

为了弄清楚哪些词组成了多词实体,作者利用了注意力机制 (Attention Mechanism) 。 在 Transformer 中,注意力权重 (\(A\)) 表示一个标记与先前标记的关联程度。

假设很简单: 如果模型理解 “New York Film Festival” 是一个单一概念,那么这些标记之间的注意力权重应该是独特的。

研究人员测试了三种利用注意力权重检测跨度的方法,如图 3 所示:

  • 邻居分类 (a) : 简单地检查相邻标记是否相关。
  • 跨度分类 (b & c) : 预测标记 \(i\) 是否为实体的开始,标记 \(j\) 是否为实体的结束。

图 3: 不同跨度检测方法的示意图。红色表示对于示例跨度“New York Film Festival”,哪些注意力权重被分类为正例。虽然仅显示了单层的注意力权重,但在每一层通常都会使用。

作者发现跨度分类效果最好。具体来说,他们检查当前标记与先前标记之间的注意力权重,看它们是否形成一个连贯的组。

检查邻居连通性的方程如下所示:

]\nf _ { a d j } ( A _ { j , i } ) = \\hat { a } _ { i , j } ,\n[

而更有效的跨度分类定义为:

]\nf _ { s p a n } ( A _ { k , i } ) = \\hat { s } _ { i , j } ,\n()

3. 标签传播

一旦系统拥有 (1) 每个标记的潜在类型列表和 (2) 哪些标记组合在一起的列表,它就需要将它们结合起来。

作者引入了标签传播 (Label Propagation) 。 其核心思想是信任跨度中最后一个标记的预测。为什么是最后一个?因为在自回归模型中,最后一个标记可以访问所有先前标记的上下文。

对于 “New York Film Festival”,标记 “Festival” 已经“读过”了单词 “New York Film”。因此,“Festival” 的隐藏状态最有可能正确编码“事件 (Event) ”这一概念。EMBER 获取 “Festival” 的预测标签,并将其向后传播给 “New”、“York” 和 “Film”。

实验与关键发现

研究人员使用 GPT-2、GPT-J 和 Pythia 等模型在标准数据集 (CoNLL2003 和 Ontonotes5) 上评估了 EMBER。

发现 1: 跨度传播更优

第一个主要发现是,结合两个探针 (跨度传播) 的效果远远优于尝试单独对每个标记进行分类。

表 1: \\(\\mathrm { G P T - } 2 _ { \\mathrm { X L } }\\) 以不同方式使用隐藏状态和注意力权重的 NER 分数。“MD”列指示该方法中用于提及检测的特征空间,其中“H”代表隐藏状态,“A”代表注意力。所有分数均为在 CoNLL2003 和 Ontonotes5 的验证集上测量的微平均 (micro) F1 分数。

如表 1 所示,简单的标记级分类获得了大约 71% 的 F1 分数。然而,使用跨度传播 (结合隐藏状态进行分类和注意力进行跨度检测) 使 CoNLL2003 数据集上的性能跃升至 90.47%

发现 2: 与上下文学习具有竞争力

EMBER 与仅通过提示词要求模型“查找实体” (少样本上下文学习) 相比如何?

表 4: CoNLL2003 上 NER 的少样本 F1 分数。所有分数均为微平均 F1 分数。*结果由 Chen 等人 (Chen et al., 2023b) 报告。

表 4 揭示了一个有趣的权衡。对于极低数据场景 (1-shot 或 5-shot) ,提示工程 (ICL) 更好。然而,一旦你有更多一点的数据 (10-shot, 50-shot) ,EMBER 开始提供一个强大的替代方案,最终实现比提示工程更高的稳定性和效率,因为提示工程每次运行模型都需要处理长长的示例。

虽然 EMBER 的得分 (约 80-85% F1) 通常低于繁重、破坏性的微调方法 (达到 >90%) ,但它提供了那些模型无法比拟的巨大效率增益。

发现 3: 架构很重要 (注意力头 vs. 隐藏层维度)

论文中最具教育意义的部分之一是关于为什么某些模型在 EMBER 上表现比其他模型更好的分析。

你可能会认为具有更大隐藏维度 (更多神经元) 的模型在命名实体识别方面会更好。图 4 显示, 实体分类 (预测“人名”与“城市”) 确实与隐藏维度大小密切相关。

图 4: 模型相对于隐藏状态维度的实体分类 F1 分数 (验证集) 。

然而, 跨度检测 (寻找实体的边界) 讲述了一个不同的故事。

图 5: 模型相对于注意力头总数的提及检测 F1 分数 (验证集) 。

图 5 显示, 提及检测注意力头的数量密切相关,而不一定与模型大小相关。这表明拥有更多的“视角” (注意力头) 使模型能够更好地跟踪单词之间的关系,这对于识别多词实体至关重要。

这就是为什么较旧的 GPT-2 XL (拥有许多头) 在这一特定任务中实际上优于一些较新的、理论上“更好”的模型的原因。

“杀手级特性”: 流式效率

EMBER 的主要动力是速度。这里的测试结果是不可否认的。

表 5: 生成期间流式 NER 对 \\(\\mathrm { G P T - } 2 _ { \\mathrm { X L } }\\) 推理速度的影响。结果清楚地表明,与基线方法相比,EMBER 的效率要高得多,其导致的标记生成率性能损失仅为 \\(1 \\%\\) (相比之下基线超过 \\(40 \\%\\)) 。

表 5 比较了在提取实体的同时生成文本所需的时间。

  • 基线 (外部模型) : 使生成速度降低了 43.64%
  • EMBER: 使生成速度仅降低了 1.01%

因为 EMBER 利用了 GPU 已经完成的计算 (内部状态) ,所以计算开销微乎其微。这使得在不影响用户体验的情况下对实时聊天流运行复杂的分析成为可能。

关于生成文本的说明

研究人员发现了一个怪现象: 在静态的人工编写文本上训练的探针,当应用于模型自己生成的文本时,表现较差。与处理提示词相比,生成过程中的注意力权重分布发生了变化。

表 6: 3 种方法在我们评估数据集上的 NER F1 分数。“Original”表示非生成文本或提示词的分数。“Generated”表示提示词之后生成的 100 个标记的标注分数。

如表 6 所示,当探针在生成的数据上进行训练时 (底部部分) ,原始文本和生成文本之间的性能差距几乎消失了。这强调了在生产中将会遇到的特定类型数据 (生成的 vs. 静态的) 上训练这些探针的重要性。

付诸实践: 工具包

作者不仅发表了一篇论文;他们还发布了一个名为 STOKE (Streaming TOKen Extraction,流式标记提取) 的工具包。它允许开发者在 Hugging Face 模型之上训练自己的探针分类器。

图 10: 模型游乐场 (playground) 的屏幕截图。

游乐场 (图 10) 可视化了这种方法的威力。当模型打出 “James” 时,系统将其标记为 PERSON (人名) 。随着它继续生成 “…who has been writing…",系统会实时更新并细化其对句子结构的理解。

结论

EMBER 论文提出了我们思考“使用”大型语言模型方式的一个令人信服的转变。我们不再仅仅将它们视为文本生成器或需要微调的黑盒,而是可以将它们视为可以实时挖掘的丰富语义信息库。

关键要点:

  1. 非破坏性: 你可以在不改变权重或冒灾难性遗忘风险的情况下为模型添加 NER 能力。
  2. 注意力是关键: 注意力机制掌握着文本的结构秘密 (跨度) ,而隐藏状态掌握着语义秘密 (类型) 。
  3. 速度: 对于流式应用,探针分类器远优于外部模型,几乎不产生延迟惩罚。

随着 LLM 成为更多实时应用的引擎,像 EMBER 这样允许我们在模型说话时“读取其思维”的技术,可能会成为 AI 工程工具包中的标准工具。