如果你玩过大语言模型 (LLM) 或像 T5 这样的标准序列到序列 (seq2seq) 模型,你就知道它们无比强大。它们可以翻译语言、总结文本,甚至编写代码。然而,尽管它们用途广泛,这些模型通常有一个隐藏的弱点: 它们缺乏强大的结构归纳偏置 (structural inductive bias)

简单来说,标准 Transformer 是统计学上的强力工具,能够学习单词之间的相关性,但它们并不像语言学家——或者说人类大脑——那样天生“理解”语言的层级树状结构 (句法) 。这导致当模型面对需要严格结构逻辑的数据时会出现问题,例如将复杂的主动语态句子转换为被动语态,或对甚至比训练中所见结构更深的句子进行语义解析。

在一篇题为 Strengthening Structural Inductive Biases by Pre-training to Perform Syntactic Transformations 的精彩论文中,研究人员 Matthias Lindemann、Alexander Koller 和 Ivan Titov 提出了一种名为 STEP (Syntactic Transformation Enhanced Pre-training,句法变换增强预训练) 的新颖解决方案。他们没有构建一个新的、复杂的架构,而是教一个标准 Transformer 在做实际工作之前先进行“句法体操”。

在这篇文章中,我们将深入探讨 STEP 是如何工作的,为什么句法变换是更好泛化能力的关键,以及当模型学习这些结构时其内部发生了什么。

问题所在: 结构泛化

标准 seq2seq 模型在分布内 (in-distribution) 数据——即看起来与训练数据相似的数据——上表现出色。然而,它们在结构泛化 (structural generalization) 方面很吃力。

结构泛化指的是处理以下情况的能力:

  1. 已知短语的未见组合
  2. 比训练时更长的输入
  3. 更深的递归 (例如,“The cat that the dog that the mouse chased…”) 。

之前解决这个问题的尝试包括在海量文本上进行预训练,或设计专门的、僵化的架构。虽然海量预训练有所帮助,但它并没有解决核心问题: 模型不一定知道如何利用句法信息来操纵句子。它可能知道“The cat”是一个名词短语,但如果句子结构变得太复杂,它就难以系统地将该名词短语移动到逻辑形式中的不同位置。

研究人员假设,缺乏结构偏置的部分原因是模型在执行基于句法的变换方面经验有限。

解决方案: STEP

STEP 的核心思想是中间预训练 (intermediate pre-training) 。 在针对特定下游任务 (如语义解析) 微调模型 (如 T5) 之前,研究人员强制它练习基于句法树变换句子。

关键在于,模型没有被提供句法树 。 它只得到了输入句子和关于树应该如何被变换的描述。这迫使模型:

  1. 在内部推断句子的句法。
  2. 学习如何移动树的各个部分的原本“动力学”。

Figure 1: Left: Intermediate pre-training of a Transformer to perform syntactic transformations specified in the prefix;the syntax tree forms the basis of the transformation but is not given to the model. Right: fine-tuning the Transformer and the prefix on a downstream task. Tunable parameters are represented in orange.

如上图 Figure 1 所示,该过程分为两个阶段:

  1. 预训练 (左) : 模型接收描述变换的前缀 (例如,“主语加括号,宾语反转”) 和句子“Mary saw a cat”。它必须预测变换后的字符串。
  2. 微调 (右) : 对于实际任务 (如主动转被动) ,僵化的描述被替换为可调嵌入 (软提示) 。这些允许模型“激活”它在预训练期间学到的变换技能。

如何生成句法变换

为了预训练模型,研究人员需要大量的“句法谜题”数据集。他们无法依赖人工标注数百万个句子,因此他们利用 C4 语料库中的依存树自动完成了这一过程。

1. 依存树 (The Dependency Tree)

他们从标准的依存树 (识别主语、宾语、限定词等) 开始。然而,依存树不是二叉的,这使得应用系统性操作变得困难。

2. 展开 (Unfolding)

为了解决这个问题,他们将依存树“展开”成二叉结构。

Figure 3: Unfolding a head h and its children.

