transformer - 注意力机制

在这里插入图片描述

Transformer 的注意力机制

Transformer 是一种用于自然语言处理任务的模型架构,依赖于注意力机制来实现高效的序列建模。注意力机制允许模型在处理一个位置的表示时,考虑输入序列中所有其他位置的信息,而不仅仅是前面的几个位置。这种机制能够捕捉远距离的依赖关系,是 Transformer 的核心组件。

注意力机制的核心组件

在 Transformer 中,注意力机制的核心组件包括查询(Query,Q)、键(Key,K)和值(Value,V)。这些组件的具体作用和生成过程如下:

  1. 查询(Query,Q): 表示需要查找的信息。
  2. 键(Key,K): 表示可以提供的信息。
  3. 值(Value,V): 表示每个位置的实际信息或特征。

这些组件通过以下步骤实现注意力机制:

1. 输入嵌入和线性变换

原理解释: 输入序列首先通过嵌入层转化为嵌入向量,然后通过线性变换生成查询、键和值向量。假设输入序列为 X X X,线性变换生成 Q、K 和 V 的公式如下:

Q = X W Q , K = X W K , V = X W V Q = XW^Q, \quad K = XW^K, \quad V = XW^V Q=XWQ,K=XWK,V=XWV

生活中的例子: 想象你在图书馆寻找书籍。每本书都有其特定的主题标签(嵌入向量)。你通过查询标签(Q)寻找与你想读的书(K)匹配的标签,然后提取相应书籍的内容(V)。

目的: 通过线性变换生成查询、键和值向量,确保模型能够在统一的特征空间中进行相似度计算。

原因解释: 将输入转化为统一的特征表示后,模型能够更有效地计算相似度,并进行后续的注意力计算。

2. 计算点积注意力

原理解释: 点积注意力(Dot-Product Attention)的计算包括以下几个步骤:

  1. 计算查询和键的点积: 计算查询向量 Q Q Q 和键向量 K K K 的点积,得到相似度矩阵。

    Q K T QK^T QKT

  2. 缩放点积: 将点积结果除以键向量维度的平方根 d k \sqrt{d_k} dk 进行缩放。

    Q K T d k \frac{QK^T}{\sqrt{d_k}} dk QKT

  3. 应用 Softmax 函数: 对缩放后的点积结果应用 softmax 函数,得到注意力权重。

    A = softmax ( Q K T d k ) A = \text{softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) A=softmax(dk QKT)

  4. 加权求和值向量: 使用注意力权重对值向量 V V V 进行加权求和,得到最终的注意力输出。

    Z = A V Z = AV Z=AV

生活中的例子: 你在图书馆用一个关键词(Q)搜索书籍。图书馆系统会根据每本书的主题标签(K)计算与关键词的相似度(点积),然后按照相似度高低(softmax)推荐书籍,并根据这些推荐给你提取书籍的内容(V)。

目的: 计算每个查询与键的相似度,分配注意力权重,并根据这些权重对值进行加权求和,得到最终的注意力输出。

原因解释: 通过计算相似度,模型能够识别输入序列中哪些部分相关,从而根据相关性分配注意力。缩放操作确保数值稳定,softmax 函数将相似度转化为概率分布,加权求和则整合了相关信息。

缩放点积的数学推导

为什么使用 d k \sqrt{d_k} dk 进行缩放?这是因为点积的期望和方差。假设 Q Q Q K K K 的每个元素是零均值单位方差的随机变量:

  • 点积的期望为0。
  • 点积的方差为 d k d_k dk

通过缩放,使得点积的期望和方差标准化,防止数值过大导致梯度消失和数值不稳定。

生活中的例子: 想象你在图书馆搜索书籍时,系统会根据标签(K)的数量调整搜索结果的相似度计算。例如,如果标签很多,系统会将相似度分数进行缩放,避免过大的数值影响推荐。

目的: 缩放点积结果,确保数值稳定,避免梯度消失和数值不稳定问题。

原因解释: 点积的方差随着维度增加而变大,缩放操作将其标准化,确保计算的数值范围合理,从而提高模型训练的稳定性和效果。

3. 多头注意力机制

原理解释: 为了捕捉输入序列中的不同特征,Transformer 使用多头注意力机制(Multi-Head Attention)。具体步骤如下:

  1. 线性变换生成多个头的 Q、K 和 V: 对输入进行多次线性变换,生成多个头的查询、键和值。

  2. 独立计算每个头的注意力: 对每个头独立计算注意力。

  3. 拼接多个头的输出: 将所有头的输出拼接在一起。

  4. 线性变换融合多个头的输出: 对拼接后的输出进行线性变换,得到最终输出。

生活中的例子: 想象你在图书馆用不同的关键词(多个头)搜索书籍。每个关键词会得到一组推荐书籍(每个头的输出),然后你将所有推荐结果综合考虑,得到最终的书籍列表(拼接和线性变换)。

