Loading

Self-Attention

前言必读:

参考:https://www.cnblogs.com/dogecheng/p/11614843.html
参考2:https://zhuanlan.zhihu.com/p/48508221

  1. 为什么要对 \(a_i\) 进行线性变换到 \(q_i\)\(k_i\)\(v_i\)
  • 进行线性变换到 \(q_i\)\(k_i\) ,相当于将向量投影到一个其他空间,在那个空间中,dot-product可以很好的代表相似度(similarity)。
  1. \(Attention(Q,K,V)=softmax({QK^T\over \sqrt{dk}})V\) 中,为什么要除以 \(\sqrt{dk}\)?注,\(d_k\) 是k的维度(知乎那篇文章里就是64)
  • 确保dot-product不会膨胀,是一个scale factor。
  1. 为什么可以self-attention如此有吸引力?(可以并行化)
  • 可以通过使用GPU,同时对所有位置(all positions)计算这两个乘法和一个softmax。
  1. decoder 中的 masking?
  • masking, masking 的作用就是防止在训练的时候使用未来的输出的单词。 比如训练时,第一个单词是不能参考第二个单词的生成结果的。 Masking就会把这个信息变成0, 用来保证预测位置 i 的信息只能参考比 i 小的输出。
  1. 为什么提出 Multi-Head Attention?
  • 因为如果是convolutional sequence model可以通过不同的filter,来学习不同的"feature",比如下图1中关于一个sentence中的“who”、“did what”、“to whom”。(Different linear transformations by relative position)
  • 但是对于self-attention,我们使用的combination,相当于对于所有位置应用了一样的线性变换(对于所有位置 \(a_i\) 都是应用了三种相同的线性变换到 \(q_i\)\(k_i\)\(v_i\),一样的 \(W_q\)\(W_k\)\(W_v\)),可以把一个attention layer看作某种feature detector,我们如果想学习多个“feature”,就需要多个heads(下图右,就是3-heads,分别用三组 \(W_q\)\(W_k\)\(W_v\) 进行了3次投影线性变换),每一个head就是a function of positions,以此来模拟convolution卷积。
posted @ 2020-09-14 17:44  戴墨镜的长颈鹿  阅读(299)  评论(0)    收藏  举报