BERT变形记-ERNIE

ERNIE 1.0

如何将知识(knowledge)信息融入到模型训练中,一种方式是将知识信息作为输入,成本是其他人使用的时候也要构建知识库,并且fine-tune和pre-train的知识库分布不一致,fine-tune也会出现问题。

另一种方式是将知识信息融入到训练任务中,ERNIE提出一种知识掩盖策略取代bert的mask,包含实体层面和短语级别的掩盖,实验验证了这种策略的有效性,

多阶段的mask

BERT变形记-ERNIE_第1张图片

Basic-Level Masking

和bert一样,随机选取token做mask。

Phrase-Level Masking

会将语法中的短语做mask,例如:a series of|such as 等。

Entity-Level Masking

会将一些实体整个mask,主要实体包含人物、地点、组织、产品名等。

数据

训练预料包括中文维基百科,百度百科,百度新闻(最新的实体信息),百度贴吧。

DLM

其中百度贴吧的Query-Response信息用于DLM训练,即对话语言模型,每个句子会有一个标记,Q表示query,R表示response。这个dialogue embedding,其实就是bert里面的sentence embedding(segment id)。

BERT变形记-ERNIE_第2张图片

效果

实验证明了其提出的两种mask策略都对下游人物有所提升,其二,证明了DLM人物,对于下游人物也有相应的提升。其三,通过完型填空人物,ernie能够更好地利用词语信息预测出正确的实体。

BERT变形记-ERNIE_第3张图片

ERNIE 2.0

当前pre-training模型更多关注词语或者句子共现,没有很好地利用语料中词汇( lexical)、句法(syntactic)和语义(semantic)信息,例如实体、semantic closeness、discourse relations。为了更好的利用训练语料中的词汇、句法和语义信息,提出可持续学习(continual learning)的ERNIE2.0的多任务的预训练框架,并实验论证了在GLUE上效果超过BERT和XLNet。

XLNet看论文提出的方法很有意思,但是效果提升上来说,真的难讲是参数量带来的提升还是模型改进,甚至怀疑是调优上带来的提升(炼丹术)。

纵观BERT相关改进方法,无非模型和数据两方面,添加跟多语言建模任务其实是数据和模型上的改进,效果上肯定是数据优化带来的提升更为明显,例如roberta改进了数据预处理带来的某些任务提升就超过了XLNet。

ERNIE2.0框架

作者基于上面假设,提出来ERNIE2.0的框架,支持添加定制的任务与原有多任务一起增量地预训练,使得模型能够更好地学习到语料中的词汇( lexical)、句法(syntactic)和语义(semantic)表示。

个人理解主要区别就在于添加了更多的语言任务,底层模型的话还是Transformer,或者你也可以换成RNN(换成RNN图个啥呢)

BERT变形记-ERNIE_第4张图片

git: https://github.com/PaddlePaddle/ERNIE

Continual Pre-training

持续预训练包含两步。首先,通过引入先验知识和大数据上持续地无监督任务训练模型,然后增量的添加多任务更新ERNIE模型。

对于第一步pre-training,会构造词语感知、结构感知、语义感知的任务,这些任务都是无监督或者弱监督的信号,能够方便的从大量语料中,无须人工标注。

对于第二步的多任务,使用持续学习的方式训练。首先使用一个简单的任务训练初始模型,然后持续增加新的预训练任务来升级模型。注意,在添加新任务的时候,会和之前任务一起训练,来保证模型不会忘记之前学到的知识。基于此,作者认为这种持续学习能够让ERNIE框架保持学习并且持续收集知识,同时积累的知识保证模型在新任务上能够学得更好。

讲道理,这不就是 积跬步而至千里 吗?

整体框架如下图,中间的Encoder为各个人物所共享,可以是Transformer、RNN、甚至CNN(as you like,但是也没必要开倒车),将其分类了两大类损失,一类是句子级别的损失,一类是字级别,后面会介绍。

BERT变形记-ERNIE_第5张图片

ERNIE 2.0 Model

模型结构

Transformer Encoder:作为底层的共享编码层,细节参考:Attention Is All You Need

Task Embedding:底层引入了任务的编码特征来区分不同的任务,对于不同的任务使用唯一表示的ID来表示,每个id有一个唯一的向量表示(就想word embedding一样,只是这里id少而已)。其他的和BERT类似,就是Token embedding, sentence embedding, Position embedding. 见图三。