Figure 3 所示,中心词节点 (\(h\)) 及其子节点 (\(c_1\) 到 \(c_4\)) 被重新组织成二叉树。依存边的标签 (如 nsubjobj) 成为这个新树中内部节点的标签。

3. 标注与求值 (Annotating and Evaluating)

一旦树变为二叉形式,研究人员就为每个依存关系分配一个特定的操作 。 例如,他们可能决定每个 NSUBJ (名词主语) 关系都应该被括号包裹,而每个 OBJ (宾语) 关系的词序都应该反转。

Figure 2: Our procedure of applying a syntactic transformation specified as edgewise transformations (grey box): (1)recursively unfolding adependency tree into a binary tree where dependency labels serve as labels of internal nodes, (2)anotation dependency relations with edgewise transformations, (3),recursive evaluation of the edgewise transformations with partial results shown.

Figure 2 展示了整个流程:

  1. 展开: 句子“Mary saw a cat”被展开成二叉树。
  2. 标注: 应用规则。NSUBJ 获得 BRACKET 操作;OBJ 获得 REV (反转) 操作。
  3. 求值: 树自底向上折叠。DET 下的“a cat”被连接 (concatenate) 。OBJ 下的“saw a cat”被反转为“a cat saw”。最后,主语“Mary”被加了括号。

最终输出是一个变换后的字符串,它看起来一点也不像自然语言,但需要深层的句法理解才能生成。

操作清单

研究人员定义了 14 种不同的操作来涵盖广泛的潜在移动。一些例子包括:

Table A.2: Fullist of operations we use. We show an example transformation for the sentence Mary saw acat where HEAD = Mary saw and DEP = a cat .HEAD.LEMMA (DEP.LEMMA) refers to the lemma of the head (dependent)

通过混合搭配这些操作 (例如 CONCATREVBRACKETTRIPLE) ,他们创建了大约 420 万个独特的训练实例。

训练设置

预训练输入

Transformer 的输入是一系列向量。它以变换编码 (Transformation Encoding) (指令) 开始,紧接着是句子嵌入 (Sentence Embeddings)

Equation showing input construction

变换的编码很简单。对于每个依存标签 (如 NSUBJ) ,他们将标签的嵌入加上操作的嵌入 (如 BRACKET) 。

Equation showing transformation encoding

这告诉模型: “对于这个句子,如果你看到主语,给它加括号。如果你看到宾语,反转它。”

微调输入

当转移到下游任务 (如将主动语态翻译为被动语态) 时,我们没有像 NSUBJ -> BRACKET 这样的明确标签。我们只是希望模型自己弄清楚。

为了弥补这一差距,研究人员用可调嵌入 (本质上是一个学习到的前缀或“软提示”) 替换了明确的变换编码。

Equation showing tunable embeddings input

