STRUCTBERT:将语言结构融入预训练以提升深度语言理解

**【摘要】**最近,预训练语言模型BERT(及其经过稳健优化的版本RoBERTa)在自然语言理解(NLU)领域引起了广泛关注,并在情感分类、自然语言推理、语义文本相似度和问答等各种NLU任务中达到了最先进的准确率。**受到Elman [8] 线性化探索工作的启发,我们在BERT的基础上提出了一种新模型StructBERT,通过在预训练过程中融入语言结构来提升表现。具体而言,我们为StructBERT设计了两个辅助任务,以充分利用单词和句子的顺序信息,从而在词级和句子级别上利用语言结构。这使得新模型能够适应下游任务所需的不同层次的语言理解能力。**在引入结构化预训练后,StructBERT在多个下游任务上取得了出色的实验结果。例如,在GLUE基准测试中达到89.0的分数(超越所有已发布模型),在SQuAD v1.1问答任务中F1分数达到93.0,在SNLI数据集上的准确率达到91.7。

1,引言

预训练语言模型(LM)是许多自然语言理解(NLU)任务的关键组件,例如语义文本相似度 [4]、问答 [21] 和情感分类 [25]。为了获得可靠的语言表示,神经语言模型利用自监督学习来定义文本中单词序列的联合概率分布。与传统的基于单词的嵌入方法不同(即为每个标记分配一个全局表示),近年来的研究(如 Cove [16]、ELMo [18]、GPT [20] 和 BERT [6])通过在大规模文本语料库上训练语言模型,生成上下文化的单词向量。这些模型已被证明在许多下游NLU任务中具有良好的效果。

在上下文敏感的语言模型中,BERT(及其经过稳健优化的版本RoBERTa [15])席卷了NLP领域。BERT的设计旨在通过在所有层中同时考虑左右上下文来预训练双向表示,并仅通过上下文来预测被掩码的单词,以学习语言表示。然而,它并未充分利用潜在的语言结构。

根据 Elman [8] 的研究,循环神经网络(RNN)在处理简单句子时对单词顺序的规律性表现出敏感性。由于语言的流畅性取决于单词和句子的排序,因此在许多自然语言处理(NLP)任务(如机器翻译和自然语言理解 [9])中,找到一组单词和句子的最佳排列方式是一个关键问题。近年来,单词排序被视为基于语言模型(LM)的线性化任务,仅依赖语言模型进行处理 [24]。Schmaltz 的研究表明,即使没有显式的句法信息,带有长短时记忆(LSTM)单元的循环神经网络语言模型(RNN-LM)[17] 也能有效地完成单词排序任务。
在本文中,我们介绍了一种新的上下文表示方式------StructBERT,它通过提出两种新的线性化策略,将语言结构引入到BERT的预训练中。具体而言,除了现有的掩码策略外,StructBERT 还利用结构信息来扩展 BERT,包括词级顺序和句级顺序。我们在模型预训练过程中分别针对句内结构和句间结构引入了两个新的结构化目标。通过这种方式,语言学特征在预训练过程中得到了显式捕捉。 通过结构化预训练,StructBERT 在上下文化表示中编码了单词之间以及句子之间的依赖关系,从而使模型具有更好的泛化能力和适应性。

  • 我们提出了一种新颖的结构化预训练方法,通过引入词级结构目标和句级结构目标扩展 BERT,在上下文化表示中利用语言结构。这使得 StructBERT 能够显式建模语言结构,并通过强制模型重建正确的单词和句子顺序来进行准确预测。

  • StructBERT 在各种自然语言理解(NLU)任务上显著超越了所有已发布的最新模型。该模型扩展了 BERT 的优势,并在语义文本相似度、情感分析、文本蕴含和问答等语言理解应用中提升了性能。

2,StructBERT 模型预训练

StructBERT 基于 BERT 架构,后者使用多层双向 Transformer 网络 [26]。给定一个单独的文本句子或一对文本句子,BERT 将它们打包成一个令牌序列,并为每个令牌学习一个上下文化的向量表示。每个输入令牌的表示是基于该词、位置以及它所属的文本片段。接下来,输入向量被送入一堆多层双向 Transformer 块,这些块使用自注意力机制,通过考虑整个输入序列来计算文本表示。

