Transformer动画讲解:注意力计算Q、K、V

devtools/2024/10/18 7:50:39/

暑期实习基本结束了,校招即将开启。

不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。提前准备才是完全之策。

最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。

总结链接如下:

  • 大模型面试宝典》(2024版) 正式发布!

Transformer的起源:Google Brain 翻译团队通过论文《Attention is all you need》提出了一种全新的简单网络架构——Transformer,它完全基于注意力机制,摒弃了循环和卷积操作。

图片

注意力机制是全部所需

正如论文标题所言“注意力机制是全部所需”,强调了注意力机制是Transformer架构的核心要素,就如同人的心脏一样,充当着发动机的作用。

图片

注意力计算Q、K、V

图片

Transformer 注意力计算公式

权重矩阵W:W_Q、W_K和W_V

  • 权重矩阵W是可训练的参数,其维度为(d_model, d_k),其中d_model是输入嵌入的维度,d_k是Q/K/V向量的维度。通过训练,模型会学习到如何从输入数据中提取出对任务有用的特征,并将其映射到Q、K、V向量中

  • 初始时,这些权重矩阵的值通常是随机初始化的。经过训练后,它们会学习到如何从输入数据中提取出对任务有用的特征。

  • 模型会通过反向传播算法和梯度下降来更新这些权重矩阵W的值,以最小化某个损失函数(如交叉熵损失)。

权重矩阵W_Q计算Query(Q):在Transformer模型中,Query(Q)是通过将输入数据的嵌入矩阵E与权重矩阵W_Q相乘得到的。

  • 权重矩阵W_Q的定义:

    • 在Transformer模型中,权重矩阵W是用于将输入数据(如词嵌入)映射到Q、K、V(Query、Key、Value)向量的线性变换矩阵。对于Query(Q),有一个专门的权重矩阵W_Q。

    • W_Q的维度通常是(d_model, d_k),其中d_model是输入嵌入的维度(也是模型的维度),而d_k是Q/K/V向量的维度。假设d_k被设定为128。

  • 计算Query(Q):

    • 给定输入序列的嵌入矩阵E(形状为(batch_size, sequence_length, d_model)),Query矩阵Q是通过将X与权重矩阵W_Q相乘得到的。

    • 具体地,对于Q中的每一个嵌入向量q_i(形状为(d_model)),Q中的一个向量q_i可以通过q_i = e_i * W_Q计算得到。

    • 因此,整个Query矩阵Q(形状为(batch_size, sequence_length, d_k))可以通过E * W_Q计算得到。‍

图片

计算Q(Query)

权重矩阵W_K计算Key(K):在Transformer模型中,Key(K)是通过将输入数据的嵌入矩阵E与权重矩阵W_K相乘得到的。

  • 权重矩阵W_K的定义:

    • 在Transformer模型中,权重矩阵W_K也是一个可训练的权重矩阵,用于将输入数据的嵌入映射到Key向量(K)。

    • W_K的维度通常是(d_model, d_k),其中d_model是输入嵌入的维度(也是Transformer模型的维度),d_k是Key向量的维度。假设d_k被设定为128。

  • 计算Key(K):

    • 给定输入序列的嵌入矩阵E(形状为(batch_size, sequence_length, d_model)),Key矩阵K是通过将E与权重矩阵W_K相乘得到的。

    • 具体地,对于K中的每一个嵌入向量k_i(形状为(d_model)),K中的一个向量k_i可以通过k_i = e_i * W_K计算得到。

    • 因此,整个Key矩阵K(形状为(batch_size, sequence_length, d_k))可以通过X * W_K计算得到。

图片

计算K(Key)