目的: 捕捉输入序列中的多种特征,增强模型的表达能力。

原因解释: 不同的头能够关注输入序列中的不同部分,通过多头注意力机制,模型能够更全面地理解输入序列中的信息。

4. 位置编码

原理解释: 由于 Transformer 不包含递归或卷积结构,因此需要引入位置编码(Positional Encoding)来保留输入序列中元素的位置信息。位置编码是添加到输入嵌入中的固定或可学习的向量。

常用的正弦和余弦位置编码公式如下:

P E ( p o s , 2 i ) = sin ⁡ ( p o s 1000 0 2 i / d model ) PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PE(pos,2i)=sin(100002i/dmodelpos)
P E ( p o s , 2 i + 1 ) = cos ⁡ ( p o s 1000 0 2 i / d model ) PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{\text{model}}}}\right) PE(pos,2i+1)=cos(100002i/dmodelpos)

生活中的例子: 想象你在图书馆借书时,图书馆会记录每本书的位置(位置编码),即使书籍内容相同,位置不同也会影响你找到书的效率。

目的: 保留输入序列中元素的位置信息,使模型能够捕捉顺序信息。

原因解释: 位置信息对于语言理解非常重要,通过位置编码,模型能够更好地理解序列中元素的相对位置和顺序。

5. 残差连接和层归一化

原理解释: 每个注意力层和前馈神经网络层后面都有残差连接(Residual Connection)和层归一化(Layer Normalization),以确保梯度流动更顺畅,并加速模型训练。

生活中的例子: 想象你在图书馆阅读书籍时,有一个记录你阅读进度的系统(残差连接),确保你不会丢失之前的阅读进度。同时,图书馆会定期整理和归类书籍(层归一化),确保书籍的排列整齐有序。

目的: 确保梯度流动更顺畅,加速模型训练,保持输入和输出的数值稳定。

原因解释: 残差连接能够避免梯度消失问题,层归一化则确保输入和输出的数值范围一致,增强模型的训练效果。

6. 前馈神经网络

原理解释: 注意力机制的输出通过前馈神经网络(Feedforward Neural Network, FFN),每个位置独立地通过相同的网络。FFN 包括两个线性变换和一个激活函数:

FFN ( x ) = max ⁡ ( 0 , x W 1 + b 1 ) W 2 + b 2 \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2

生活中的例子: 想象你在图书馆选择了几本书(注意力输出),然后你决定逐本阅读,并将每本书的内容进行总结和理解(前馈神经网络处理)。

目的: 对注意力输出进行进一步的特

征提取和处理。

原因解释: 前馈神经网络能够对每个位置的特征进行深度处理,提取更高层次的表示。

7. Transformer 编码器和解码器

原理解释: Transformer 包括编码器和解码器两个部分:

  • 编码器(Encoder): 由多个相同的层组成,每层包括多头注意力机制和前馈神经网络。
  • 解码器(Decoder): 与编码器类似,但每层包括额外的一个用于处理编码器输出的多头注意力层。

编码器和解码器的交互通过注意力机制,解码器中的多头注意力机制利用编码器的输出来生成新的序列。

生活中的例子: 想象你在图书馆借书(编码器),你阅读这些书并记下笔记(解码器),然后用这些笔记写一篇文章(生成新的序列)。

目的: 实现序列到序列的任务,如机器翻译和文本生成。

原因解释: 编码器提取输入序列的特征,解码器根据这些特征生成新的序列,完成语言理解和生成任务。

结合具体实例

假设我们有一个句子 “I love NLP”,输入嵌入如下:
X = ( 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 ) X = \begin{pmatrix} 0.1 & 0.2 & 0.3 \\ 0.4 & 0.5 & 0.6 \\ 0.7 & 0.8 & 0.9 \end{pmatrix} X= 0.10.40.70.20.50.80.30.60.9

通过线性变换生成 Q、K 和 V:
Q = X W Q , K = X W K , V = X W V Q = XW^Q, \quad K = XW^K, \quad V = XW^V Q=XWQ,K=XWK,V=XWV

假设 W Q W^Q WQ W K W^K WK W V W^V WV 是:
W Q = ( 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 ) , W K = ( 0.1 0.3 0.5 0.2 0.4 0.6 0.3 0.5 0.7 ) , W V = ( 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 ) W^Q = \begin{pmatrix} 0.1 & 0.2 & 0.3 \\ 0.4 & 0.5 & 0.6 \\ 0.7 & 0.8 & 0.9 \end{pmatrix}, \quad W^K = \begin{pmatrix} 0.1 & 0.3 & 0.5 \\ 0.2 & 0.4 & 0.6 \\ 0.3 & 0.5 & 0.7 \end{pmatrix}, \quad W^V = \begin{pmatrix} 0.1 & 0.2 & 0.3 \\ 0.4 & 0.5 & 0.6 \\ 0.7 & 0.8 & 0.9 \end{pmatrix} WQ= 0.10.40.70.20.50.80.30.60.9 ,WK= 0.10.20.30.30.40.50.50.60.7 ,WV= 0.10.40.70.20.50.80.30.60.9

