Skip to content

Latest commit

 

History

History
37 lines (30 loc) · 3.21 KB

Attention.md

File metadata and controls

37 lines (30 loc) · 3.21 KB

Attention对比RNN和CNN,分别有哪点你觉得的优势?

  • 对比RNN的是,RNN是基于马尔可夫决策过程,决策链路太短,且单向
  • 对比CNN的是,CNN基于的是窗口式捕捉,没有受限于窗口大小,局部信息获取,且无序

写出Attention的公式?

解释你怎么理解Attention的公式的?

  • Q:,K:,V:
    • 首先,我们可以理解为Attention把input重新进行了一轮编码,获得一个新的序列
  • 除以的目的是为了平衡qk的值,避免softmax之后过小
    • qk除了点击还可以直接拼接再内接一个参数变量等等
  • Multi-Attention只是重复了h次的Attention,最后把结果进行拼接

Attention模型怎么避免词袋模型的顺序问题的困境的?

增加了position Embedding

  • 可以直接随机初始化
  • 也可以参考Google的sin/cos位置初始化方法
    • 如此选取的原因之一是sin(a+b)=sin(a)cos(b)+cos(a)sin(b)。这很好的保证了位置p+k可以表示成p的线性变换,相对位置可解释

Attention机制,里面的q,k,v分别代表什么?

  • Q:指的是query,相当于decoder的内容
  • K:指的是key,相当于encoder的内容
  • V:指的是value,相当于encoder的内容

q和k对齐了解码端和编码端的信息相似度,相似度的值进行归一化后会生成对齐概率值(注意力值)。V对应的是encoder的内容,刚说了attention是对encoder对重编码,qk完成权重重新计算,v复制重编码

为什么self-attention可以替代seq2seq?

  • seq2seq最大的问题在于将Encoder端的所有信息压缩到一个固定长度的向量中,并将其作为Decoder端首个隐藏状态的输入,来预测Decoder端第一个单词(token)的隐藏状态。在输入序列比较长的时候,这样做显然会损失Encoder端的很多信息,而且这样一股脑的把该固定向量送入Decoder端,Decoder端不能够关注到其想要关注的信息
  • self-attention让源序列和目标序列首先“自关联”起来,这样的话,源序列和目标序列自身的embedding表示所蕴含的信息更加丰富,而且后续的FFN层也增强了模型的表达能力,并且Transformer并行计算的能力是远远超过seq2seq系列的模型

维度与点积大小的关系是怎么样的,为什么使用维度的根号来放缩?

  • 假设向量 q 和 k 的各个分量是互相独立的随机变量,均值是0,方差是1,那么点积 qk 的均值是0,方差是 dk
  • 针对Q和K中的每一维i都有qi和ki相互独立且均值0方差1,不妨记,
    • E(XY) = E(X)E(Y)=0
    • 所以k维度上的qk方差会为dk,均值为0,用维度的根号来放缩,使得标准化