介绍
首次出现后,BERT 在情感分析、文本相似性、问答等各种 NLP 任务中展现了惊人的结果。从那时起,研究人员就试图通过修改其架构、增加训练数据、增加词汇量大小或更改隐藏层的大小。
尽管创建了其他强大的基于 BERT 的模型(例如 RoBERTa),但研究人员发现了另一种有效的方法来提高 BERT 的性能,本文将对此进行讨论。这导致了一种名为StructBERT的新模型的开发,该模型在顶级基准测试中自信地超越了 BERT。
预训练
在大多数情况下,StructBERT 与 BERT 具有相同的架构原则。尽管如此,StructBERT 提出了两个新的预训练目标来扩展 BERT 的语言知识。该模型与掩码语言建模一起针对此目标进行训练。下面让我们看看这两个目标。
1. 词句目标
实验表明,掩码语言建模(MSM)任务在 BERT 设置中发挥着至关重要的作用,帮助其获取大量语言知识。经过预训练后,BERT 可以正确猜测屏蔽词,准确率很高。然而,它无法正确地重建单词被打乱的句子。为了实现这一目标,StructBERT 开发人员通过部分改组输入标记来修改 MSM 目标。
与原始 BERT 一样,输入序列被标记、屏蔽,然后映射到标记、位置和分段嵌入。然后将所有这些嵌入相加以生成组合嵌入,并将其馈送到 BERT。
在屏蔽过程中,15% 的随机选择的标记被屏蔽,然后用于语言建模,就像 BERT 中一样。但在屏蔽之后,StructBERT 会随机选择 K 个连续未屏蔽标记中的 5%,并在每个子序列中对它们进行洗牌。默认情况下,StructBERT 对三元组 (K = 3) 进行操作。
当计算最后一个隐藏层时,使用掩码和混洗标记的输出嵌入来预测原始标记,同时考虑到它们的初始位置。
最终,词句目标与MLM目标等权重结合。
2. 句子结构目标
下一句预测是另一个 BERT 预训练任务,被认为相对简单。掌握它并不会显着提升 BERT 在大多数下游任务上的性能。这就是为什么 StructBERT 研究人员通过让 BERT 预测句子顺序来增加这一目标的难度。
通过在文档中使用一对连续的句子 S₁ 和 S2,StructBERT 使用它们以三种可能的方式之一构建训练示例。这些方式中的每一种发生的概率均为 1 / 3:
这三个过程中的每一个都会产生一对有序的句子,然后将其连接起来。标记 [CLS] 添加在第一个句子的开头之前,[SEP] 标记用于标记每个句子的结尾。BERT 将此序列作为输入,并在最后一个隐藏层上输出一组嵌入。
[CLS] 嵌入的输出最初在 BERT 中用于下一句预测任务,现在在 StructBERT 中使用,以正确识别与输入序列的原始构建方式相对应的三个可能标签之一。
最终目标
最终目标由单词和句子结构目标的线性组合组成。
StructBERT 设置
BERT 和 StructBERT 中的所有主要预训练细节都是相同的:
StructBERT 版本
与最初的 BERT 一样,StructBERT 也提供了基础版本和大型版本。所有主要设置(如层数、注意力头、隐藏大小和数字参数)分别与 BERT 的基本版本和大版本完全对应。
结论
通过引入一对新的训练目标,StructBERT 在 NLP 方面达到了新的极限,在各种下游任务上始终优于 BERT。事实证明,这两个目标在 StructBERT 设置中都发挥着不可或缺的作用。虽然单词结构目标主要增强了模型在单句问题上的性能,使 StructBERT 能够重建词序,但句子结构目标提高了理解句子间关系的能力,这对于句子对任务尤为重要。