计算结果:
Q = ( 0.14 0.32 0.5 0.32 0.77 1.22 0.5 1.22 1.94 ) , K = ( 0.26 0.44 0.62 0.62 1.07 1.52 0.98 1.7 2.42 ) , V = ( 0.14 0.32 0.5 0.32 0.77 1.22 0.5 1.22 1.94 ) Q = \begin{pmatrix} 0.14 & 0.32 & 0.5 \\ 0.32 & 0.77 & 1.22 \\ 0.5 & 1.22 & 1.94 \end{pmatrix}, \quad K = \begin{pmatrix} 0.26 & 0.44 & 0.62 \\ 0.62 & 1.07 & 1.52 \\ 0.98 & 1.7 & 2.42 \end{pmatrix}, \quad V = \begin{pmatrix} 0.14 & 0.32 & 0.5 \\ 0.32 & 0.77 & 1.22 \\ 0.5 & 1.22 & 1.94 \end{pmatrix} Q= 0.140.320.50.320.771.220.51.221.94 ,K= 0.260.620.980.441.071.70.621.522.42 ,V= 0.140.320.50.320.771.220.51.221.94

通过点积和 softmax 计算得到注意力权重矩阵 A A A
A = ( 0.2 0.3 0.5 0.1 0.7 0.2 0.4 0.4 0.2 ) A = \begin{pmatrix} 0.2 & 0.3 & 0.5 \\ 0.1 & 0.7 & 0.2 \\ 0.4 & 0.4 & 0.2 \end{pmatrix} A= 0.20.10.40.30.70.40.50.20.2

将注意力权重应用于值向量,得到最终输出矩阵 Z Z Z
Z = A V Z = AV Z=AV
Z = ( 0.2 0.3 0.5 0.1 0.7 0.2 0.4 0.4 0.2 ) ( 0.14 0.32 0.5 0.32 0.77 1.22 0.5 1.22 1.94 ) = ( 0.342 0.81 1.278 0.21 0.658 1.106 0.256 0.612 0.968 ) Z = \begin{pmatrix} 0.2 & 0.3 & 0.5 \\ 0.1 & 0.7 & 0.2 \\ 0.4 & 0.4 & 0.2 \end{pmatrix} \begin{pmatrix} 0.14 & 0.32 & 0.5 \\ 0.32 & 0.77 & 1.22 \\ 0.5 & 1.22 & 1.94 \end{pmatrix} = \begin{pmatrix} 0.342 & 0.81 & 1.278 \\ 0.21 & 0.658 & 1.106 \\ 0.256 & 0.612 & 0.968 \end{pmatrix} Z= 0.20.10.40.30.70.40.50.20.2 0.140.320.50.320.771.220.51.221.94 = 0.3420.210.2560.810.6580.6121.2781.1060.968

总结

Transformer 中的注意力机制通过查询(Q)、键(K)和值(V)捕捉输入序列中元素之间的相关性,利用多头注意力机制增强模型的表达能力。通过缩放点积、应用 softmax、加权求和值向量,模型能够有效地调整输入序列中的信息权重。位置编码确保了位置信息的保留,残差连接和层归一化加速了训练,前馈神经网络进一步处理了注意力输出。编码器和解码器的结合使得 Transformer 能够高效地进行序列到序列的任务,如机器翻译和文本生成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/695240.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3.大模型高效微调PEFT

大模型高效微调(PEFT)技术 预训练模型的背景 预训练与微调:传统的微调方法通常涉及对整个预训练模型的参数进行再训练,以适应特定任务。这虽然有效,但计算成本高,且需要大量的标记数据。模型结构:像BERT或GPT这样的模型通常包含数亿甚至数十亿个参数,构成一个深层次的…

JWT 从入门到精通

什么是 JWT JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案 JSON Web Token Introduction - jwt.ioLearn about JSON Web Tokens, what are they, how they work, when and why you should use them.https://jwt.io/introduction 一、常见会…

转型AI产品经理(6):“ 序列位置效应”如何应用在Chatbot产品中

序列位置效应是心理学中的一个记忆现象,指的是人们对一系列信息的记忆效果受到信息在序列中位置的影响。具体来说,人们通常更容易记住列表的开头和结尾部分的项目,而对中间部分的项目记忆较差。这个效应可以进一步分为“首因效应”和“近因效…

递归

