按结构

12层Transformer encoder

知识点

  1. self-attention的时间复杂度:https://blog.csdn.net/taoqick/article/details/107010068 , O(n^2*d),这里,n是序列的长度,d是embedding的维度。

Self-Attention包括三个步骤:相似度计算,softmax和加权平均,它们分别的时间复杂度是:

  • 相似度计算可以看作大小为(n,d)和(d,n)的两个矩阵相乘: ( n , d ) ∗ ( d , n ) = O(n^2d) (n,d)(d,n)=O(n^2d)(n,d)∗(d,n)=O(n^2d),得到一个(n,n)的矩阵
  • softmax就是直接计算了,时间复杂度为 O(n^2) O(n^2)O(n^2)
  • 加权平均可以看作大小为(n,n)和(n,d)的两个矩阵相乘: ( n , n ) ∗ ( n , d ) = O(n^2d) (n,n)(n,d)=O(n^2d)(n,n)∗(n,d)=O(n^2*d),得到一个(n,d)的矩阵。
  1. Attention和Self-attention之间的区别
  • Attention机制发生在Target的元素Query和Source中的所有元素之间。
  • Self Attention指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。
  1. BERT的激活函数GELU
  1. BERT损失函数
  • MLM:在词表大小的类别总数上分类的负对数似然函数
  • NextSentencePrediction:预测“是”或“不是”一个句子对,两类分类的对数似然函数
  1. BERT结构
    1. embedding层
  • Token Embeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务
  • Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
  • Position Embeddings和之前文章中的Transformer不一样,不是三角函数而是学习出来的
    1. MLM
  • 选择15%的词用于mask,但为了避免训练时遇到太多没见过的词,80%是采用[mask],10%是随机取一个词来代替mask的词,10%保持不变。
    1. NSP
  • 一半的数据中句子B是句子A的下一句,另一半数据随机选择。
  1. 与其他预训练语言模型的区别
  • 特征抽取器选择方面,ELMO使用了LSTM而不是新贵Transformer
  • ELMO采取双向拼接这种融合特征的能力可能比Bert一体化的融合特征方式弱