ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

BERT深入浅出

BERT深入浅出

BERT深入浅出

  • 简介
  • 架构
    • Bert Encoder
    • MLM(Masked Language Model)
    • NSP(Next Sentence Prediction)
    • 训练过程
    • 微调

简介

2019 年 Google AI 发布论文 BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding。BERT分为预训练(Pre-training)与微调(Fine-tune)。预训练简单来说就是通过两个联合训练任务得到Bert模型。而微调便是在预训练得到Bert模型基础上进行各种各样的的 NLP 任务。而他的双向是针对解码器来说的,解码器预测下一个词,从左到右,Bert采用Encoder结构,能获取mask词的上下文信息。

论文复现可以见项目:BERT

架构

Bert Encoder

其就是 Transformer Encoder 的部分做了修改:

MLM(Masked Language Model)

MLM是指在训练的时候随即从输入语料上mask掉一些单词,然后通过的上下文预测该单词,该任务非常像我们在中学时期经常做的完形填空。正如传统的语言模型算法和RNN匹配那样,MLM的这个性质和Transformer的结构是非常匹配的。在BERT的实验中,15%的WordPiece Token会被随机Mask掉。在训练模型时,一个句子会被多次喂到模型中用于参数学习,但是Google并没有在每次都mask掉这些单词,而是在确定要Mask掉的单词之后,做以下处理。

  • 80%的时候会直接替换为[Mask],将句子 “my dog is cute” 转换为句子 “my dog is [Mask]”。
  • 10%的时候将其替换为其它任意单词,将单词 “cute” 替换成另一个随机词,例如 “apple”。将句子 “my dog is cute” 转换为句子 “my dog is apple”。
  • 10%的时候会保留原始Token,例如保持句子为 “my dog is cute” 不变。

MLM叫做掩码语言模型,这是无监督目标函数,分为两种:

  • AR:autoregressive,自回归模型;只能考虑单侧的信息,典型的就是GPT。
    P(我爱吃饭)=P(我)P(爱|我)P(吃|我爱)P(饭|我爱吃);
  • AE:autoencoding,自编码模型;从损坏的输入数据中预测重建原始数据。可以使用上下文的信息。
    mask之后:【我爱mask饭】。P(我爱吃饭|我爱mask饭)=P(mask=吃|我爱饭);也就是mask接近文本的词汇。

而Bert就是使用的AE:

NSP(Next Sentence Prediction)

Next Sentence Prediction(NSP)的任务是判断句子B是否是句子A的下文。如果是的话输出’IsNext‘,否则输出’NotNext‘。训练数据的生成方式是从平行语料中随机抽取的连续两句话,其中50%保留抽取的两句话,它们符合IsNext关系,另外50%的第二句话是随机从预料中提取的,它们的关系是NotNext的。这个关系保存在[CLS]符号中。

NSP样本如下:

  1. 从训练语料库中取出两个连续的段落作为正样本
  2. 从不同的文档中随机创建一对段落作为负样本

缺点:主题预测和连贯性预测合并为一个单项任务

训练过程

微调

微调分为四类:

  1. 句子对的分类任务
  2. 单个句子的分类任务
  3. 问答任务
  4. 序列标注任务

在海量的语料上训练完BERT之后,便可以将其应用到NLP的各个任务中了。 微调(Fine-Tuning)的任务包括:基于句子对的分类任务,基于单个句子的分类任务,问答任务,命名实体识别等。

  • 基于句子对的分类任务:
    • MNLI:给定一个前提 (Premise) ,根据这个前提去推断假设 (Hypothesis) 与前提的关系。该任务的关系分为三种,蕴含关系 (Entailment)、矛盾关系 (Contradiction) 以及中立关系 (Neutral)。所以这个问题本质上是一个分类问题,我们需要做的是去发掘前提和假设这两个句子对之间的交互信息。
    • QQP:基于Quora,判断 Quora 上的两个问题句是否表示的是一样的意思。
    • QNLI:用于判断文本是否包含问题的答案,类似于我们做阅读理解定位问题所在的段落。
    • STS-B:预测两个句子的相似性,包括5个级别。
    • MRPC:也是判断两个句子是否是等价的。
    • RTE:类似于MNLI,但是只是对蕴含关系的二分类判断,而且数据集更小。
    • SWAG:从四个句子中选择为可能为前句下文的那个。
  • 基于单个句子的分类任务
    • SST-2:电影评价的情感分析。
    • CoLA:句子语义判断,是否是可接受的(Acceptable)。
  • 问答任务
    • SQuAD v1.1:给定一个句子(通常是一个问题)和一段描述文本,输出这个问题的答案,类似于做阅读理解的简答题。
  • 命名实体识别
    • CoNLL-2003 NER:判断一个句子中的单词是不是Person,Organization,Location,Miscellaneous或者other(无命名实体)。​

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进