Attention Is What you Need
transformer网络结构正是在上面这篇伟大的论文中提出的,在这篇论文之前,很多论文都提出过类似网络结构,但远不如上面这篇论文名字霸气,也正是Attention Is What you Need系统的介绍了这种注意力机制。
self attention层具体过程
先要找出 a 1 \ a^{1} a1 a 2 \ a^{2} a2 a 3 \ a^{3} a3 a 4 \ a^{4} a4四个输入向量间的关系,下面是两种常用的计算一对kv间attention score的方法,注意需要分别计算 a 1 \ a^{1} a1作为k, a 1 \ a^{1} a1 a 2 \ a^{2} a2 a 3 \ a^{3} a3 a 4 \ a^{4} a4作为v时的attention score值,分别记为 a 1 , 1 \ a_{1,1} a1,1 a 1 , 2 \ a_{1,2} a1,2 a 1 , 3 \ a_{1,3} a1,3 a 1 , 4 \ a_{1,4} a1,4。
再经过一层Sofamax(Relu也有)
下面需要计算
v
1
\ v^{1}
v1
v
2
\ v^{2}
v2
v
3
\ v^{3}
v3
v
4
\ v^{4}
v4,与Sofamax后的attention score相乘后相加得
b
1
\ b^{1}
b1,
b
1
\ b^{1}
b1此处的意义可以理解,如果attention score比较大,也就是两个输入的向量相关性强,
b
1
\ b^{1}
b1会很大程度上靠近这两个输入向量作为kv时候的attention score值。
矩阵加速
对于qkv的计算,需要用矩阵运算来加速
同意attention score也可以用矩阵来加速
b
1
\ b^{1}
b1
b
2
\ b^{2}
b2
b
3
\ b^{3}
b3
b
4
\ b^{4}
b4也用矩阵进行加速
汇总 发现只有
w
q
\ w^{q}
wq
w
k
\ w^{k}
wk
w
v
\ w^{v}
wv 需要学习
一种进阶的多头注意力机制,重点在于relevant的定义有很多种,即很多种相关,所以有多种对应的qkv数值。
问题引入,上面的向量间没有位置的信息,如果需要位置的信息,可以将位置的信息加入。也就是positional encoding,可以将位置的信息加入attention score中,下图中就是对应的
e
i
\ e^{i}
ei
解决具体的seqtoseq问题
transformer中的encoder和decoder结构如下
tranformer中encdoer的网络结构如下decoder分两种,一种是autoregressive,encoder的输出作为输入返回给encoder,即把自己的输出当成接下来的输入,一开始有特定的开始向量标记开始。
Masked self attention特殊在b只能用之前产生的来加和,因为是一个一个产生的,只能考虑左边的东西,不能考虑右边的东西。
同时decoder需要自己产生输出的长度,decoder产生特定的标记向量,表示输出结束。
另一种为non auto agressive