站点图标 AI技术聚合

Bert简介

Bert简介

1.前言

BERT 就是自监督学习,利用非 Mask 的来预测 Mask 的部分

2.Bert(Bidirectional Encoder Representations from Transformers)

源自Transformers的双向编码表示。主要包含两部分,预训练和Fine-tuning

2.1主要预训练任务

2.1.1.完形填空

2.1.2.预测下一个句子

2.2预训练

2.2.1.输入表示

原文说:我们的输入表示能够在一个 token 序列中明确表示单个句子 和 一对句子。一个“句子”可以是连续文本的任意跨度,而不是一个实际的语言句子。

上图是论文中的一个例子。例如,输入序列包含两个句子”my dog is cute”,”he likes playing”

我们在进行了分词,添加了特殊 Token 之后的序列作为模型的输入。

接着对每个Token进行3个Embedding:词的Embedding,Segment的Embedding和位置的Embedding

2.2.2.MLM(Mask Language Model)

BERT 使用的是 MASK 语言模型。Mask语言模型有点类似与完形填空——给定一个句子,把其中某些词遮挡起来,让模型猜测可能的词。

BERT 对输入序列随机进行 15% Mask,然后预测这些被遮住的 Token。通过调整模型的参数使得模型预测正确的概率尽可能大。

但是这有一个问题:在 Pretraining Mask LM 时会出现特殊的Token [MASK],但是在后面的fine-tuning时却不会出现,这会出现Mismatch的问题。为了减轻这种不匹配,在BERT中,如果某个Token在被选中的15%个Token里,则按照下面的方式随机的执行

2.2.3.NSP

在有些任务中,比如问答,前后两个句子有一定的关联关系,我们希望BERT Pretraining的模型能够学习到这种关系。因此BERT还增加了一个新的任务——预测两个句子是否有关联关系。

这通过为 BERT 添加一个任务来实现:我们预训练了一个二分类的是否是下一个句子的任务。

当选择句子AB作为预训练样本时,B有 50% 的概率是A的真实的下一句,也有 50% 的概率是随机的一句。

比如下面两句是相关的

 [CLS] the man went to [MASK] store [SEP] he bought a gallon [MASK] milk [SEP]

以下两句不相关

[CLS] the man [MASK] to the store [SEP] penguin [MASK] are flight ##less birds [SEP]

2.2.4.总体架构

BERT的架构是多层的双向 Transformer encoder。这将使得我们能够获取双向的语义信息,而不是像传统方法那样,只能从左向右或者从右向左来获取单向的语义信息。
我们定义层数(Transformer blocks)为,hidden size 为,self-attention 的头的个数为。一共提供了两版 BERT

2.3.Fine-tuning

Fine-tuning是简单的,因为Transformer中的 self-attention 机制提供了 BERT 对许多下游任务进行建模的能力,无论他们包含单个文本还是文本对。我们只需要替换掉输入和输出就好了。

对于每个任务,我们只需将特定于任务的输入和输出插入到BERT中,并对所有参数进行端到端微调。

在输出端,token 表示被输入到输出层用于 token 级任务,如序列标记或问题回答,而[CLS]表示被输入到输出层用于分类,如逻辑蕴涵和情感分析

部分参考BERT模型详解 – 李理的博客 (fancyerii.github.io)

原文地址 [1810.04805] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (arxiv.org)

文章出处登录后可见!

已经登录?立即刷新
退出移动版