首页 > 其他分享 >BERT 模型(1)

BERT 模型(1)

时间:2023-05-15 20:00:16浏览次数:35  
标签:BERT 训练 模型 TPU token GPU

 

BERT的创新在于Transformer Decoder(包含Masked Multi-Head Attention)作为提取器,并使用与之配套的掩码训练方法。虽然使用了双编码使得BERT不具有文本生成能力,但BERT在对输入文本的编码过程中,利用了每个词的所有上下文信息,与只能使用前序信息提取语义的单向编码器相比,BERT的语义信息提取能力更强。

下面距离说明单向编码与双向编码在语义理解上的差异

    今天天气很差,我们不得不取消户外运动。

将句子中的某个字或者词“挖”走,句子变为

    今天天气很{},我们不得不取消户外运动。

分别从单向编码(如GPT)和双向编码(如BERT )的角度来考虑“{}”中应该填什么词。单向编码只会使用“今天天气很”这5个字的信息来推断“{}”的字或词,以人类的经验与智慧,使用概率最大的词应该是:“好”“不错”“差”“糟糕”,而这些词可以被划分为截然不同的两类。

通过这个例子我们可以直观地感觉到,不考虑模型的复杂度和训练数据量,双向编码与单向编码相比,可以利用更多的上下文信息来辅助当前的语义判断。在语义理解能力上,采用双向编码的方式是最科学的,而BERT的成功很大程度上有此决定。
————————————————
原文链接:https://blog.csdn.net/weixin_42486623/article/details/119485297

 

BERT的结构

 参数
L :Transformer blocks;
H :hidden size;
A:self-attention heads;

 


————————————————
原文链接:https://blog.csdn.net/weixin_42486623/article/details/119485297

 

BERT模型中使用的是WordPiece embeddings,最后一层隐藏层的向量会作为每个token的表示。另外,有3个特殊字符如下:

  • [CLS]:用于分类任务中每个序列的第一个token
  • [SEP]:作为句子对(A,B)的分割符,句子首尾都有,具体可看输入输出表示部分。
  • [MASK]:用于masked ML中word的替换

链接:https://www.jianshu.com/p/91cb3546da89

还需要说明的是,BERT模型中sentence并不是语义层面的句子,可以是连续的文本。sequence指的是token 序列,可以是单个sentence也可以是合在一起的 two sentences。

部分小疑问
  1. 输入不管有几个sentence,总和的maxlength是固定的,与其他训练任务一样
  2. segment可以有多种(可以大于2,只是比较少见),如果只有一种那么Segment embedding只有一个E_A

链接:https://www.jianshu.com/p/91cb3546da89  

通过源码能看到:

  • MLM和NSP任务的输入都是一样的,即输入中都会有masked token
  • 在masked LM任务中只会预测masked token,其他token不做预测。
  • 由于是多任务学习,最终的loss = loss_{MLM} + loss_{NSP}
 

无监督预训练深度双向语言模型

 (1) Token Embeddings 是词向量,第一个单词是CLS标志,可以用于之后的分类任务

(2) Segment Embeddings用来区别两种句子,因为预训练不光做LM 还要做以两个句子为输入的分类任务

(3) Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的

预训练任务


Task1: Masked LM

为了构建一个深层的真双向语言模型,但是标准的语言模型是使用了马尔可夫链进行的单向编码,即使使用 LTR 与 RTL,但也是假的双向编码,性能会受到极大的影响。使用完形填空机制可以避免标准的语言模型的编码瓶颈。

完形填空策略:随机的 mask 掉 15% 的单词,然后使用编码器最后的 hidden state 过一层 softmax 进行完形填空预测。

但是这种策略会有两个缺点,以下是内容和解决方案:
Downside 1: mismatch
这样做构造了一种 mismatch:因为 [MASK] 永运不会出现在 fine-tuning 阶段,所以 pre-training 与 fine-tuning 出现了 mismatch。

缓解方案:对于随机选择的 15% 待 mask 单词,不是直接将它替换为 [MASK],而是再做一次随机:
80%:将该词替换为 [MASK]
10%:将该词替换为一个随机的词语
10%:不替换

原因:Transformer Encoder 不知道哪个单词被要求做预测,哪个单词被随机替换掉了,所以对于每个输入的单词,它都必须保持上下文嵌入;而且,现在这种策略下随机替换掉的单词只有 1.5%,几乎不会影响模型的语言建模能力。

Downside 2: slower
现在使用的 MLM 模型,每个 batch 只有 15% 的单词被预测,所以收敛速度确实慢了。但是效果带来的提升却很大。
Task2: Next Sentence Prediction

NLP 中有很多句子关系性的任务,这部分的能力不能通过 Task1 的 MLM 来俘获到,所以加入了一个二分类任务进行多任务学习。
策略:50% 的句子对,将第二句替换为随机的句子来构建负样本。
其他细节

(1) 训练语料:BooksCorpus 800

标签:BERT,训练,模型,TPU,token,GPU
From: https://www.cnblogs.com/emanlee/p/17238616.html

相关文章