向量 \(\mathbf{h}'\) 是微调期间学习的参数。它们充当开关,潜在地“激活”模型在预训练阶段学到的特定注意力头和变换逻辑。

这有效吗?实验与结果

研究人员将 STEP 与标准 T5 模型以及经过预训练仅输出依存分析的 T5 模型 (T5+Dep Parse) 进行了比较。

1. 句法任务 (少样本)

他们测试了模型在训练数据非常少 (仅 100 个示例) 的情况下进行结构操纵的任务。

  • 被动化 (Passivization) : “The boy hit the ball” \(\to\) “The ball was hit by the boy.”
  • 形容词强调 (Adjective Emphasis) : “The French analysis” \(\to\) “The analysis that is French.”

Table 2: Evaluation on 100-shot syntactic transformation tasks. We report averages of 10 draws of 100 training examples each.

Table 2 所示,STEP 显著优于基线 T5 和 T5+Dep Parse 模型。对于被动化任务,准确率从 40.2% (T5) 跃升至 57.9% (STEP) 。 这证明练习合成树变换有助于模型更快地学习现实的语法变换。

2. 语义解析与泛化 (SLOG)

终极测试是 SLOG , 这是一个旨在通过测试结构泛化来“击溃”模型的基准测试。它要求模型解析那些比训练集具有更深递归或不同结构的句子。

结果令人印象深刻。STEP 在几乎所有类别中都优于标准 T5,尤其是在递归方面。

Figure B.1: Frequency of recursion depths in our parsed corpus (Section 3.2) according to the dependency trees produced by trankit. Note that the y-axis is in log scale.

Figure B.1 显示了预训练数据中的递归深度。尽管在训练期间很少见到极深的递归,但与基线相比,STEP 在 SLOG 基准测试中对更深层结构的泛化能力明显更好。

Table B.1: Full SLOG results.

查看 Table B.1 中的详细分类,注意“Deeper center embedding” (更深的中心嵌入) 一行。标准 T5 的得分仅为惨淡的 8.9% 。 STEP 达到了 17.3% , 而 STEP 的简化版本 (Simple STEP) 达到了 22.7% 。 虽然仍然很低 (中心嵌入对神经网络来说极其困难) ,但这是一种纯粹源于预训练归纳偏置的显著提升。

为什么有效?黑盒内部揭秘

这篇论文最令人兴奋的部分是对 STEP 为什么有效的分析。研究人员对模型的注意力头进行了“脑部手术”。

“查找”头 (The “Look-Up” Heads)

他们发现模型开发出了专门的变换查找头 (Transformation Look-Up Heads) 。 当模型处理一个单词 (例如“cat”) 时,特定的注意力头会回头看前缀 (指令) ,以查看应该对该单词所属的依存关系 (例如“Object”) 应用什么操作。

他们通过掩码 (关闭) 这些特定的头证实了这一点。

Figure 4: Change in accuracy of predicting the output of edgewise transformations when masking different attention heads. We show accuracy relative to no masking.

Figure 4 展示了这种干预的结果。

  • 蓝点: 当特定的“查找”头被掩码时,准确率急剧下降 (降幅高达 -50%) 。
  • 橙/绿点: 掩码随机头几乎没有影响。

这证实了假设: 模型不仅仅是在死记硬背模式;它建立了一种机制来检查“规则书” (前缀) 并将正确的操作应用到正确的单词上。

在微调中复用注意力头

但是这种机制在微调后还能保留吗?当模型被重新训练以进行被动语态转换 (此时没有明确的规则书,只有可调嵌入) 时,它仍然使用这些查找头吗?

Figure 5: Effect of masking look-up heads of models that have been fine-tuned on downstream syntactic tasks. For each task,we show the distribution for the 10 finetuned models from Section 4.2.

Figure 5 表明答案是肯定的。即使在微调后的下游任务 (如被动化) 中,掩码原始的查找头 (蓝框) 导致的错误率 (TER) 增加也比掩码随机头 (橙框) 要高得多。

同样,在合成下游任务中,这种影响更加显著:

Figure B.3: Effect of masking look-up heads of models fine-tuned on synthetic tasks. The boxplot shows the distribution for 10 synthetic downstream tasks.

Figure B.3 显示,掩码相应的查找头会导致准确率大幅下降 (中位数约为 -30%) ,而掩码随机头几乎没有任何作用。

这意味着可调嵌入 (学习到的软提示) 实际上是在学习模仿预训练中的明确指令代码,“激活”模型为处理句法树而构建的相同机制。

结论与启示

STEP 方法提供了有力的证据,表明我们并不总是需要新的模型架构来解决复杂的结构问题。有时,我们只需要给现有的模型提供更好的练习演练。

通过预训练 Transformer 对句法树执行明确的操作 (而不让其看到树本身) ,模型:

  1. 加强了其句法的内部表示。
  2. 学会了一种机制 (通过注意力头) ,将特定的 token 映射到特定的变换规则。
  3. 通过软提示成功地将这种机制迁移到现实世界的任务中。

这种方法为低资源语言或训练数据稀缺的专业领域提供了一条充满希望的前进道路。如果我们能以合成方式教会模型“变换语法”,它们就能用更少的例子学会下游任务的语言。

对于 NLP 领域的学生和研究人员来说,STEP 凸显了归纳偏置的重要性。模型的好坏取决于它能对数据做出的假设。通过巧妙的预训练将结构假设“烘焙”进去,我们可以让我们那“黑盒”模型多一点结构化,也多几分能力。