读论文分享001 - bert and its family

921 阅读9分钟

[toc]

上一代模型

Word2Vec

缺点
  • 由于词和向量是一对一的关系,所以多义词的问题无法解决。
  • Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化
优点
  • 由于 Word2vec 会考虑上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之后的方法)

  • 比之前的 Embedding方 法维度更少,所以速度更快

  • 通用性很强,可以用在各种 NLP 任务中

ELMo

优点
  • ELMo着重解决一词多义
  • ELMo生成的词向量利用了上下文的信息,根据下游任务,能够通过权值来调整词向量以适应不同任务
缺点

-LSTM对长距离的提取特征不如Transformer

  • lstm是串行机制

BERT介绍

在介绍bert之前,我们可以想象一下什么样的model才是state-of-the-art model,也许应该是:

  • 支持并行
  • 考虑上下文
  • 解决一词多义
  • 泛化能力强,可以完成不同的下游任务

GPT2 完美解决上述问题,但是美中不足的就是它是单向的Transformer,这也导致了其在训练得过程中会消耗一些性能。这就要引入本文要介绍的主角BERT了。

BERT模型总体结构

BERT是一种基于微调的多层双向Transformer编码器,其中的Transformer与原始的Transformer是相同的,并且实现了两个版本的BERT模型,在两个版本中前馈大小都设置为4层:

BERTBASE:L=12,H=768,A=12,Total Parameters=110M

BERTLARGE:L=24,H=1024,A=16,Total Parameters=340M

其中层数(即Transformer blocks块)表示为L,隐藏大小表示为H,自注意力的数量为A。 image.png

BERT模型输入

输入表示可以在一个词序列中表示单个文本句或一对文本(例如,[问题,答案])。对于给定的词,其输入表示是可以通过三部分Embedding求和组成。Embedding的可视化表示如下图所示:

image.png

  • token Embeddings表示的是词向量,第一个单词是CLS标志,可以用于之后的分类任务,对于非分类任务,可以忽略词向量;

  • Segment Embeddings用来区别两种句子,因为预训练不只做语言模型还要做以两个句子为输入的分类任务;

  • Position Embeddings是通过模型学习得到的。

Pre-training

掩码语言模型(MLM)

为了训练深度双向Transformer表示,采用了一种简单的方法:随机掩盖部分输入词,然后对那些被掩盖的词进行预测,此方法被称为“Masked LM”(MLM)。预训练的目标是构建语言模型,BERT模型采用的是bidirectional Transformer。那么为什么采用“bidirectional”的方式呢?因为在预训练语言模型来处理下游任务时,我们需要的不仅仅是某个词左侧的语言信息,还需要右侧的语言信息。

在训练的过程中,随机地掩盖每个序列中15%的token,并不是像word2vec中的cbow那样去对每一个词都进行预测。MLM从输入中随机地掩盖一些词,其目标是基于其上下文来预测被掩盖单词的原始词汇。与从左到右的语言模型预训练不同,MLM目标允许表示融合左右两侧的上下文,这使得可以预训练深度双向Transformer。Transformer编码器不知道它将被要求预测哪些单词,或者哪些已经被随机单词替换,因此它必须对每个输入词保持分布式的上下文表示。此外,由于随机替换在所有词中只发生1.5%,所以并不会影响模型对于语言的理解。

句子连贯性判定(NSP)

很多句子级别的任务如自动问答(QA)和自然语言推理(NLI)都需要理解两个句子之间的关系,譬如上述Masked LM任务中,经过第一步的处理,15%的词汇被遮盖。那么在这一任务中我们需要随机将数据划分为等大小的两部分,一部分数据中的两个语句对是上下文连续的,另一部分数据中的两个语句对是上下文不连续的。然后让Transformer模型来识别这些语句对中,哪些语句对是连续的,哪些对子不连续。

Fine-tuning

能解决的问题
  • 句对分类

判断两句子之间的关系,如句子语义相似度、句子连贯性判定等,其本质是文本分类。

输入:两句子;

输出:句子关系标签。

  • 单句子文本分类

判断句子属于哪个类别,如新闻自动分类、问题领域分类等。

输入:一个句子;

输出:输出句子类别标签。

  • 抽取式问答

给定问答和一段文本,从文本中抽取出问题的答案,如机器阅读理解等。其本质是序列标注。

输入:一个问题,一段文本;

输出:答案在文本中的索引。

  • 单句子序列标注

给输入句子的每个token打上目标标签,如分词、词性标注、实体识别等。

输入:一段文本;

输出:文本中每个token对应的标签。

模型对比图

image.png

image.png

模型评价

实验数据以及对应的NLP任务
GLUE语料集的介绍
名称全名用途
MNLIMulti-Genre NLI蕴含关系推断
QQPQuora Question Pairs问题对是否等价
QNLIQuestion NLI句子是否回答问句
SST-2Stanford Sentiment Treebank情感分析
CoLACorpus of Linguistic Acceptability句子语言性判断
STS-BSemantic Textual Similarity语义相似
MRPCMicrosoft Research Paraphrase Corpus句子对是否语义等价
RTERecognizing Texual Entailment蕴含关系推断
WNLIWinograd NLI蕴含关系推断