看到这里我有点好奇训练方式,难道七个任务是交替训练吗,继续看下文吧

在这里插入图片描述

预训练任务

Word-aware Pre-training Tasks

Knowledge Masking Task:和ERNIE1.0类似,使用字、短语、实体级别的mask LM任务来训练,具体就是掩盖掉整个短语、实体,让模型通过上下文和全局信息预测这些被掩盖掉的词语。此任务是初始化训练模型。

Capitalization Prediction Task: 即大小写预测,在英文中大写字母一般有特殊含义,一般都是实体,所以这个任务对于识别实体会有一些帮助。

Token-Document Relation Prediction Task:这是啥意思,TF? no IDF? 预测一个词语是否在其他段落中。一般主题词不会在其他段落中出现,但是主题词也有可能在其他类似文档中出现,所以作者期望这个能够让模型具备捕获关键词能力。

Structure-aware Pre-training Tasks

Sentence Reordering Task: 即排序任务,咋建模呢,哈哈,将一段话随机切成[1,m]段,然后随机打乱顺序,那模型咋预测,简单,可能的序列有 k = ∑ n = 1 m n ! k=\sum_{n=1}^{m}n! k=n=1mn!种,那不就是一个k分类问题吗,好吧。然后模型就能学到段落中句子的关系。

说实话,我觉得能如果m比较小还行,比如m=2就很像BERT里面的NSP任务,但是m大的话,呵呵。但是,作者这种范式总结还是很赞。

Sentence Distance Task: 对于句子距离,怎么建模呢,仍然是分类来做,具体为3分类问题。

  • 0类:两个句子是同一段中相邻。
  • 1类:两个句子在同一段话中,但是不相邻。
  • 2类:两个句子没有在同一段话中。

Semantic-aware Pre-training Tasks

Discourse Relation Task:除了句子的位置距离,那么语义关系还没有呢,于是这里提出了句子间的语义(其实是修辞)关系任务。使用了Mining discourse markers for unsupervised sentence representation learning中的英文数据训练模型,同时使用期方法自动构建了中文数据来训练中文模型。

IR Relevance Task:那么真语义相似性任务呢,这就来了,利用百度搜索引擎的数据(要是能用google的估计能好不少),判断query(第一句)和url title(第二句)的关系,也是一个三类别。

  • 0表示强相关(即用户点击)。
  • 1表示弱相关,即用户输入query,title被展示出来,哈哈,就是百度的搜索结果作为标签(那不全学到广告了,哈哈,开玩笑的,应该会去掉广告吧)。
  • 2表示query、title完全不相关,随机选取。

那么具体是怎么训练的呢?

Continual Multi-task Learning

面临两个问题,一是使用持续学习的方式学习多个任务,并且模型不能遗忘之前的任务的知识。作者通过continual multi-task learning方法,每次训练新任务之前加载之前模型参数,并且新任务会和之前的任务一起同时训练。

另一个是怎么更高效地训练多个任务。通过对不同的任务,分配不同的迭代次数N,在不同的训练阶段框架需要自动对每个任务分配N的值,以此来保证高效并且模型不会遗忘之前任务。

那么问题来了,这个超参数N咋设置呢,炼丹吗?

实验

最重要的,数据来源,英文数据集来自于wiki百科,book corpus,收集了Reddit和Discoery data[3]作为语义关系的数据。中文预料包含百科、新闻、对话、信息检索、语义关系、搜索引擎数据。见下表

BERT变形记-ERNIE_第6张图片

Fine-tuning任务

英文自然是GLUE任务。中文任务包含9项:阅读理解、实体识别、NLI、语义相似度、情感分析、QA。

结果自然是超过了之前的一些BERT模型。英文数据集GLUE结果

BERT变形记-ERNIE_第7张图片

中文数据集:

BERT变形记-ERNIE_第8张图片

训练方式对比

作者所谓的continual Multi-task Learning,分别和MTL、CL做了对比,如图

BERT变形记-ERNIE_第9张图片

三种训练方式,continual Multi-task Learning最优,具体训练是stage1训练任务1 20k步,stage2训练任务1和任务2以3:1比例训练。以此类推,作者任务这样会

Reference

  1. Attention Is All You Need
  2. https://github.com/PaddlePaddle/ERNIE
  3. Mining discourse markers for unsupervised sentence representation learning
  4. [GLUE](

你可能感兴趣的:(Bert原理和应用,NLP)