该系列文章,旨在梳理Bert之后一些经典的NLP模型。
系列一:BERT之后,NLP主要预训练模型演变梳理
我们提出了一种新的知识增强语言表征模型,称为ERNIE(Enhanced Representation through Knowledge Integration,主要是通过对知识进行整合,达到增强表达的目的)。受BERT(Devlin等人,2018)的掩码策略启发,ERNIE旨在学习由知识掩码策略增强的语言表征,其中包括实体级掩码和短语级掩码。实体级策略要求通常由多个单词组成的实体。短语级策略将由多个单词组成的整个短语作为一个概念单元进行屏蔽。最新实验结果表明,在五个自然语言处理任务(包括自然语言推理,语义相似性,命名实体识别,情感分析和检索问答)上,ERNIE优于其他基准方法。我们还证明了ERNIE在完形填空测试中具有更强大的知识推理能力。
事实证明,语言表征预训练(Mikolovet等人,2013年;Devlin等人,2018年)对于改善许多自然语言处理任务(如命名实体识别、情感分析和问答)是有效的。其为了获得可靠的单词表示,设计了神经语言模型,学习单词共现,然后通过无监督学习获得单词嵌入。Word2Vec(Mikolov等人,2013)和Glove(Penningtonet等人,2014)中的方法将单词表示为向量,其中相似的单词具有相似的单词表示。这些单词表示为其他深度学习模型中的单词向量提供了初始化。最近,Cove(Mc Cann et al.,2017)、Elmo(Peters et al.,2018)、GPT(Radford et al.,2018)和BERT(Devlin et al.,2018)等许多工作通过不同的策略改进了单词表示,这项研究已经被证明对下游自然语言处理任务更有效。
这些研究中的绝大多数只是通过上下文预测缺失的单词,然后进行建模。这些作品没有考虑句子中的先验知识。例如,在”Harry Potter is a series of fantasy novels written by J. K. Rowling”这句话中,“Harry Potter”是一个名字和“J. K. Rowling”是作家。该模型不需要长上下文的帮助,而只要通过单词搭配就可以很容易地预测实体中的遗漏单词Harry Potter。但是,现存的模型无法根据Harry Potter与J. K. Rowling之间的关系预测Harry Potter。 很显然,如果模型学习了有关先验知识的更多信息,则该模型可以获得更可靠的语言表示。
本文提出了一种基于知识掩码策略的ERNIE(enhanced representation by knowledge Integration)模型,除基本掩码策略外,还采用了两种知识策略:短语级策略和实体级策略。我们把一个短语或一个实体作为一个单位,通常由几个词组成。在单词表征训练中,同一单元中的所有单词都被屏蔽,而不是只屏蔽一个单词或字符。这样,在训练过程中,短语和实体的先验知识被隐式学习。ERNIE没有直接添加知识嵌入,而是有效地学习了有关知识和较长语义依赖的信息,如实体之间的关系、实体的属性和事件的类型,以指导单词学习。这可以使模型具有更好的泛化性和适应性。
为了降低模型的训练成本,ERNIE对异构中文进行了预训练,然后将其应用于5个中文NLP任务。ERNIE对所有这些任务的最新结果进行了改进。在完形填空测试上实验表明,与其他强基线方法相比,ERNIE具有更好的知识边缘推理能力。
ERNIE的主要的贡献如下:
(1)我们引入了一种新的语言学习处理模型,该模型弱化了语言单位(如符号和实体),以便隐式地从这些单位学习句法和语义信息。
(2)ERNIE在各种汉语自然语言处理任务上的表现明显优于先前的最新方法。
(3)我们发布了ERNIE和预训练模型的代码,这些代码都可以在如下链接中找到:https://github.com/PaddlePaddle/ERNIE/tree/develop/ernie.
词作为连续向量的表示有着悠久的历史。Bengio等人(2003年)提出了一种非常流行的用于估计神经网络语言模型(NNLM)的结构,其中主要包括:一个具有线性投影层和非线性隐层的前馈神经网络用于学习单词向量表示。
通过使用大量未标记数据预训练语言模型,然后学习通用语言表示是有效的。传统方法侧重于上下文无关的词语嵌入。例如,Word2Vec(Mikolovet等人,2013年)和Glove(Pennington等人,2014年)等方法将大量文本作为输入,并生成几百维的词向量。它们为词汇表中的每个单词生成一个单词嵌入表示。
我们知道,一个词在上下文中可能有完全不同的含义。Skip-thought(Kiros et al,2015)提出了一种通用的分布式句子编码器的无监督学习方法。Cove(McCann et al.,2017)表明,和在各种常见NLP任务中仅使用无监督的单词和字符向量相比,添加这些上下文向量可以提高性能。ULMFit(Howard and Ruder,2018)提出了一种有效的迁移学习方法,可应用于NLP中的任何任务。ELMo(Peters et al.,2018)从不同的维度概括了传统的词语嵌入研究。他们建议从语言模型中提取上下文敏感特征。GPT(Radford et al.,2018)通过调整Transformer增强了上下文敏感嵌入。
BERT(Devlin et al.,2018)使用两种不同的跟踪任务进行语言建模。Bert随机地在句子中隐藏一定比例的单词,并学习预测那些隐藏的单词。此外,BERT还学习预测两个句子是否相邻。这项任务试图模拟传统语言模型无法捕捉到两个句子之间的关系。因此,这种特殊的预训练方法有助于BERT在各种关键NLP数据集(如GLUE(Wang et al.,2018)和SQUAD(Rajpurkar et al.,2016)等)上远超过其他技术。
其他一些研究人员试图根据这些模型添加更多信息。MT-DNN(Liu等人,2019年)将预训练学习和多任务学习相结合,以提高GLUE中多个不同任务的表现(Wang等人,2018年)。GPT-2(Radford et al.,2019)将任务信息添加到预训练过程中,并使其模型适应零样本任务。XLM(Lample and Conneau,2019)将语言嵌入到预训练过程中,在跨语言任务中取得了更好的效果。
在非监督的异构数据上预训练语义编码器可以提高迁移学习性能。我们(Ceret al.,2018)采用了来自维基百科、网络新闻、网络QA页面和论坛的异构数据对句子编码。句子编码器(Yanget al.,2018)基于从Reddit对话中提取的查询-响应对数据的响应预测。XLM(Lample和Conneau,2019)将平行语料库引入了BERT,该语料库与掩码语言模型任务联合训练。通过transformer对异构数据进行预训练,XLM在无监督机器翻译任务和分类任务中表现出了优异的性能。
本节介绍ERNIE及其详细实现。我们首先描述了模型的transformer编码器,然后在第3.2节介绍了知识集成方法。BERT和ERNIE之间的比较如图1所示.
ERNIE使用多层Transformer (Vaswani et al,2017)作为基本编码器,类似于之前的预训练模型,例如GPT,BERT和XLM。 Transformer 可以通过自注意力机制来捕获句子中每个标记的上下文信息,并生成一系列上下文embedding。
对于中文语料库,我们在CJK Unicode范围内的每个字符周围添加空格,并使用WordPiece(Wu等人,2016)标记中文句子。对于给定的token,其输入表示是通过对相应的token、部分和位置进行求和构造的。每个序列的第一个标记是特殊分类嵌入([CLS])。
我们使用先验知识来增强预训练语言模型。我们没有直接添加知识嵌入,而是提出了一种多阶段知识掩码策略,将短语和实体集成到语言表示中。句子中不同的掩码级别如图2所示。
第一个学习阶段是使用基本的掩码,它将一个句子视为一系列基本的语言单元,对于英语,基本的语言单元是单词,对于汉语,基本的语言单元是汉字。在训练过程中,我们随机屏蔽15%的基本语言单元,并使用句子中的其他基本单元作为输入,并训练一个转换器来预测被屏蔽的单元。基于基本层掩码,我们可以得到基本的单词表示。因为它是在基本语义单元随机掩码的基础上训练的,所以高层语义的知识表示很难完全建模。
第二阶段是使用短语级掩码。短语是作为概念单位的一小群单词或字符。对于英语,我们使用词汇分析和组块工具来获取句子中短语的边界,并使用一些依赖于语言的切分工具来获取其他语言(如汉语)中的单词/短语信息。在短语级掩码阶段,我们还使用基本语言单元作为训练输入,不像随机基本单元掩码那样,这次我们在句子中多选几个短语,掩码并预测同一短语中的所有基本单元。在这个阶段,短语信息被编码到单词嵌入中。
第三阶段是实体级掩码。我们把一些专有名词,如地点、人名、组织、产品等抽象为实体进行屏蔽。实体通常包含句子中的重要信息。在短语屏蔽阶段,我们首先分析一个句子中的命名实体,然后屏蔽和预测实体中所有的空缺。
经过这三个阶段的学习,我们可以获得语义信息丰富的表达。
为了进行更好的比较,ERNIE选取的模型和BERT-base模型相同,也具有12个编码器层、768个隐藏单元和12个注意力头。
ERNIE采用异构语料库进行预训练。我们构建了混合语料库,包含中文维基百科、百度百科、百度新闻和百度贴吧。句子的数量分别为2100万、5100万、4700万、5400万。百度百科包含以正式语言编写的百科全书文章,这是语言建模的有力基础。百度新闻提供有关电影名称、演员姓名、足球队名称等的最新信息。百度贴吧是一个类似Reddits的开放式论坛,每个帖子都可以被视为一个对话话题。在我们的DLM任务中我们使用了Tieba语料库,我们将在后面讨论这部分内容。
我们对汉字进行繁体到简体的转换,对英文字母进行大小写转换。为模型使用了17,964个unicode字符的共享词汇表。
对话数据对于语义表示很重要,因为相同回复的相应查询语义通常相似。ERNIE在DLM(对话语言模型)任务上对查询-响应对话结构进行建模。如图3所示,我们的方法引入了对话嵌入(dialogue embedding)来识别对话中的角色,这与通用句子编码器的方法不同(Cer等人,2018)。 ERNIE的“对话”嵌入功能与BERT中的token类型嵌入功能相同,不同之处在于ERNIE还可以表示多回合对话(例如QRQ,QRR,QQR,其中Q和R分别代表“查询”和“响应”)。像BERT中的MLM一样,使用掩码来强制使模型预测以查询和响应为条件的缺失词。而且,我们通过用随机选择的句子替换查询或响应来生成假样本。该模型旨在判断多回合对话是真实的还是假的。
DLM任务帮助ERNIE学习对话中的隐式关系,这也增强了模型学习的语义表示能力。DLM任务的模型体系结构与MLM任务的模型体系结构兼容,因此它是与MLM任务交替训练的。
ERNIE被用于在自然语言推理、语义相似性判断、命名实体识别、情感分析和问答等5项中文NLP任务上进行实验。
跨语言自然语言推理(XNLI)语料库(Liu等人,2019年)是MultiNLI语料库的众包集合。这些标签用文本蕴涵进行注释,并翻译成包括中文在内的14种语言。标签包含矛盾、中性和修饰。我们遵循BERT中的中文实验(Devlin等人,2018年)。
大规模中文问题匹配语料库(LCQMC)(Liu等人,2018)旨在识别两个句子是否具有相同的意图。 数据集中的每一对句子都与一个二进制标签相关联,该二进制标签指示两个句子是否共享相同的意图,并且可以将该任务形式化为预测二进制标签。
MSRA-NER数据集是为姓名识别而设计的,该数据集由Microsoft Research Asia发布。实体包含七种类型,包括人名、地名或组织名称等。此任务可视为序列标记任务。
CHNSTINCorp(Song bo)是一个旨在判断句子情感的数据集。它包含了一些领域的评论,如酒店、书籍和电子计算机。这项任务的目的是判断句子是积极的还是消极的。
NLPCC-DBQA数据集的目标(http://tcci.ccf.org.cn/conference/2016/dldoc/evagline2.pdf)选择相应问题的答案。该数据集的评估方法包括MRR(Voorhees,2001)和F1分数。
表1给出了5个中文NLP任务的测试结果。可以看出,ERNIE在所有任务上的表现都超过了BERT,在这些NLP任务上创造了最先进的结果。对于XNLI、MSRA-NER、CHNSTINCorp和nlpcc-dbqa(nlpcc:基于知识库的问答,dbqa:基于文档的问答)任务,ERNIE比BERT获得超过1%的绝对精度改进。ERNIE的成功归因于其知识整合策略。
为了更好地了解ERNIE,我们将在本节中对ERNIE的每种策略进行消融实验。
我们从整个语料库中抽取10%的训练数据,以验证知识掩码策略的有效性。结果见表2。我们可以看到,将短语级掩码添加到基线单词级掩码可以提高模型的性能。在此基础上,增加了实体级掩码策略,进一步提高了模型的性能。此外结果还表明,当预训练数据集的大小增加10倍时,XNLI测试集的性能提高了0.8%。
我们还对DLM(对话语言模型)任务进行了消融研究。我们使用10%的具有不同比例的训练语料来说明DLM测试对XNLI开发集的贡献。然后对这些数据集从头开始用ERNIE进行预训练,并对5次随机的微调结果取平均值。详细的实验设置和开发集结果如表3所示,我们可以看到,在这个DLM任务中,开发/测试精度提高了0.7%/1.0%。
为了验证ERNIE的知识学习能力,我们使用了几个完形填空测试样本(Taylor,1953)来检验模型。在实验中,我们把命名实体从段落中删除,模型需要推断它是什么。有些情况如图4所示。我们比较了bert和ERNIE的预测。
在情况1中,BERT尝试复制出现在上下文中的名称,而ERNIE则记住了文章中提到的有关关系的知识。在情况2和情况5中,BERT可以根据上下文成功学习表现模式,因此可以正确预测命名的实体类型,但是无法使用正确的实体填充插槽。相反,ERNIE可以使用正确的实体填充插槽。在情况3、4、6中,BERT用与句子相关的几个字符填充了空位,但是很难预测语义概念。 ERNIE可以预测除情况4之外的正确实体。尽管ERNIE在情况4中预测了错误的实体,但它可以正确地预测语义类型,并用一个澳大利亚城市填充该位置。总之,这些案例表明ERNIE在基于上下文的知识推理中表现更好。
本文提出了一种将知识整合到预训练语言模型中的新方法。在5个中文处理任务上的实验表明,该方法在所有这些任务上都优于Bert。我们还确认,知识集成和对异构数据的预训练都能使模型获得更好的语言表示。
下一步,我们将会把其他类型的知识集成到语义表示模型中,例如使用句法分析或来自其他任务的弱监督信号。此外,我们还将用其他语言验证这个想法。
参考资料:
原文链接:https://arxiv.org/pdf/1904.09223.pdf
ernie学习地址:https://github.com/PaddlePaddle/ERNIE/blob/develop/README.zh.md