-
Attention计算过程详解
1、为编码器创建三个向量 Query , Key , Value
过程如下:
1)input的单词Thinking、Machines向量化之后变成向量 x 1 x_1 x1、 x 2 x_2 x2(这里假设为4维)
2) x 1 x_1 x1、 x 2 x_2 x2分别乘以3个权重矩阵 W Q W^Q WQ、 W K W^K WK、 W V W^V WV (这里维度均为4*3)x 1 ∗ W Q = q 1 x_1*W^Q=q_1 x1∗WQ=q1 ( q 1 q_1 q1维度为3)
x 2 ∗ W Q = q 2 x_2*W^Q=q_2 x2∗WQ=q2 ( q 2 q_2 q2维度为3)x 1 ∗ W K = k 1 x_1*W^K=k_1 x1∗WK=k1 ( k 1 k_1 k1维度为3)
x 2 ∗ W K = k 2 x_2*W^K=k_2 x2∗WK=k2 ( k 2 k_2 k2维度为3)x 1 ∗ W V = v 1 x_1*W^V=v_1 x1∗WV=v1 ( v 1 v_1 v1维度为3)
x 2 ∗ W V = v 2 x_2*W^V=v_2 x2∗WV=v2 ( v 2 v_2 v2维度为3)q 1 、 q 2 q_1、q_2 q1、q2即为单词Thinking、Machines的向量 Query,
k 1 、 k 2 k_1、k_2 k1、k2即为单词Thinking、Machines的向量 Key,
v 1 、 v 2 v_1、v_2 v1、v2即为单词Thinking、Machines的向量 Value,详细过程如下图:
2、计算每个词的attention值及输出向量
以计算 “Thinking” 的 attention为例,根据这个单词对输入句子的每个单词进行评分,这个分数决定了对其他单词放置多少关注度。
计算步骤:
1) q 1 q_1 q1乘以每个位置的 k i k_i ki,这里得到 s c o r e 1 , s c o r e 2 score_1, score_2 score1,score2 。
2)将 s c o r e 1 , s c o r e 2 score_1, score_2 score1,score2都除以8 (因为论文中使用的 key 向量的维数是 64,8 是它的平方根,这样可以有更稳定的梯度),再输入到softmax得到概率,即为 “Thinking”对每个词的Attention值。
3)将Attention值乘以每个 v i v_i vi,再加权求和,就得到 “Thinking” 的输出向量 z 1 z_1 z1。
4)重复上述过程即可计算出每个词的 z i z_i zi。详细过程如图:
Transfermer中的Attention计算过程详解
最新推荐文章于 2024-07-30 11:53:20 发布