Before Transformer: RNN, Attention

在 RNN 里,我们用一个隐藏变量 hth_{t} 记录前 tt 个 Input Token 所代表的 Context。如果要生成第 t+1t+1 个 Output Token 的话,就利用输入的第 t+1t+1 个 Input Token 和代表了前文信息的隐藏状态 hth_{t} 做 Attention Alignment 计算出一个向量,再转换成 Word.

这样一个 AutoRegressive 模型有两个显著的问题

  1. 由于是时序生成(必须一个一个 Token 地生成),无法并行
  2. 由于时序生成,如果要保存很久远的信息,隐藏状态 hth_t 的大小就必须非常大,导致了 Computation & Memory Overhead

Model Arch

Transformer 总体是 Encoder-Decoder 架构。Encoder 将 Input


杂谈

其实 Transformer 的本质也是概率统计模型,其生成过程就是给定前 ii 个词的情况下生成第 i+1i+1 个词;训练过程的 Loss Function 是

maxilogPθ(wiwik,,wi1) \max \sum_i \log P_\theta(w_i|w_{i-k},\dots,w_{i-1})

这里的 kk 其实就是 Context Length 的意思。