Skip to content

Transformer

🕒 Published at:

https://arxiv.org/abs/1706.03762

https://www.youtube.com/watch?v=ugWDIIOHtPA&list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index=61

来自李宏毅老师的讲解

RNN和CNN为啥不行

  • RNN处理序列时,每个时间步的输出(或者隐藏状态)都依赖于上一个时间步的隐藏状态和输出,训练RNN时须通过BPTT(随时间反向传播)算法更新参数,所以RNN难以实现平行化
  • 用CNN来代替RNN,CNN是可以实现平行化的,因为我不需要b1算完,我就可以计算b2,只要我堆叠足够的卷积核,就可以捕捉到整个序列的信息,但是缺点是我需要叠很多层😭

Self-Attention

  • 首先是一个词的原始向量分别乘以对应的权重矩阵得到自己的Q、K、V,然后整个squence的q矩阵去点积K矩阵,经过Softmax归一化后得到一个矩阵就是A,这个A相当于是每个词之间的联系的强弱,接着去和V矩阵做矩阵乘法得到B矩阵,所以说现在b1、b2、b3...可以平行地被算出来
  • 别忘了一开始还会有Positional Encoding加进去

Multi-head Self-attention

下面是来自bilibili一位up主的讲解做的笔记

https://www.bilibili.com/video/BV1xoJwzDESD/?spm_id_from=333.337.search-card.all.click

Seq2seq with Attetion

Transformer