1 传统的词向量的缺点
传统Word Embedding的预训练表示是上下文无关的,例如word2vec,glove,fasttext,在训练好词向量之后不能表示多义单词,例如:bank deposit(银行) VS river band(岸边)
2 什么是BERT
BERT: Bidirectional Encoder Representations from Transformers。它是一种预训练语言的表示,上下文相关。
3 Attention机制
为了预测或推断一个元素,例如图像中的像素或者句子中的单词,使用注意力权重来估计其他元素与其相关的强度,并将由注意力权重加权的值的总和作为计算最终目标的特征。
Step 1:计算其他元素与待预测元素的相关性权重。
Step 2:通关softmax将相关性权重归一化。
Step 3:根据相关性权重对其他元素进行。
权重计算方式:
{ Q T K d o t Q T W K g e n e r a l W [ Q ; K ] c o n c a t V T t a n h ( W 1 Q + W 2 K ) p e r c e p t r o n ( a d d i t i v e ) \begin{cases} Q^TK \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad dot\\ Q^TWK \quad \quad \quad \quad \quad \quad \quad \quad general\\ W[Q;K] \quad \quad \quad \quad \quad \quad \quad \ \ \ concat\\ V^Ttanh(W_1Q+W_2K) \quad perceptron(additive) \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧QTKdotQTWKgeneralW[Q;K] concatVTtanh(W1Q+W2K)perceptron(additive)
分类:
- self-attention:Q和K一样
- hard-attention:依据概率也就是权重采样,每次仅选取一个其他元素
- soft-attention:通过加权和的形式选取所有其他元素中的信息
- global-attention:获取所有其他元素的信息
- local-attention:获取一部分其他元素的信息
4 Transformer
4.1 整体结构
4.1.1 Encoder
Encoder是由6个相同的层构成,每个层又含有两个子层。第一个子层由多重自注意力机制构成,第二层是由全连接层构成。其中每个子层都通过残差连接,并且通过层归一化(layer normalization).。每个子层的输出如下:
L a y e r N o r m ( x + S u b l a y e r ( x ) ) LayerNorm(x+Sublayer(x)) LayerNorm(x+Sublayer(x))
注:为了实现残差连接,模型中的所有子层和词向量都是一样的维度,即:512。
4.1.2 Decoder
Decoder也是由6个相同的层构成,每个层除了拥有Encoder中的子层还包括一个多重注意力机制层(不是自注意力)。每个子层同样是残差连接,输出通过层归一化。其中的多重自注意力机制与Encoder中的不同,因为在输出阶段,预测第 i i i个位置的输出时,只能依赖于位置 i i i以及之前的信息,不能获取 i i i位置后的信息。因此在做自注意力机制时需要将 i i i位置后的计算得到的权重置为0。
4.2 Attention
4.2.1 Scaled Dot-Product Attention
与 d o t dot dot形式相似,区别在于要除以一个 d k \sqrt{d_k} dk,公式如下:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk