【预训练语言模型】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 |
一、动机
- 如何学习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对应的真实位置。
训练目标为:
其中 为随机打乱顺序的token个数,本文采用类似滑动窗口方法,随机打乱长度为
的窗口内的token序列,实验中认为
因此给定一个句子,首先随机选择15%的token替换为[MASK],然后再随机选择5%的窗口(长度均为3,且窗口内不包含[MASK])。对每个窗口内的3个token随机改变顺序。输出部分,除了对[MASK]部分预测其真实token的概率外,对打乱过的token也预测其对应的真实token。
(2)Sentence Structure Objective
给定一个sentence pair 。原始BERT中的Next Sentence Prediction只是一个二分类问题(预测句子
是否是
的下一句)。本部分则拓展为三分类,即预测
是否是
的下一句、预测
是否是
如上图,首先从大规模语料中随机采样一个句子 , 对于该句子,如果其后一个序列作为
,则标签为1;如果其前一个序列作为
,则标签为2;如果从其他文档中随机采样一个句子作为
,则标签为0。三类采样比例均分。
Pre-training
语料选择Wikipedia、BookCurpus。提供了base和large两种模型:
base训练40epoch,耗时38小时;large训练了7天。
三、实验
GLUE
发现当StructBERT与RoBERTa进行集成时,效果最好。
StructBERTRoBERTa表示在RoBERTa训练好的模型基础上,引入本文提出的两个目标继续进行训练得到的模型。
Extractive QA
以SQuAD1.1为例的抽取式问答实验结果:
在验证集上达到93.0。(StructBERT并未在SQuAD榜单上提交)