原始的 BERT 引入了两个无监督的预测任务来预训练模型:即掩码语言模型(Masked LM)任务和下一个句子预测任务。与原始 BERT 不同,**我们的 StructBERT 通过在单词掩码后打乱一定数量的令牌并预测正确的顺序,增强了掩码语言模型任务的能力。此外,为了更好地理解句子之间的关系,StructBERT 随机交换句子顺序,并预测下一个句子和前一个句子,作为一种新的句子预测任务。**通过这种方式,新的模型不仅显式地捕捉了每个句子中细粒度的词语结构,还以双向的方式正确地建模了句间结构。一旦通过这两个辅助任务预训练了 StructBERT 语言模型,我们就可以在任务特定数据上进行微调,以适应广泛的下游任务。

2.1,输入表示

**每个输入 是一系列词元,可以是一个单独的句子,也可以是****两个句子组成的对。**输入表示遵循 BERT [6] 中使用的方式。对于每个输入词元 ,其向量表示 是通过将对应的词元嵌入、位置嵌入和段落嵌入相加来计算的。我们总是将一个特殊的分类嵌入([CLS])作为每个序列的第一个词元,并在每个段落的末尾添加一个特殊的序列结束标记([SEP])。文本通过 WordPiece [30] 被分词为子词单元,绝对位置嵌入是通过支持的最大序列长度(最多 512 个词元)进行学习的。此外,段落嵌入用于区分一对句子,就像 BERT 中一样。

2.2,Transformer Encoder

我们使用多层双向 Transformer 编码器 [26] 来对输入表示进行上下文信息编码。给定输入向量 ,使用 L 层 Transformer 对输入进行编码,表示为:

其中:。我们使用隐藏向量 作为输入词元 的上下文化表示。

2.3,预训练目标

为了充分利用语言中丰富的句内和句间结构,我们在原始 BERT 的预训练目标基础上进行了两方面的扩展:

  • 词汇结构目标(主要用于单句任务)

  • 句子结构目标(主要用于句子对任务)

我们将这两个辅助目标与原始的掩码语言模型(LM)目标一起,在统一的模型中进行预训练,以利用语言的固有结构。


**【词汇结构目标】****尽管原始 BERT 在各种自然语言理解(NLU)任务中取得了成功,但它无法显式地建模自然语言中词语的顺序和高阶依赖关系。**给定一组随机顺序的词汇,理想的语言模型应该能够通过重构这些词汇的正确顺序来恢复原句。**为了在 StructBERT 中实现这一想法,我们在 BERT 的训练目标基础上增加了一个新的词汇结构目标,****使模型具备了重构某些故意打乱顺序的词元正确顺序的能力。**这个新的词汇目标与 BERT 的原始掩码语言模型(LM)目标一起联合训练。

上图展示了联合训练新的词汇目标和掩码 LM 目标的过程。在每个输入序列中,我们首先像 BERT [6] 中一样随机掩码 15% 的所有词元。由双向 Transformer 编码器计算的掩码词元对应的输出向量 被输入到 softmax 分类器中,以预测原始词元。

接下来,新的词汇目标开始发挥作用,考虑词语顺序。鉴于词元洗牌的随机性,词汇目标相当于最大化将每个洗牌词元放置到其正确位置的概率。更正式地,这个目标可以被表述为:

其中, 表示 StructBERT 的可训练参数集, 表示每个打乱子序列的长度。从技术上讲,较大的 会迫使模型能够重建更长的序列,同时注入更多干扰的输入。相反,当 较小的时候,模型获得更多未受干扰的序列,但在恢复长序列方面的能力较差。我们决定使用三元组(即 = 3)进行子序列打乱,以平衡语言重建能力和模型的鲁棒性。

