介绍
1、双向预训练模型,使用MLM(masked language model):
2、预训练模型,降低模型复杂度
BERT是自监督学习(无监督学习),结构是Transformer Encoder.
结构:
-
pre-training:
预训练阶段,使用无标注文本数据
-
fine-tuning:
在下游任务使用监督数据进行微调
GPT Transformer只可以进行左边文本的自注意力计算
BERT可以进行双向注意力计算
输入/输出特征
输入单个句子:每个句子的第一个token是特殊字符[CLS]
输入句子对:
两种方式区分两个句子:
1、将两个句子合并为一个,并使用特殊字符[SEP]间隔
2、为每个token添加一个需要学习的embedding,表明它属于句子A或者句子B
输入是token embedding, segmentation embedding 和position embedding的求和。
add:神经网络特征交叉的一种形式(有利于学习个性化的表达)
这里使用的是相加,其实对输入concat,然后进行转换也是可以的。
图片源于:知乎用户 @铁心核桃
element-wise: 就是矩阵对应位置元素相乘,不改变矩阵大小。这其实是一种先验,默认多个输入通道具有类似的语义特征,可以共享矩阵(NLP中就是,用同一个转移矩阵W;CNN中就是用一个卷积核)。这样通过减少模型参数防止过拟合;也可以节省参数和计算量。
Embedding本质:高维稀疏向量映射为低维稠密向量
预训练:
使用了两个无监督学习任务:
-
MLM:(Masked LM):
随机遮盖部分的token,然后预测被遮盖的token。
因为在微调的过程中,不会有MASK的过程,我们对于选中需要MASK的token进行这样的操作:80%的时间使用[MASK] token替换,10%的时间使用任意的token替换,10%的时间不做替换。损失函数使用交叉熵损失。
-
NSP(Next Sentence Prediction):
像Question Answering(QA) and Natural Language Inference(NLI)任务,它们需要理解两个句子之间的关系。
假设A->B, B是A的下一个句子。 预训练过程中,A的下一个句子中有50%是B,标记为ISNext, 50%是从语料库随机抽取的一个句子,标记为NotNext。
拓展:
-
ROBERTa中提到BERT对于NSP没有用
-
ALBERT中指出BERT对SOP(Sentence order prediction)是有用的
后续:
-
Transformer论文阅读
-
ROBERTa论文阅读
-
ALBERT论文阅读
References:
Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
Lan, Z., Chen, M., Goodman, S., Gimpel, K., Sharma, P., & Soricut, R. (2019). Albert: A lite bert for self-supervised learning of language representations. arXiv preprint arXiv:1909.11942.
Liu, Y., Ott, M., Goyal, N., Du, J., Joshi, M., Chen, D., ... & Stoyanov, V. (2019). Roberta: A robustly optimized bert pretraining approach. arXiv preprint arXiv:1907.11692.
Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., ... & Polosukhin, I. (2017). Attention is all you need. Advances in neural information processing systems, 30.
-
-