BERT 模型详解

BERT 结构

在这里插入图片描述
上图是 BERT 的结构图,左侧的图表示了预训练的过程,右边的图是对于具体任务的微调过程

BERT 的输入

BERT 的输入可以包含一个句子对 (句子 A 和句子 B),也可以是单个句子。同时 BERT 增加了一些有特殊作用的标志位:

[CLS] 标志放在第一个句子的首位,经过 BERT 得到的的表征向量 C 可以用于后续的分类任务。
[SEP] 标志用于分开两个输入句子,例如输入句子 A 和 B,要在句子 A,B 后面增加 [SEP] 标志。
[MASK] 标志用于遮盖句子中的一些单词,将单词用 [MASK] 遮盖之后,再利用 BERT 输出的 [MASK] 向量预测单词是什么。
例如给定两个句子 “my dog is cute” 和 “he likes palying” 作为输入样本,BERT 会转为 “[CLS] my dog is cute [SEP] he likes play ##ing [SEP]”。BERT 里面用了 WordPiece 方法,会将单词拆成子词单元 (SubWord),所以有的词会拆出词根,例如 “palying” 会变成 “paly” + “##ing”。

BERT 得到要输入的句子后,要将句子的单词转成 Embedding,Embedding 用 E表示。与 Transformer 不同,BERT 的输入 Embedding 由三个部分相加得到:Token Embedding,Segment Embedding,Position Embedding。
在这里插入图片描述
Token Embedding:单词的 Embedding,例如 [CLS] dog 等,通过训练学习得到。

Segment Embedding:用于区分每一个单词属于句子 A 还是句子 B,如果只输入一个句子就只使用 EA,通过训练学习得到。

Position Embedding:编码单词出现的位置,与 Transformer 使用固定的公式计算不同,BERT 的 Position Embedding 也是通过学习得到的,在 BERT 中,假设句子最长为 512。

BERT 预训练

BERT 输入句子中单词的 Embedding 之后,通过预训练方式训练模型,预训练有两个任务。

第一个是 Masked LM,在句子中随机用 [MASK] 替换一部分单词,然后将句子传入 BERT 中编码每一个单词的信息,最终用 [MASK] 的编码信息 T[MASK] 预测该位置的正确单词。

第二个是下一句预测,将句子 A 和 B 输入 BERT,预测 B 是否 A 的下一句,使用 [CLS] 的编码信息 C进行预测。

BERT 预训练的过程可以用下图来表示。
在这里插入图片描述

BERT 用于具体 NLP 任务

预训练得到的 BERT 模型可以在后续用于具体 NLP 任务的时候进行微调 (Fine-tuning 阶段),BERT 模型可以适用于多种不同的 NLP 任务,如下图所示
在这里插入图片描述
一对句子的分类任务:例如自然语言推断 (MNLI),句子语义等价判断 (QQP) 等,如上图 (a) 所示,需要将两个句子传入 BERT,然后使用 [CLS] 的输出值 C进行句子对分类。

单个句子分类任务:例如句子情感分析 (SST-2),判断句子语法是否可以接受 (CoLA) 等,如上图 (b) 所示,只需要输入一个句子,无需使用 [SEP] 标志,然后也是用 [CLS] 的输出值 C进行分类。

问答任务:如 SQuAD v1.1 数据集,样本是语句对 (Question, Paragraph),Question 表示问题,Paragraph 是一段来自 Wikipedia 的文本,Paragraph 包含了问题的答案。而训练的目标是在 Paragraph 找出答案的起始位置 (Start,End)。如上图 © 所示,将 Question 和 Paragraph 传入 BERT,然后 BERT 根据 Paragraph 所有单词的输出预测 Start 和 End 的位置。

单个句子标注任务:例如命名实体识别 (NER),输入单个句子,然后根据 BERT 对于每个单词的输出 T预测这个单词的类别,是属于 Person,Organization,Location,Miscellaneous 还是 Other (非命名实体)。

本文参考:
https://baijiahao.baidu.com/s?id=1651912822853865814&wfr=spider&for=pc

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值