包含了各种理解句子含义和关系的任务。看一下效果:

image.png

实战

百度2021语言与智能技术竞赛:机器阅读理解任务

[百度2021语言与智能技术竞赛:机器阅读理解任务] (aistudio.baidu.com/aistudio/co…)

赛题说明:

给定一个问题q,一段篇章p及其标题t,参赛系统需要根据篇章内容,判断该篇章p中是否包含给定问题的答案,如果是,则给出该问题的答案a;否则输出“无答案”。数据集中的每个样本,是一个四元组,例如: 问题 ( q ): 番石榴汁热量 篇章 ( p ): 番石榴性温,味甜、酸、涩…,最重要的是番石榴所含的脂肪热量较低,一个番石榴所含的脂肪约0.9克重或84卡路里。比起苹果,番石榴所含有的脂肪少38%,卡路里少42%。 标题 ( t ): 番石榴汁的热量 - 妈妈网百科 参考答案 ( a ): [‘一个番石榴所含的脂肪约0.9克重或84卡路里’]

机器阅读理解任务基线系统详解

机器阅读理解任务基线系统详解

image.png image.png

  • 加载其他数据集
  • 模型融合
  • robert

its family

修改掩码语言模型(MLM)任务

Ernie

bert是随机mask输入序列中的字,这样能很简单地推测出字之间的搭配,这样会让本来应该有强相关的一些连在一起的字词,在训练时是割裂开来的。这对于中文文本中广泛包含多个字的实体、短语等单一的语义的词,俘获其语义信息是欠佳的。

因而ERNIE在输入为字的基础上,对输入序列中的短语和实体类的词实体词进行连续mask,这样一来短语信息就会融入到字的 embedding中了。

这样做的目的是:使模型能够学习到实体、短语的语义信息,训练完成后字的embedding就具有了实体、短语的语义信息了,这对于有大量短语、实体的文本任务(特别是实体识别任务)是非常友好。

image.png image.png

  • 一种是基于phrase
  • 一种是基于entity
Robert
  • 静态Mask变动态Mask

Bert在整个预训练过程,选择进行mask的15%的Tokens是不变的,也就是说从一开始随机选择了这15%的Tokens,之后的N个epoch里都不再改变了。这就叫做静态Masking。

而RoBERTa一开始把预训练的数据复制10份,每一份都随机选择15%的Tokens进行Masking,也就是说,同样的一句话有10种不同的mask方式。然后每份数据都训练N/10个epoch。这就相当于在这N个epoch的训练中,每个序列的被mask的tokens是会变化的。这就叫做动态Masking。

修改句子连贯性判定(NSP)任务

ALBERT
  • 移去NSP任务,使用SOP任务

BERT的NSP任务实际上是一个二分类,训练数据的正样本是通过采样同一个文档中的两个连续的句子,而负样本是通过采用两个不同的文档的句子。该任务主要是希望能提高下游任务(如文本匹配)的效果,但是后续的研究发现该任务效果并不好。NSP其实包含了两个子任务,主题预测(两个句子是否来源于同一类文章)与关系一致性(两个句子是否是承接关系)预测,但是主题预测相比于关系一致性预测简单太多了,并且在MLM任务中其实也有类型的效果。

因而,ALBERT中,为了只保留一致性任务去除主题识别的影响,提出了一个新的任务—句子连贯性预测 sentence-order prediction(SOP),SOP的正样本和NSP的获取方式是一样的,负样本把正样本的顺序反转即可。SOP因为实在同一个文档中选的,其只关注句子的顺序并没有主题方面的影响。并且SOP能解决NSP的任务,但是NSP并不能解决SOP的任务,该任务的添加给最终的结果提升了一个点。

这样做的目的是:通过调整正负样本的获取方式去除主题识别的影响,使预训练更关注于句子关系一致性预测。

模型参数大小上做文章

TinyBERT

TinyBERT 是华为、华科联合提出的一种为基于 transformer 的模型专门设计的知识蒸馏方法,模型大小不到 BERT 的 1/7,但速度提高了 9 倍,而且性能没有出现明显下降。

引入知识图谱

K-BERT

多模态

VideoBERT
VisualBERT
SpeechBERT

参考文献

elmo

李宏毅人类语言处理ppt

知乎:万字长文带你纵览 BERT 家族

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

Attention Is All You Need

Attention? Attention!

NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

ERNIE: Enhanced Representation through Knowledge Integration

TinyBERT: Distilling BERT for Natural Language Understanding

K-BERT: Enabling Language Representation with Knowledge Graph

csdn:超详细中文预训练模型ERNIE使用指南

机器阅读理解算法与实践

[知乎:比 Bert 体积更小速度更快的 TinyBERT](zhuanlan.zhihu.com/p/94359189)