【BERT】——Bidirectional Encoder Representation from Transformers(基础版)

一、介绍

论文地址:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

  • BERT的网络架构使用的是《Attention is all you need》中提出的多层Transformer结构,抛弃了传统的RNN和CNN,通过Attention机制将任意位置的两个单词的距离转换成1,有效的解决了NLP中棘手的长期依赖问题。Transformer的结构在NLP领域中已经得到了广泛应用。
  • 双向编码器:传统语言模型只能单向获取上下文,BERT则采用Transformer的Encoder结构对上下文进行双向建模,即可以同时获取词的左右上下文信息,模拟更好的语义表示。
  • 掩码语言模型(MLM) :BERT在训练过程中采用MLM,即随机将句子中的部分词替换为特殊的[MASK]标记,然后让模型基于上下文预测这个被掩码的词的标签,这种方式比传统的语言模型更有效。
  • 下一句预测(Next Sentence Prediction,NSP) :在训练中,BERT还引入了一项特殊的预训练任务:判断两个句子是否为上下文关系,以捕捉句子之间的coherence关系。
  • 模型通用化 BERT通过上述双向编码和预训练任务,学习到了深层次的语义和上下文表示,可以应用到广泛的下游NLP任务中,包括文本分类、问答、序列标注等,极大提高了迁移能力。

二、模型知识点详解

(一)Embedding

BERT的输入表示包括三个向量:Token Embeddings、Segment Embeddings和Position Embeddings,这三个向量求和作为Transformer编码器的输入。图中,[CLS]用于分类任务,[SEP]用于断句。

  • Token Embeddings: 词元(token)的词嵌入向量。输入的文本经过tokenization之后,将[CLS]插入tokenization结果的开头,[SEP]插入到tokenization结果的结尾。
  • Segment Embeddings: 区分输入序列属于句子A还是句子B的向量。在NSP任务中,用于区分第一句和第二句。segment embedding中只有 0 和 1两个值,第一句所有的token(包括cls和紧随第一句的sep)的segment embedding的值为0,第二句所有的token(包括紧随第二句的sep)的segment embdding的值为1。
  • Position Embeddings: 对应词元在序列中的位置的向量。因Transformer-encoderlayer无法捕获文本的位置信息,而文本的位置信息又非常重要。作者测试用学习的方法来得到 Position Embeddings,最终发现固定位置和相对位置效果差不多,所以最后用的是固定位置的,而正弦可以处理更长的 Sequence,且可以用前面位置的值线性表示后面的位置。

(二)Transformer Encoder 

与Transformer的差别:Transformer模型的输入会被转换成512维的向量,然后分为8个head,每个head的维度是64维,但是BERT的维度是768维度,然后分成12个head,每个head的维度是64维。Transformer中position Embedding是用的三角函数,BERT中也有一个Postion Embedding是随机初始化,然后从数据中学出来的。

BERT模型分为24层和12层两种,其差别就是使用transformer encoder的层数的差异,BERT-base使用的是12层的Transformer Encoder结构,BERT-Large使用的是24层的Transformer Encoder结构。

(三)预训练pre-train

BERT的训练包含pre-train和fine-tune两个阶段。pre-train阶段模型是在无标注的标签数据上进行训练,fine-tune阶段,BERT模型首先是被pre-train模型参数初始化,然后所有的参数会用下游的有标注的数据进行训。BERT是一个多任务模型,它的预训练(Pre-training)任务是由两个自监督任务组成,即MLM(Masked LM)和NSP(Next Sentence Prediction)

2.1 MLM

MLM是指在训练的时候随即从输入预料上mask掉一些单词,然后通过的上下文预测该单词,该任务非常像我们在中学时期经常做的完形填空。正如传统的语言模型算法和RNN匹配那样,MLM的这个性质和Transformer的结构是非常匹配的。

2.2NSP

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

三、微调fine-tune

微调(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(无命名实体)。​

四、BERT优缺点总结

优点

  • BERT 相较于原来的 RNN、LSTM 可以做到并发执行,同时提取词在句子中的关系特征,并且能在多个不同层次提取关系特征,进而更全面反映句子语义。
  • 相较于 word2vec,其又能根据句子上下文获取词义,从而避免歧义出现。

缺点

  • 模型参数太多,而且模型太大,少量数据训练时,容易过拟合。
  • BERT的NSP任务效果不明显,MLM存在和下游任务mismathch的情况。
  • BERT对生成式任务和长序列建模支持不好。

引用和参考

【深度学习】BERT详解

读懂BERT,看这一篇就够了 - 知乎 (zhihu.com)

  • 32
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值