自然语言处理——Transformer

news2025/6/12 19:56:48

自然语言处理——Transformer

  • 自注意力机制
  • 多头注意力机制
  • Transformer

虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。

我们可以考虑用CNN来替代RNN,但是缺点是显而易见的——只能捕获局部信息
这就引出了自注意力机制。在这里插入图片描述

自注意力机制

首先我们需要先回顾一下注意力机制,在经典的注意力机制中,例如在机器翻译任务中,通常会有两个不同的序列:源语言序列(作为编码器的输出)和目标语言序列(作为解码器的输入)。

  • 查询(Query):通常来自目标序列的当前元素(或者解码器的隐藏状态)。
  • 键(Key):来自源序列的所有元素。
  • 值(Value):同样来自源序列的所有元素。

通过计算查询与所有键的相似度,得到一个注意力权重分布,然后将这些权重应用于对应的值,加权求和得到一个上下文向量。这个上下文向量包含了源序列中与查询相关的信息,帮助模型更好地进行解码。
在这里插入图片描述
而在自注意力机制中,查询(Query)、键(Key)和值(Value)都来自同一个输入序列。
这意味着模型在处理一个序列中的某个元素时,会去关注该序列中所有其他元素,并根据它们之间的相关性来加权整合信息,从而更好地表示当前元素。

自注意力机制的计算步骤如下:

  1. 首先通过输入序列计算Q、K、V三个矩阵,将整个序列的输入向量 X 视为一个矩阵,我们可以并行地计算所有 Q,K,V 矩阵
    Q = X W Q K = X W K V = X W V Q=X W_{Q}\\K=X W_{K}\\V=X W_{V} Q=XWQK=XWKV=XWV
  2. 对于序列中的每个查询向量 q i q_i qi ,我们需要计算它与所有键向量 k j k_j kj的相似度(或“注意力分数”)。最常用的方法是点积(Dot Product): score ⁡ ( q i , k j ) = q i ⋅ k j = q i k j T \operatorname{score}\left(q_{i}, k_{j}\right)=q_{i} \cdot k_{j}=q_{i} k_{j}^{T} score(qi,kj)=qikj=qikjT
    更正式地,我们可以将 Q 矩阵和 K 矩阵相乘,得到所有查询与所有键的相似度矩阵: S c o r e s = Q K T Scores=Q K^{T} Scores=QKT
  3. 为了防止点积结果过大导致 softmax 函数进入梯度饱和区,同时当向量维度变大的时候,softmax 函数会造成梯度消失问题,通常会将注意力分数除以 d k d_k dk​的平方根。这被称为缩放点积注意力(Scaled Dot-Product Attention),这个缩放因子有助于保持梯度的稳定性。 A t t e n t i o n S c o r e s = Q K T d k AttentionScores =\frac{Q K^{T}}{\sqrt{d_{k}}} AttentionScores=dk QKT
  4. 对缩放后的注意力分数矩阵的每一行(对应每个 q i q_i qi对所有 k j k_j kj的关注程度)应用 Softmax 函数,注意是在每一列上进行Softmax。这会将分数转换为一个概率分布,使得所有注意力权重之和为 1。 A t t e n t i o n S c o r e s = Softmax ⁡ ( Q K T d k ) AttentionScores=\operatorname{Softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) AttentionScores=Softmax(dk QKT)
  5. 最后,将注意力权重与值向量 V 进行加权求和,得到每个输入元素的最终输出表示。 O u t p u t = A t t e n t i o n W e i g h t s ⋅ V Output=AttentionWeights \cdot V Output=AttentionWeightsV

