Transformer中的自注意力机制计算过程分析

本文详细介绍了自注意力机制的概念,重点阐述了其在Transformer模型中的计算步骤,包括key、query和value向量的生成,注意力权重的计算以及最终输出向量的生成。自注意力机制广泛应用于机器翻译和内容分析等领域。
摘要由CSDN通过智能技术生成

目录

1 什么是自注意力机制

2 自注意力的计算过程


1 什么是自注意力机制

自注意力机制(Self-Attention)顾名思义就是关注单个序列内部元素之间的相关性,不仅可以用于 seq2seq 的机器翻译模型,还能用于情感分析、内容提取等场景。因此分析网络如何表达出“单个序列”与“内部元素”之间的相关性这一问题可以回答开头所述的大部分疑问。

2 自注意力的计算过程

如图1所示,假设网络某一个自注意力层的输入向量序列为 \left \{ a_{1},\cdots ,a_{n} \right \}a_{i}\left ( i=1,2,\cdots ,n \right )维度均为 d_{model},该层的输出向量序列为 \left \{ o_{1},\cdots ,o_{n} \right \}o_{i}\left ( i=1,2,\cdots ,n \right ) 的维度同样都为 d_{model}

首先将 \left \{ a_{1},\cdots ,a_{n} \right \} 分别乘以同一个矩阵\mathbf{\mathit{W}_{\mathit{K}}}\mathbf{\mathit{W}_{\mathit{Q}}}\mathbf{\mathit{W}_{\mathit{V}}} 得到 key 向量  \mathbf{\mathit{k}_{\mathit{n}}}、query 向量 \mathbf{\mathit{q}_{\mathit{n}}} 以及 value 向量 \mathbf{\mathit{v}_{\mathit{n}}},且维度均为 d_{model}

然后以 \mathbf{\mathit{a}}_{1} 输出到 \mathbf{\mathit{o}}_{1} 的过程为例。把 \mathbf{\mathit{q}}_{1} 依次与所有的key做点积后得到初步的注意力值  a_{1,i}\left ( i=1,2,\cdots ,n \right ),图1所示。

图1 自注意力计算过程1 

然后将 a_{1,i} 经过 softmax 函数归一化得到最终的注意力权重 a_{1,n}^{'} ,这个 a_{1,n}^{'} 可以看作我们给输入向量序列中的每个位置的向量打分,而这个分数决定了当我们在一个特定的位置处理一个向量时,在输入的句子的其他部分应该给予多少关注。

图2 注意力权重计算

将权重 a_{1,n}^{'} 与 \mathbf{\mathit{v}}_{i}\left ( i=1,2,\cdots ,n \right ) 加权相乘之后再相加得到 \mathbf{\mathit{a}_{\boldsymbol{\mathit{i}}}} 对应的自注意力输出向量 \mathbf{\mathit{o}_{\boldsymbol{\mathit{1}}}} ,如图3所示。

 图3 自注意力计算3

其他的计算方法与此相同,最终的计算结果如图4所示。其中 \mathbf{\mathit{a}_{\boldsymbol{\mathit{i}}}} 与相应的 \mathbf{\mathit{o}_{\boldsymbol{\mathit{i}}}} 的维度相同,都是 d_{model} 整个注意力机制中只有\mathbf{\mathit{W}_{\mathit{K}}}、 \mathbf{\mathit{W}_{\mathit{Q}}}以及 \mathbf{\mathit{W}_{\mathit{V}}} 三个矩阵是可学习的参数。

 图4 自注意力计算4

进一步地,既然每个输入向量 \mathbf{\mathit{a}_{\boldsymbol{\mathit{i}}}} 都是乘以相同的矩阵,那么可以将所有输入向量 \left \{ a_{1},\cdots ,a_{n} \right \}整合为一个矩阵 \mathbf{\mathit{A}}=\left [ \mathbf{\mathit{a}_{1}},\cdots ,\mathbf{\mathit{a}_{n}} \right ]_{d_{model}\times n},然后把三种输出向量 \mathbf{\mathit{k}_{\mathit{i}}}\mathbf{\mathit{q}_{\mathit{i}}} 以及 \mathbf{\mathit{v}_{\mathit{i}}} 也整合成矩阵的形式分别为 \mathbf{\mathit{K}}\mathbf{\mathit{Q}}\mathbf{\mathit{V}},比如 \mathbf{\mathit{K}} 可以写为下式所示的形式:

此时的输出矩阵就可以写成下式的结果:

这里的矩 softmax\left ( \mathbf{\mathit{QK}^{T}} \right ) 就是注意力矩阵,代表着当处理当前位置向量时,其他位置的向量对当前位置向量的影响程度。

Transformer中的输出矩阵还乘以了一个缩放系数 \frac{1}{\sqrt{d_{k}}}d_{k} 是  \mathbf{\mathit{k}_{\mathit{n}}} 的维度。所以最终的输出是下式所示的形式:

在这里使用矩阵运算的目的是可以提升计算效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球被支点撬走啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值