权重矩阵W_V计算Value(V):在Transformer模型中,Value(V)是通过将输入数据的嵌入矩阵E与权重矩阵W_V相乘得到的。

  • 权重矩阵W_V的定义:

    • 在Transformer模型中,权重矩阵W_V也是一个可训练的权重矩阵,用于将输入数据的嵌入映射到Value向量(V)。

    • W_V的维度通常是(d_model, d_v),其中d_model是输入嵌入的维度(也是Transformer模型的维度),d_v是Value向量的维度。假设d_k被设定为128。

  • 计算Value(V):

    • 给定输入序列的嵌入矩阵E(形状为(batch_size, sequence_length, d_model)),Value矩阵V是通过将E与权重矩阵W_V相乘得到的。

    • 具体地,对于E中的每一个嵌入向量e_i(形状为(d_model)),V中的一个向量v_i可以通过v_i = e_i * W_V计算得到。

    • 因此,整个Value矩阵V(形状为(batch_size, sequence_length, d_v))可以通过E * W_V计算得到。

图片

计算V(Value)

Q、K、V计算:Q用于查询,K用于匹配,V提供被加权的信息。通过计算Q和K的点积来衡量注意力分数,进而决定V的加权方式。

图片

Q(query)、K(Key)、V(Value)计算


http://www.ppmy.cn/devtools/48251.html

相关文章

一些简单却精妙的算法

文章目录 1.树状数组2.红黑树3.星星打分4.欧几里得算法5.快速幂6.并查集 在编程的世界里,简洁的代码往往隐藏着深邃的智慧。一起来看看那些看似简单,实则精妙绝伦的代码片段,体会编程语言的优雅与力量。 1.树状数组 int lowbit(int x) { …

「前端+鸿蒙」鸿蒙应用开发-TS接口-特殊用途

在 TypeScript 中,接口除了定义对象的结构之外,还有一些特殊用途,这些用途使得接口成为一种灵活的工具,用于提高代码的可维护性和可扩展性。 TS快速入门-接口-特殊用途 1. 定义函数类型 接口可以用来定义函数的类型,…

Macbook Air M1配置双屏或三屏显示-基于Displaylink软件

设备 Dell D3100扩展坞及其配件 (海鲜市场扩展坞D3100、Dell 65W电源、B-C数据线 140元左右) macbook M1 air 驱动下载 下载displaylink驱动 https://www.synaptics.com/products/displaylink-graphics/downloads/macos App LoginExtension可装可不…

【笔记】深度学习入门

神经网络基础 计算机视觉 1.1 人工智能的本质——线性模型 ykxb k为权重,b为偏置 像素点有323233072个任务点 所以权重有3072个,假设有10组类别,注意权重是一个矩阵 1.2 模型更新方法 权重一开始是随机的 权重和损失值,尝试…

【个人博客搭建】(23)购买服务器、域名、备案

1、服务器主要是为了有一个公网的IP地址,方便我们可以通过网络随时访问 2、域名是对IP地址的一个替代。简单说IP地址可能不方便记忆,但是自己配置的域名会简单些,另外暴露IP地址也不安全。(虽然也能通过域名找到IP) 3、备案。这是政策。简单所…

python之语法糖

一.语法糖 语法糖不是糖,而是编程语言中的某些特殊写法,这些写法让书写起来更加简洁,容易理解,因此被叫做语法糖 二.语法糖分类 数字分隔符 a 10_0000_0000交换变量值 a 1;b 2 a,b b,a连续比较式 a 90 if 80<a<100: print(‘优秀’)字符串乘法 a ‘_’*10列表拼…

pytest中一个场景测试的demo

注意点1&#xff1a; allure.severity 是一个装饰器&#xff0c;用于设置测试用例的严重性级别。 allure.severity_level.CRITICAL 是Allure提供的严重性级别之一&#xff0c;表示这个测试用例极为重要。allure.severity_level.BLOCKER&#xff1a;阻塞级别的问题&#xff0c…

解决Ubuntu系统/usr/lib/xorg/Xorg占用显卡内存问题原创

在Ubuntu系统中&#xff0c;/usr/lib/xorg/Xorg进程占用显卡内存的问题可能会影响系统性能&#xff0c;特别是在使用GPU进行计算任务时。以下是一些解决方法&#xff0c;可以帮助你减少或解决这个问题&#xff1a; 1. 更新显卡驱动 首先&#xff0c;确保你使用的是最新版本的…