特点:有一个初始状态;后续的情况可由前面的状态推出。(斐波拉契,求阶乘) 一 .写出分段函数(有初值,递推关系)可以递归 用if-else连接

Day47 代码随想录打卡|二叉树篇---最大二叉树

题目(leecode T654): 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 …

java版多语言抢单系统 多语言海外AEON抢单可连单加额外单源码 抢单平台搭建开发 抢单开挂的软件

此套是全新开发的java版多语言抢单系统。 后端java,用的若依框架,这套代码前后端是编译后的,测试可以正常使用,语言繁体,英文,日语 源码大小:155M 源码下载:https://download.csd…

初识 java 2

1. idea 的调试 1. 点击鼠标左键设置断点 2.运行到断点处 点击 或点击鼠标右键,再点击 使代码运行到断点处,得到 2. 输出到控制台 System.out.println(value);//输出指定的内容,并换行 value 要打印的内容System.out.print(value);…

《精通ChatGPT:从入门到大师的Prompt指南》附录A:常用Prompt示例

附录A:常用Prompt示例 在《精通ChatGPT:从入门到大师的Prompt指南》的附录A中,我们将展示一系列常用的Prompt示例,帮助读者更好地理解和应用Prompt技术。每个示例将包含Prompt的描述、使用场景、预期结果以及实际输出。希望这些示…

Leetcode3040. 相同分数的最大操作数目 II

Every day a Leetcode 题目来源:3040. 相同分数的最大操作数目 II 解法1:记忆化搜索 第一步可以做什么?做完后,剩下要解决的问题是什么? 删除前两个数,剩下 nums[2] 到 nums[n−1],这是一个…

Nvidia的成功与竞争:CEO黄仁勋的自信与挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【微信小程序】事件分类以及阻止事件冒泡

在微信小程序中,事件分为冒泡事件和非冒泡事件两大类,它们的区别在于事件是否能从原始触发组件开始,向父级组件传播(即“冒泡”)。 冒泡事件:当一个组件上的事件被触发后,不仅当前组件会接收到这…

Pytorch学习11_神经网络-卷积层

1.创建神经网络实例 import torch import torchvision from torch import nn from torch.nn import Conv2d from torch.utils.data import DataLoaderdatasettorchvision.datasets.CIFAR10("../dataset_cov2d",trainFalse,transformtorchvision.transforms.ToTensor(…

软件项目安全保证措施(Word原件)

软件安全保证措施 一、身份鉴别 二、访问控制 三、通信完整性、保密性 四 、数据完整性 六、数据保密性 七、应用安全支撑系统设计获取本原件及更多资料:本文末个人名片。

vue如何使用slot

1. vue2 如何使用slot 1.1. 默认插槽(Default Slot)1.2. 具名插槽(Named Slot)1.3. 作用域插槽(Scoped Slot) 2. vue3 如何使用slot 2.1. 默认插槽(Default Slot)2.2. 具名插槽&…

Nginx高级配置及重写功能

文章目录 一、高级配置网页的状态页Nginx第三方模块变量访问日志Nginx压缩功能https功能自定义小图标 二、重写功能(rewrite)if指令return指令set指令break指令rewrite指令防盗链 一、高级配置 网页的状态页 状态页显示的是整个服务器的状态而非虚拟主…

【Node.js快速部署opencv项目】图像分类与目标检测

⭐️我叫忆_恒心,一名喜欢书写博客的研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支…

Linux系统管理:虚拟机Almalinux 9.4 安装

目录 一、理论 1.Almalinux 二、实验 1.虚拟机Almalinux 9.4 安装准备阶段 2.安装Almalinux 9.4 3.Termius远程连接 一、理论 1.Almalinux (1) 简介 Almalinux是一个开源、社区拥有和管理、免费的企业Linux发行版。专注于长期稳定性,并提供强大的生产级…

按键精灵安装有乱码并且不能启动的解决办法

在国外购了电脑,系统是英文版 Windows 11,按键精灵死活都装不上去,打开exe的安装文件后出现乱码,安装完了后还是乱码,并且启动不了,以下是解决办法: 进入控制面板,并且点 Region&am…

TIM—通用定时器

通用定时器的功能 在基本定时器功能的基础上新增功能: 通用定时器有4个独立通道,且每个通道都可以用于下面功能。 (1)输入捕获:测量输入信号的周期和占空比等。 (2)输出比较:产生输…

vs2019 c++20规范 全局函数 ref 及模板类 reference_wrapper<_Ty> 的源码分析

这是个引用&#xff0c;可以包裹一个对象&#xff0c;相当于引用该对象&#xff0c;而不是在作为函数形参时产生值传递。因为模板 reference_wrapper<_Ty> 其实是封装了该对象的地址。下面以图示形式给出其重要的成员函数。模板其实都差不多&#xff0c;跟人也一样&#…