具体来说,如上图所示,我们随机选择一定比例的三元组来自未屏蔽的标记,并在每个三元组内打乱三个词(例如图中的 t2、t3 和 t4)。通过双向 Transformer 编码器计算的打乱标记的输出向量,然后输入到一个 softmax 分类器中,以预测原始标记。新的词目标与掩蔽语言模型(LM)目标一起在统一的预训练模型中共同学习,并赋予相等的权重。
**【句子结构目标】原始 BERT 模型认为下一个句子预测任务比较简单(BERT 在此任务中的预测准确率可以轻松达到 97%-98% [6])。因此,我们通过预测下一个句子和上一个句子,扩展了句子预测任务,以使预训练语言模型以双向的方式意识到句子的顺序。如上图所示,给定一对句子(S1,S2)作为输入,我们预测 S2 是紧随 S1 之后的下一个句子,还是在 S1 之前的上一个句子,或者是来自不同文档的随机句子。具体来说,对于句子 S1,1/3 的时间我们选择紧随 S1 之后的文本片段作为第二个句子 S2,1/3 的时间选择 S1 之前的上一个句子,1/3 的时间则随机从其他文档中抽取一个句子作为 S2。**这两个句子被连接在一起,形成一个输入序列,并在中间使用分隔符标记 [SEP],如同 BERT 中的做法。我们通过取对应于第一个标记 [CLS] 的隐藏状态来汇聚模型输出,并将 [CLS] 的编码向量输入到一个 softmax 分类器中进行三类预测。

2.4,预训练设置

训练目标函数是词汇结构目标和句子结构目标的线性组合。对于掩蔽语言模型(Masked LM)目标,我们采用了与BERT [6] 相同的掩蔽率和设置,选择5%的三元组进行随机打乱。我们使用了来自英文维基百科(2,500M词)和BookCorpus [35] 的文档作为预训练数据,遵循了[6]中的预处理和WordPiece分词方法。输入序列的最大长度设置为512。

我们使用Adam优化器,学习率设置为1e-4,β1 = 0.9,β2 = 0.999,L2权重衰减为0.01,前10%总步骤进行了学习率预热,学习率采用线性衰减。每层设置了0.1的dropout概率。激活函数使用了gelu [10],与GPT [20]相同。

我们将Transformer块的层数记为L,隐藏向量的大小记为H,自注意力头数记为A。按照BERT的做法,我们主要报告两种模型规模的实验结果:

  • StructBERTBase:L = 12,H = 768,A = 12,参数数量 = 1.1亿

  • StructBERTLarge:L = 24,H = 1024,A = 16,参数数量 = 3.4亿

StructBERT的预训练是在一个由64个Tesla V100 GPU卡组成的分布式计算集群上进行的。对于StructBERTBase,我们进行了40轮预训练,耗时大约38小时;而StructBERTLarge的训练大约花费了7天完成。

3,结论

在本文中,我们提出了一种新颖的结构化预训练方法,将词汇结构和句子结构纳入BERT的预训练中。我们引入了词汇结构目标和句子结构目标,作为两种新的预训练任务,用于在不同粒度上深度理解自然语言。实验结果表明,新的StructBERT模型在多种下游任务中取得了新的最先进的结果,包括流行的GLUE基准、SNLI语料库和SQuAD v1.1问答任务。

相关推荐
鸿蒙布道师3 分钟前
OpenAI战略转向:开源推理模型背后的行业博弈与技术趋势
人工智能·深度学习·神经网络·opencv·自然语言处理·openai·deepseek
白雪讲堂11 分钟前
AISEO (GEO )中的知识图谱
人工智能·chatgpt·知识图谱
智能汽车人25 分钟前
自动驾驶---学术论文的常客:nuScenes数据集的使用
人工智能·机器学习·自动驾驶
小白的高手之路29 分钟前
torch.nn.Conv2d介绍——Pytorch中的二维卷积层
人工智能·pytorch·python·深度学习·神经网络·机器学习·cnn
飞桨PaddlePaddle33 分钟前
飞桨PP系列新成员PP-DocLayout开源,版面检测加速大模型数据构建,超百页文档图像一秒搞定
人工智能·百度·paddlepaddle·飞桨·deepseek
执笔论英雄42 分钟前
【Deepseek 学投机推理】Sequoia
人工智能
杭州默安科技1 小时前
大模型AI Agent的工作原理与安全挑战
人工智能·安全
bug404_1 小时前
jetson orin nano super AI模型部署之路(三)stable diffusion部署
人工智能·stable diffusion
Qiming_v1 小时前
如何使用stable diffusion 3获得最佳效果
人工智能·stable diffusion
liruiqiang051 小时前
循环神经网络 - 通用近似定理 & 图灵完备
人工智能·rnn·深度学习·神经网络·机器学习