BERT
BERT是什么
BERT的全称是Bidirectional Encoder Representations from Transformers,是 Google 以无监督的方式利用大量无标注文本训练出来的语言模型,其架构为 Transformer 中的 Encoder(BERT=Encoder of Transformer)
(Google nb!)
BERT的相对于ELMo、GPT的优点
ELMo和GPT最大的问题就是传统的语言模型是单向的——我们根据之前的历史来预测当前词。但是我们不能利用后面的信息。传统的语言模型例如RNN是单向的,即只能利用单方向的信息。即使ELMo训练了双向的两个RNN,但是一个RNN只能看一个方向,因此也是无法 “同时” 利用前后两个方向的信息的。
但是基于Transformer架构的BERT,利用了Self-Attention机制,可以同时关注到前后的词。
BERT的预处理(Pre-training BERT)
Task 1: Masked Language Model
随机遮盖或替换一句话里面的任意字或词,然后让模型通过上下文预测那一个被遮盖或替换的部分,之后做 Loss 的时候也只计算被遮盖部分的 Loss,这其实是一个很容易理解的任务,实际操作如下:
- 随机把一句话中 15% 的 token(字或词)替换成以下内容:
- 这些 token 有 80% 的几率被替换成
[MASK]
,例如 my dog is hairy→my dog is [MASK] - 有 10% 的几率被替换成任意一个其它的 token,例如 my dog is hairy→my dog is apple
- 有 10% 的几率原封不动,例如 my dog is hairy→my dog is hairy
- 这些 token 有 80% 的几率被替换成
- 之后让模型预测和还原被遮盖掉或替换掉的部分,计算损失的时候,只计算在第 1 步里被随机遮盖或替换的部分,其余部分不做损失,其余部分无论输出什么东西,都无所谓
Task2: Next Sentence Prediction
-
[CLS]
表示句子的开头 -
[SEP]
表示句子的结束 -
[MASK]
表示利用Masked Language Model
处理的词 -
[PAD]
表示空白符 -
Token Embedding
就是正常的词向量 -
Segment Embedding
的作用是用embedding的信息让模型分开上下句 -
Position Embedding
表示位置信息
BERT的微调(Fine-tuning BERT)
讲真我不太理解
4种微调方式:
- sentence pairs in paraphrasing
- hypothesis-premise pairs in entailment
- question-passage pairs in question answering
- a degenerate text-∅ pair in text classifification or sequence tagging.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!