一个简化的一元自注意力计算流程可以概括为: Attention ⁡ ( Q , K , V ) = Softmax ⁡ ( Q K T d k ) V \operatorname{Attention}(Q, K, V)=\operatorname{Softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V Attention(Q,K,V)=Softmax(dk QKT)V
这个公式是自注意力机制的精髓。

多头注意力机制

以二头注意力为例,下图中的重点为如何生成多头 Q, K, V ,对于 q i q^i qi,我们将其分成了 q i , 1 q^{i,1} qi,1 q i , 2 q^{i,2} qi,2,分别代表第一个头和第二个头的查询向量。同理对于 k i k^i ki v i v^i vi,我们同样也对进行划分。图中左上角的公式表示在划分时, q i , 1 q^{i,1} qi,1 q i , 2 q^{i,2} qi,2的得到方式中,原始的 q i q^i qi会被不同的权重矩阵相乘。在实际应用上,更常见的实现方式是,每个注意力头有自己独立的 W Q ( h ) , W K ( h ) , W V ( h ) W_{Q}^{(h)}, W_{K}^{(h)}, W_{V}^{(h)} WQ(h),WK(h),WV(h)矩阵,直接将原始输入 a i a^i ai映射到每个头的 q ( h ) , k ( h ) , v ( h ) q^{(h)}, k^{(h)}, v^{(h)} q(h),k(h),v(h)
在这里插入图片描述
多头注意力机制的最后,我们将得到的两个输出 b i , 1 b^{i,1} bi,1 b i , 2 b^{i,2} bi,2进行拼接,再乘以 W O W^O WO矩阵就可以得到最终的输出 b i b^i bi了。
在这里插入图片描述
自注意力机制缺陷——忽略了序列中的位置信息
为每个位置引入一个位置编码 e i e^i ei,可以通过人工构造,也可以通过参数学习。在这里插入图片描述

Transformer

如图是Transformer的具体架构,可以简化为Encoder-Decoder架构
在这里插入图片描述
如图所示,Encoder 的左侧部分是一个多层堆叠的结构,由多个相同的“Block”组成。
输入: x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4代表输入序列中的四个 Token(可以是词嵌入向量加上位置编码)。
输出: h 1 , h 2 , h 3 , h 4 h_1,h_2,h_3,h_4 h1,h2,h3,h4代表经过 Encoder 编码后得到的每个 Token 的上下文表示。这些输出向量包含了输入序列中所有 Token 的信息,是深度语境化的表示。

堆叠的 Block: 每一层 Block 都处理前一层 Block 的输出,逐层提取更高级别的特征和语义信息。图中的虚线和“Block”之间的点表示可能有多层 Block。
在这里插入图片描述
Encoder 的右侧部分详细展示了一个“Block”的内部构成。每个 Block 都包含两个主要的子层:

  1. 自注意力机制层
  2. 前馈神经网络层

在这两个子层之间和之后,都使用了两个重要的技巧:残差连接和层归一化

残差连接有助于缓解深度神经网络中的梯度消失问题,使得信息可以直接通过多层传递,有助于训练更深的模型。形式上,如果一个子层的函数是 Sublayer(x),那么残差连接的输出是 x+Sublayer(x)。

层归一化则对每个样本的每个特征维度进行归一化,使得神经网络的训练过程更加稳定和高效。它有助于避免内部协变量偏移,并允许使用更高的学习率。
在这里插入图片描述

在encoder中,如果对原句有padding,将padding的部分加上-10^5,这样子使其softmax之后=0。

在这里插入图片描述
Decoder 的核心任务是根据 Encoder 编码后的上下文信息,生成目标序列。在图中,输入是英文单词 “Machine Learning”,Encoder 将其编码成一个或一组上下文向量(图中Encoder右上角的虚线框)。Decoder 则利用这些上下文向量以及它自己之前生成的词语,逐步生成中文序列 “机 器 学 习”。

Decoder 是 Autoregressive自回归的。这是 Decoder 的一个非常重要的特性,意味着:

  • 逐步生成: Decoder 是一个逐个生成输出序列元素的模型。
  • 依赖先前的输出: 在生成当前词时,它会利用之前已经生成的词作为输入。

Encoder(左侧蓝色方框)接收输入序列 “Machine Learning”,并将其转换为一系列上下文表示(图中虚线框中的橙色和红色方块,可以是一个上下文向量,也可以是Transformer Encoder中最后一层的所有输出向量)。这些表示包含了输入序列的所有必要信息。

Decoder 的初始输入:Decoder 的第一个输入通常是一个特殊的 START 标记(图中绿色的输入框),这告诉Decoder 开始生成序列。同时,Decoder 会接收来自 Encoder 的上下文信息。之后Decoder 结合 START 标记和 Encoder 的上下文信息,预测输出序列的第一个词。接下来,Decoder 将已经生成的第一个词 “机” 作为它的下一个输入(图中紫色的输入框)。
结合 Encoder 的上下文信息和新的输入 “机”,Decoder 预测出第二个词 “器”。依此类推: 这个过程会重复进行。每生成一个词,就将其作为下一个时间步的输入,直到生成一个特殊的 END 标记,或者达到最大序列长度。
在这里插入图片描述
如上图所示:在标准的自注意力机制中(如 Encoder 中使用的),序列中的每个位置都可以“看到”并关注序列中的所有其他位置(包括它自身以及它之后的未来位置)。

然而,在 Decoder 的生成过程中,我们通常是逐个生成输出序列的词语。这意味着当 Decoder 在生成当前位置的词语时,它不应该能够“看到”或利用未来的词语信息,否则就相当于作弊了(模型已经知道答案了)。

Masked Self-Attention 的目的就是强制 Decoder 在生成当前位置的输出时,只能关注当前位置以及之前已经生成过的位置,而不能关注未来的位置
在这里插入图片描述
另外在Transformer的Decoder中,还引入了Cross-attention机制,与自注意力机制(Q, K, V 都来自同一个序列)不同,交叉注意力机制的 Q、K、V 来自不同的源:

  • 查询(Query, Q):来自于 Decoder 自身的上一层输出(通常是 Masked Self-Attention 层的输出)。
  • 键(Key, K):来自于 Encoder 的输出。
  • 值(Value, V):来自于 Encoder 的输出。

交叉注意力层的主要作用是让 Decoder 在生成目标序列的每个词时,能够有选择性地关注 Encoder 编码后的源序列信息。这类似于传统 Seq2Seq 模型中的注意力机制,允许 Decoder 动态地对源序列的不同部分分配权重,从而更好地捕获源序列的上下文信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…

Android15默认授权浮窗权限

我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…

SpringCloudGateway 自定义局部过滤器

场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…