休言女子非英物,夜夜龙泉壁上鸣。这篇文章主要讲述多图预警! Multi-HeadAttention | 多头注意力#51CTO博主之星评选#相关的知识,希望能为你提供帮助。
:star:注意:
- 本篇文章需要结合self-attention食用:Self-Attention #yyds干货盘点#
- 本篇文章参考吴恩达老师deep learning系列序列模型第四章内容。
l’Afrique
,我们要看看更关注哪一方面的含义。提取一方面的含义我们可以称之为一个头,如果要计算多方面的含义我们就可以称之为多头(multi-head)。还是以这句话为例子:
Jane visite l’Afrique en septembre.
先回顾一下self-attention中我们说,对于输入
x
,我们学习不同的参数将其转化为q,k,v。例如
l’Afrique
:$$
\\beginaligned
q^< 3> & =W^Q x^< 3> \\
k^< 3> & =W^K x^< 3> \\
v^< 3> & =W^V x^< 3>
\\endaligned
$$
文章图片
之后将当前位置的q和每一个k做运算。这一步可以根据
q
找到当前位置最相关的数据。文章图片
之后我们将所有的
q
和k
的内积与v
做计算并进行softmax。l’Afrique
为例,在这个句子里更关注其地理位置的属性,或者说旅游相关的方面,引发这个关注的词是visite
。在这我们将最相关的标红。文章图片
到这里我们就提取出了
l’Afrique
(非洲)的一个意象(一个head),如果我们要提取多面的意向就要计算多头注意力,这里稍微有一点区别:首先我们依旧像之前一样获得query、key、value向量。
文章图片
之后我们要计算出每个头自己的query、key、value向量。
还是以
l’Afrique
为例子,$x^<
3>
$的query、key、value向量要乘以第一个head对应的可学习参数,得到第一个head所需要的query、key、value向量。$$
\\beginaligned
q^< 3> 1 & =W^Q1 q^< 3> \\
k^< 3> 1 & =W^K1 k^< 3> \\
v^< 3> 1 & =W^V1 v^< 3>
\\endaligned
$$
【多图预警! Multi-HeadAttention | 多头注意力#51CTO博主之星评选#】
文章图片
求出第一个head对应的query、key、value向量之后计算过程就和self-attention一样了,这里画图过程就省略了。
文章图片
head1计算出来之后其他的head计算方法一样。
文章图片
最后总结一下计算过程:
由输入获得query、key、value向量。
$$
\\beginaligned
q^< i> & =W^Q x^< i> \\
k^< i> & =W^K x^< i> \\
v^< i> & =W^V x^< i>
\\endaligned
$$
获得每个head单独的query、key、value向量:
$$
\\beginaligned
q^< i> j & =W^Qj q^< i> \\
k^< i> j & =W^Kj k^< i> \\
v^< i> j & =W^Vj v^< i>
\\endaligned
$$
query、key进行计算,获得距离:
$$
\\beginaligned
& q^< i> j · k^< 1> j \\
& q^< i> j · k^< 2> j \\
& ...\\
& q^< i> j · k^< i-1> j \\
& q^< i> j · k^< i+1> j \\
& ...\\
& q^< i> j · k^< n> j \\
\\endaligned
$$
上一步计算的值与对应的value做计算,之后将其相加获得注意力分数:
$$
\\beginaligned
& (q^< i> j · k^< 1> j)v^< 1> j \\
& (q^< i> j · k^< 2> j)v^< 2> j \\
& ...\\
& (q^< i> j · k^< i-1> j)v^< i-1> j \\
& (q^< i> j · k^< i+1> j)v^< i+1> j \\
& ...\\
& (q^< i> j · k^< n> j)v^< n> j \\
\\endaligned
$$
$$
\\beginaligned
attention\\quad score^< i> j = & (q^< i> j · k^< 1> j)v^< 1> j + ... + (q^< i> j · k^< i-1> j)v^< i-1> j + \\ & v^< i> j+(q^< i> j · k^< i+1> j)v^< i+1> j +... + (q^< i> j · k^< n> j)v^< n> _j
\\endaligned
$$
最后对其进行softmax计算:
$$
A^< i> j = softmax(attention\\quad score^< i> j).
$$
推荐阅读
- 游戏开发新手入门教程13:从想法到设计的过程
- #yyds干货盘点#剑指 Offer 04. 二维数组中的查找
- #yyds干货盘点# 解决华为机试(配置文件恢复)
- 在 Flutter 中使用 NavigationRail 和 BottomNavigationBar
- 全面解读 AWS Private 5G 的革新理念
- 你在51CTO博客留下了哪些足迹(悟空熊时光机,带你开启专属回忆)
- 数据库与缓存数据一致性解决方案
- HarmonyOS - 手把手教你搭建Artifactory
- Flutter实现多主题的六种方法