Google BERT入门(3)Transformer的自注意力机制的理解(上)

文章目录


4.自注意力机制的理解

我们学习了如何计算查询矩阵Q、键矩阵K和值矩阵V,并且我们还了解到它们是从输入矩阵X中获得的。现在,让我们看看查询、键和值矩阵在自注意力机制中是如何被使用的。

我们了解到,为了计算一个单词的表示,自注意力机制将该单词与给定句子中的所有单词联系起来。考虑句子"I love learning"。为了计算单词"I"的表示(representation),我们将单词"I"与句子中的所有单词联系起来,如下所示:

图1.8 - 自注意力示例

但我们为什么要这样做呢?理解一个单词如何与句子中的所有单词相关联有助于我们学习更好的表示(representation)。现在,让我们学习自注意力机制如何使用查询、键和值矩阵将一个单词与句子中的所有单词联系起来。自注意力机制包括四个步骤;接下来我们来考察每个步骤。

步骤 1

自注意力机制的第一步是计算查询矩阵Q和键矩阵KT的点积:

图1.9 - 查询和键矩阵

以下展示了查询矩阵Q和键矩阵KT的点积结果:

图1.10 - 计算查询矩阵和键矩阵的点积

但是,计算查询矩阵和键矩阵之间的点积有什么用?究竟是什么意思?让我们通过详细查看Q﹒KT的结果来理解这一点。

让我们看看Q﹒KT矩阵的第一行,如下所示。我们可以观察到,我们正在计算查询向量q1(I)和所有键向量------k1(I)、k2(love)和k3(learning)之间的点积。两个向量的点积的意义是它们的相似性。

因此,计算查询向量(q1)和键向量(k1、k2和k3)之间的点积可以告诉我们查询向量q1(I)与所有键向量------k1(I)、k2(love)和k3(learning)有多么相似。通过查看Q﹒KT矩阵的第一行,我们可以理解单词"I"与单词"love"和"learning"相比,与自己更为相关,因为q1.k1比q1.k2和q1.k3的点积值更高:

图1.11 - 计算查询向量(q 1)和键向量(k 1 、k 2 和 k 3)之间的点积

请注意,本章中使用的值是任意的,只是为了让我们更好地理解。

现在,让我们看看矩阵Q﹒KT的第二行。如下图所示,我们可以观察到我们正在计算查询向量q2(love)和所有键向量------k1(I)、k2(love)和k3(learning)之间的点积。这告诉我们查询向量q2(love)与键向量------k1(I)、k2(love)和k3(learning)有多么相似。

通过查看矩阵的第二行,我们可以理解单词"love"与单词"I"和"learning"相比,与自己更为相关,因为q2.k2比q2.k1和q2.k3的点积值更高:

图1.12 - 计算查询向量(q 2)和键向量(k 1 、k 2 和 k 3)之间的点积

同样,让我们看看矩阵Q﹒KT的第三行。如下图所示,我们可以观察到我们正在计算查询向量q3(learning)和所有键向量------k1(I)、k2(love)和k3(learning)之间的点积。这告诉我们查询向量(learning)与所有键向量------k1(I)、k2(love)和k3(learning)有多么相似。

通过查看矩阵的第三行,我们可以理解单词"learning"在句子中与单词"I"和"love"相比,与自己更为相关,因为q3.k3比q3.k1和q3.k2的点积值更高:

图1.13 - 计算查询向量(q 3)和键向量(k 1 、k 2 和 k 3)之间的点积

因此,我们可以说,计算查询矩阵Q和键矩阵KT的点积本质上给出了相似度分数,这有助于我们理解句子中的每个单词与其他单词有多么相似。

步骤 2

自注意力机制的下一步是将矩阵Q﹒KT除以键向量维度的平方根。但我们为什么要这样做呢?这在获得稳定梯度方面是有用的。

设键向量的维度为dk。然后,我们将 Q.KT除以sqrt(dk)。键向量的维度是64,其平方根为8。因此,我们按照下图所示,将 Q.KT除以8:

图1.14 - 将 Q.KT除以键向量维度的平方根

步骤 3

通过观察前面的相似度分数,我们可以理解它们处于未归一化的形式。因此,我们使用softmax函数对它们进行归一化。应用softmax函数有助于将分数范围限制在0到1之间,并且分数的总和等于1,如下图所示:

图1.15 - 应用softmax函数

我们可以将前面的矩阵称为分数矩阵。借助这些分数,我们可以理解句子中的每个单词如何与句子中的所有单词相关。例如,查看前面分数矩阵的第一行;它告诉我们单词"I"与自身的关联度为90%,与单词"love"的关联度为7%,与单词"learning"的关联度为3%。

相关推荐
烈风逍遥10 小时前
第六篇:RAG 知识库构建与检索全链路
前端·人工智能·后端
花椒技术10 小时前
Agent 沙箱怎么接入生产?花椒的选型、持久化与执行协议实践
人工智能·后端·agent
Liaiyang6610 小时前
空圈容错视角下的无人机全链路审计:从理论框架到耦合式检验
人工智能·pytorch·python·深度学习·系统架构·自动驾驶·无人机
liuchangng10 小时前
Jev 模型研究:从生成式大模型到决策式模型——System One、RLCD 校准与采用边界
java·javascript·人工智能·python·深度学习
GPU实战笔记10 小时前
本地跑不动 llama.cpp,临时租云 GPU 怎么搭?从启动服务到环境复用
java·服务器·网络·人工智能·深度学习·llama
Seoyoneh11 小时前
智能客服意图识别实战:深度学习与规则引擎融合架构与落地实践
人工智能·信息与通信·通信
珠海西格电力11 小时前
零碳园区管理系统“智慧大脑”功能对园区运营成本的影响有哪些?
大数据·人工智能·安全·系统架构·能源
江畔柳前堤11 小时前
字节跳动·大模型应用知识手册
前端·人工智能·深度学习·opencv·目标检测·重构·transformer
程序员z711 小时前
RAG 系统评测实战:从指标设计到落地闭环
人工智能
CCC:CarCrazeCurator11 小时前
从算子到智能系统:理解 MLP、CNN、Transformer、JEPA、VLA 与世界模型
人工智能·深度学习