【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understanding

在预训练语言模型考虑文本的结构信息,并提出新的预训练任务,在word和sentence级别上融入结构信息。引入结构信息的语言模型,在GLUE、SQuAD和NLI等下游任务上达到了SOTA。

备注:GLUE榜单:​​https://gluebenchmark.com/leaderboard​

简要信息:

序号

属性


1

模型名称

StructBERT

2

所属领域

自然语言处理

3

研究内容

预训练语言模型

4

核心内容

BERT改进

5

GitHub源码

6

论文PDF

​https://arxiv.org/pdf/1908.04577.pdf​


一、动机

  • 如何学习word的表征,并应用于下游任务一直以来是研究的核心。现如今基于BERT的双向深度表征方法常采用Masked Language Modeling作为自监督训练的任务,但他们均忽略了文本内在的结构信息;
  • 句子的结构信息包括inner-sentence(word-level)和inter-sentence(sentence)。先前的方法没有捕捉到word和sentence之间的依赖关系。

二、方法

Input Representation

与BERT一样,输入single sentence或sentence-pair,并对所有word embedding、position embedding和segment embedding进行求和。文本中插入[CLS]和[SEP]等特殊的token。输入最大长度设置为512,采用WordPiece分词规则。

Transformer Encoder

与BERT一样,采用多层Transformer进行表征;

Training

除了标准的Masked Language Modeling任务外,额外提出两个任务:

(1)Word Structure Objective
给定一个sentence,对其中的若干token随机打乱顺序,目标让模型能够reconstruct原始的token顺序,即预测出每个token对应的真实位置。

【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理


训练目标为:

【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_语言模型_02


其中 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_Word_03 为随机打乱顺序的token个数,本文采用类似滑动窗口方法,随机打乱长度为 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_Word_03 的窗口内的token序列,实验中认为 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_05

因此给定一个句子,首先随机选择15%的token替换为[MASK],然后再随机选择5%的窗口(长度均为3,且窗口内不包含[MASK])。对每个窗口内的3个token随机改变顺序。输出部分,除了对[MASK]部分预测其真实token的概率外,对打乱过的token也预测其对应的真实token。

(2)Sentence Structure Objective

【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_06


给定一个sentence pair 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_07。原始BERT中的Next Sentence Prediction只是一个二分类问题(预测句子 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_08 是否是 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_Word_09 的下一句)。本部分则拓展为三分类,即预测 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_08 是否是 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_Word_09 的下一句、预测 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_Word_09 是否是 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_08

如上图,首先从大规模语料中随机采样一个句子 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_Word_09, 对于该句子,如果其后一个序列作为 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_08,则标签为1;如果其前一个序列作为 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_08,则标签为2;如果从其他文档中随机采样一个句子作为 【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_自然语言处理_08,则标签为0。三类采样比例均分。

Pre-training

语料选择Wikipedia、BookCurpus。提供了base和large两种模型:

【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_语言模型_18


base训练40epoch,耗时38小时;large训练了7天。

三、实验

GLUE

【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_深度学习_19


发现当StructBERT与RoBERTa进行集成时,效果最好。

StructBERTRoBERTa表示在RoBERTa训练好的模型基础上,引入本文提出的两个目标继续进行训练得到的模型。

Extractive QA

以SQuAD1.1为例的抽取式问答实验结果:

【预训练语言模型】StructBERT: Incorporation Language Structures into Pre-training For Deep Language Understa_深度学习_20

在验证集上达到93.0。(StructBERT并未在SQuAD榜单上提交)