transform from A into B造句简单(详解Transformer中Self-Attention以及Multi-Head Attention)
原文名称:Attention Is All You Need
原文链接:https://arxiv.org/abs/1706.03762如果不想看文章的可以看下我在b站上录的视频:https://b23.tv/gucpvt
最近Transformer在CV领域很火 ,Transformer是2017年Google在Computation and Language上发表的 ,当时主要是针对自然语言处理领域提出的(之前的RNN模型记忆长度有限且无法并行化 ,只有计算完
t
i
t_i
ti时刻后的数据才能计算t
i
+
1
t_{i+1}
ti+1时刻的数据 ,但Transformer都可以做到) 。在这篇文章中作者提出了Self-Attention的概念 ,然后在此基础上提出Multi-Head Attention ,所以本文对Self-Attention以及Multi-Head Attention的理论进行详细的讲解 。在阅读本文之前 ,建议大家先去看下李弘毅老师讲的Transformer的内容 。本文的内容是基于李宏毅老师讲的内容加上自己阅读一些源码进行的总结 。前言
如果之前你有在网上找过self-attention或者transformer的相关资料 ,基本上都是贴的原论文中的几张图以及公式 ,如下图 ,讲的都挺抽象的 ,反正就是看不懂(可能我太菜的原因) 。就像李弘毅老师课程里讲到的"不懂的人再怎么看也不会懂的" 。那接下来本文就结合李弘毅老师课上的内容加上原论文的公式来一个个进行详解 。
Self-Attention
下面这个图是我自己画的 ,为了方便大家理解,假设输入的序列长度为2 ,输入就两个节点
x
1
,
x
2
x_1, x_2
x1,x2 ,然后通过Input Embedding也就是图中的f
(
x
)
f(x)
f(x)将输入映射到a
1
,
a
2
a_1, a_2
a1,a2 。紧接着分别将a
1
,
a
2
a_1, a_2
a1,a2分别通过三个变换矩阵W
q
,
W
k
,
W
v
W_q, W_k, W_v
Wq,Wk,Wv(这三个参数是可训练的,是共享的)得到对应的q
i
,
k
i
,
v
i
q^i, k^i, v^i
qi,ki,vi(这里在源码中是直接使用全连接层实现的 ,这里为了方便理解 ,忽略偏执) 。其中
q
q
q代表query ,后续会去和每一个k
k
k进行匹配k
k
k代表key ,后续会被每个q
q
q匹配v
v
v代表从a
a
a中提取得到的信息 后续q
q
q和k
k
k匹配的过程可以理解成计算两者的相关性 ,相关性越大对应v
v
v的权重也就越大假设
a
1
=
(
1
,
1
)
,
a
2
=
(
1
,
)
,
W
q
=
(
1
,
1
,
1
)
a_1=(1, 1), a_2=(1,0), W^q= \binom{1, 1}{0, 1}
a1=(1,1),a2=(1,0),Wq=(0,11,1)那么:
q
1
=
(
1
,
1
)
(
1
,
1
,
1
)
=
(
1
,
2
)
,
q
2
=
(
1
,
)
(
1
,
1
,
1
)
=
(
1
,
1
)
q^1 = (1, 1) \binom{1, 1}{0, 1} =(1, 2) , \ \ \ q^2 = (1, 0) \binom{1, 1}{0, 1} =(1, 1)
q1=(1,1)(0,11,1)=(1,2),q2=(1,0)(0,11,1)=(1,1)前面有说Transformer是可以并行化的 ,所以可以直接写成:
(
q
1
q
2
)
=
(
1
,
1
1
,
)
(
1
,
1
,
1
)
=
(
1
,
2
1
,
1
)
\binom{q^1}{q^2} = \binom{1, 1}{1, 0} \binom{1, 1}{0, 1} = \binom{1, 2}{1, 1}
(q2q1)=(1,01,1)(0,11,1)=(1,11,2) 同理我们可以得到(
k
1
k
2
)
\binom{k^1}{k^2}
(k2k1)和(
v
1
v
2
)
\binom{v^1}{v^2}
(v2v1) ,那么求得的(
q
1
q
2
)
\binom{q^1}{q^2}
(q2q1)就是原论文中的Q
Q
Q ,(
k
1
k
2
)
\binom{k^1}{k^2}
(k2k1)就是K
K
K ,(
v
1
v
2
)
\binom{v^1}{v^2}
(v2v1)就是V
V
V 。接着先拿q
1
q^1
q1和每个k
k
k进行match ,点乘操作 ,接着除以d
\sqrt{d}
d得到对应的α
\alpha
α ,其中d
d
d代表向量k
i
k^i
ki的长度,在本示例中等于2 ,除以d
\sqrt{d}
d的原因在论文中的解释是“进行点乘后的数值很大 ,导致通过softmax后梯度变的很小 ”,所以通过除以d
\sqrt{d}
d来进行缩放 。比如计算α
1
,
i
\alpha_{1, i}
α1,i:
α
1
,
1
=
q
1
⋅
k
1
d
=
1
×
1
+
2
×
2
=
0.71
α
1
,
2
=
q
1
⋅
k
2
d
=
1
×
+
2
×
1
2
=
1.41
\alpha_{1, 1} = \frac{q^1 \cdot k^1}{\sqrt{d}}=\frac{1\times 1+2\times 0}{\sqrt{2}}=0.71 \\ \alpha_{1, 2} = \frac{q^1 \cdot k^2}{\sqrt{d}}=\frac{1\times 0+2\times 1}{\sqrt{2}}=1.41
α1,1=dq1⋅k1=21×1+2×0=0.71α1,2=dq1⋅k2=21×0+2×1=1.41 同理拿q
2
q^2
q2去匹配所有的k
k
k能得到α
2
,
i
\alpha_{2, i}
α2,i,统一写成矩阵乘法形式:
(
α
1
,
1
α
1
,
2
α
2
,
1
α
2
,
2
)
=
(
q
1
q
2
)
(
k
1
k
2
)
T
d
\binom{\alpha_{1, 1} \ \ \alpha_{1, 2}}{\alpha_{2, 1} \ \ \alpha_{2, 2}}=\frac{\binom{q^1}{q^2}\binom{k^1}{k^2}^T}{\sqrt{d}}
(α2,1α2,2α1,1α1,2)=d(q2q1)(k2k1)T 接着对每一行即(
α
1
,
1
,
α
1
,
2
)
(\alpha_{1, 1}, \alpha_{1, 2})
(α1,1,α1,2)和(
α
2
,
1
,
α
2
,
2
)
(\alpha_{2, 1}, \alpha_{2, 2})
(α2,1,α2,2)分别进行softmax处理得到(
α
^
1
,
1
,
α
^
1
,
2
)
(\hat\alpha_{1, 1}, \hat\alpha_{1, 2})
(α1,1,α1,2)和(
α
^
2
,
1
,
α
^
2
,
2
)
(\hat\alpha_{2, 1}, \hat\alpha_{2, 2})
(α2,1,α2,2) ,这里的α
^
\hat{\alpha}
α相当于计算得到针对每个v
v
v的权重 。到这我们就完成了A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
{\rm Attention}(Q, K, V)
Attention(Q,K,V)公式中s
o
f
t
m
a
x
(
Q
K
T
d
k
)
{\rm softmax}(\frac{QK^T}{\sqrt{d_k}})
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!