> 文章列表 > 【TimeSerias】Transformer

【TimeSerias】Transformer

【TimeSerias】Transformer

Sequence

1. rnn 和 cnn【TimeSerias】Transformer

【TimeSerias】Transformer

  • RNN 很难并行化
  • CNN很难捕捉较远的信息

2. Self-attention

【TimeSerias】Transformer

  • 拿每个query q去对每个 key k做attention
    【TimeSerias】Transformer
  • 计算输出
    【TimeSerias】Transformer

Self-attition 矩阵计算

qi=Wqaiki=Wkqivi=WvaiQ=WqAK=WkAV=WvA(1.1)\\begin{align*} q^i =& W^q a^i \\\\ k^i =& W^k q^i \\\\ v^i = & W^va^i \\\\ Q =& W^qA \\\\ K =& W^kA \\\\ V =& W^vA \\end{align*} \\tag{1.1} qi=ki=vi=Q=K=V=WqaiWkqiWvaiWqAWkAWvA(1.1)

计算输出:
A^=softmax(K⊤Q)dB=V∗A^(1.2)\\begin{align*} \\hat{A} =& \\frac{\\text{softmax}(K^{\\top}Q)}{\\sqrt{d}} \\\\ B =& V * \\hat{A} \\end{align*} \\tag{1.2} A^=B=dsoftmax(KQ)VA^(1.2)

Muti-head Self-attention

【TimeSerias】Transformer

  • 多头自注意力机制在 q、k、v
  • qi1 之和 ki1 、vi1 操作
  • 最后将多头的结果 拼接
  • [bi,1bi,2][b^{i,1} b^{i,2}][bi,1bi,2]做降维即:
    bi=Wi[bi,1bi,2]⊤b^i = W^i [b^{i,1} b^{i,2}]^{\\top} bi=Wi[bi,1bi,2]
  • 头的数量是超参数,一个可能的解释是,不同的头可能关注的点不一样,关注Long-Time 或者 Short-Time

Positional Encoding

解决问题:

  • 在 self-attention 中没有位置信息
    【TimeSerias】Transformer
    使用 eie^iei来对位置进行编码。使用:ei+aie^i + a^iei+ai 作为输入
  • 为什么不是concat 而是相加?
  • 假设有一个one-hot 的位置编码,做位置拼接。在后续的运算中,可以发现:
  • WIxiW^Ix^iWIxiaia^iai
  • WPpiW^Pp^iWPpieie^iei
  • concat 和直接相加后运算等价
    【TimeSerias】Transformer
    -WpW^pWp 怎样计算?

Transformer

【TimeSerias】Transformer

【TimeSerias】Transformer