【NLP】 21. Transformer整体流程概述 Encoder 与 Decoder架构对比

1. Transformer 整体流程概述

Transformer 模型的整个处理流程可以概括为从自注意力(Self-Attention)到多头注意力,再加上残差连接、层归一化、堆叠多层的结构。其核心思想是利用注意力机制对输入进行并行计算,从而避免传统 RNN 逐步依赖导致的并行化困难问题。

在 Transformer 模型中,编码器(Encoder)解码器(Decoder) 均由若干相同的层堆叠而成。模型的基本构成单元如下:

  • 自注意力层(Self-Attention Layer):计算输入中各个 token 之间的相关性,为每个 token 提供上下文表示。
  • 多头注意力机制(Multi-Head Attention):并行计算多个注意力头,每个头学习不同的特征(例如,有的关注实体信息,有的关注语法信息)。
  • 前馈神经网络层(Feed-Forward Layer):在每个注意力模块后面添加一个全连接的前馈网络,引入非线性变换。
  • 残差连接和层归一化(Residual Connection & Layer Normalization):通过加法将输入与输出相加,保证梯度能够高效传回,并利用层归一化稳定训练过程。

2. 多头注意力机制

2.1 为什么使用多头注意力

多头注意力机制将单一注意力分成多个“头”,每个头在不同的线性子空间中并行计算注意力,有以下优势:

  • 捕获多种语义信息:例如,某一个注意力头可能专注于实体信息(entity focused),而另一个头可能捕捉句法结构(syntax focused)。
  • 提高模型表达能力:通过并行多个注意力头,模型能够同时从多个角度学习输入数据的特征。

2.2 多头注意力公式

假设输入为查询 Q、键 K和值 V,单个注意力头的计算如下:

Attention ( Q , K , V ) = softmax ( Q K ⊤ d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V Attention(Q,K,V)=softmax(dk QK)V

其中:

  • dk 为键的维度,做缩放是为了缓解点积随维度增加过大带来的数值不稳定性;
  • softmax 后得到的注意力权重用于对 V 进行加权平均。

多头注意力的计算为对多个独立注意力头计算后,将它们拼接,再通过一个输出矩阵 WO 得到最终的输出:

MultiHead ( Q , K , V ) = Concat ( head 1 , … , head h ) W O \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)W^O MultiHead(Q,K,V)=Concat(head1,,headh)WO head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) headi=Attention(QWiQ,KWiK,VWiV)

其中 WiQ, WiK, WiV 为各头的线性变换矩阵。


3. 缩放点积注意力

3.1 为什么使用缩放

在高维空间下,如果直接用点积 计算注意力得分,因向量维度增加,点积值通常会变得很大,导致 softmax 函数会输出极端分布,进而使得梯度变小,不利于训练。因此,引入缩放因子,即除以 d k \sqrt{d_k} dk 来缓解这种情况。

3.2 缩放点积注意力公式

完整公式如下:

e x p ⁡ ( e i j ′ ) α i j = exp ⁡ ( e i j ) ∑ j ′ exp ⁡ ( e i j ′ ) α i j = ∑ j ′ e x p ( e i j ′ ) exp⁡(eij′)\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{j'} \exp(e_{ij'})}αij=∑j′exp(eij′) exp(eij)αij=jexp(eij)exp(eij)αij=jexp(eij)

其中:

  • eij 是未归一化的注意力得分;
  • αij 是归一化后的权重;
  • zi 是输出的向量表示。

4. 残差连接与层归一化

4.1 残差连接(Residual Connection)

残差连接用于缓解深层网络中的梯度消失问题,同时鼓励模型捕捉接近恒等映射的信息。其作用在于让输入信息能够直接流传至后续层,从而“学习”在原始表示上做出小的修改(即“学习小编辑”)。

公式表示为:

y = LayerNorm ( x + F ( x ) ) y = \text{LayerNorm}(x + F(x)) y=LayerNorm(x+F(x))

其中:

  • x 为输入向量,
  • F(x) 为经过注意力或前馈网络后的输出,
  • LayerNorm 表示层归一化操作。

4.2 层归一化(Layer Normalization)

层归一化通过计算输入向量的均值和标准差,对向量进行归一化处理,从而稳定训练。具体步骤如下:

给定向量 x=[x1,x2,…,xd]

  1. 计算均值

μ = 1 d ∑ i = 1 d x i \mu = \frac{1}{d} \sum_{i=1}^{d} x_i μ=d1i=1dxi

  1. 计算标准差(加上一个很小的 ϵ\epsilonϵ 防止除零):

σ = 1 d ∑ i = 1 d ( x i − μ ) 2 + ϵ \sigma = \sqrt{\frac{1}{d} \sum_{i=1}^{d} (x_i - \mu)^2 + \epsilon} σ=d1i=1d(xiμ)2+ϵ

  1. 归一化和线性变换

LayerNorm ( x ) i = γ i x i − μ σ + e + β i \text{LayerNorm}(x)_i = \gamma_i \frac{x_i - \mu}{\sigma+e} + \beta_i LayerNorm(x)i=γiσ+exiμ+βi

其中 γ 和 β 是可学习的参数,分别用于重新缩放和平移归一化后的输出。e是一个小的值,以防止被零除


5. Transformer 中的解码器(Decoder)

5.1 解码器与编码器的相似性

解码器与编码器的基本构建块相似,都包含自注意力、多头注意力、前馈网络、残差连接与层归一化。然而,解码器有两个关键的区别:

  1. 因果(Masked)自注意力
    为防止未来信息泄露,解码器中计算自注意力时对未来的位置做屏蔽。

    e i j = { q i ⊤ k j d k , j ≤ i − ∞ , j > i e_{ij} = \begin{cases} \frac{q_i^\top k_j}{\sqrt{d_k}}, & j \leq i \\ -\infty, & j > i \end{cases} eij={dk qikj,,jij>i

    然后软化为:

    α i j = exp ⁡ ( e i j ) ∑ j ′ = 1 i exp ⁡ ( e i j ′ ) \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{j'=1}^{i} \exp(e_{ij'})} αij=j=1iexp(eij)exp(eij)

  2. 跨注意力(Cross-Attention)
    除了自注意力外,解码器还包含跨注意力层,用于结合编码器的输出信息。在跨注意力中:

    • 查询(Query, Q) 来自解码器当前的隐藏状态;
    • 键(Key, K)值(Value, V) 来自编码器的隐藏状态;

    相应公式与前述缩放点积注意力类似:

CrossAttention ( Q , K , V ) = softmax ( Q K ⊤ d k ) V \text{CrossAttention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V CrossAttention(Q,K,V)=softmax(dk QK)V
在这里插入图片描述

5.2 解码器的结构总结

解码器的一个典型层可以总结为:

  1. Masked Self-Attention:计算当前解码器输入的自注意力并屏蔽未来信息;
  2. 跨注意力(Encoder-Decoder Attention):利用编码器输出为解码器生成当前输出提供上下文信息;
  3. 前馈网络(Feed-Forward Network):对注意力输出进行非线性变换;
  4. 残差连接与层归一化:确保训练中梯度稳定并促进模型学习细微调整。

6. Transformer 总结及残差视角

从整体角度看,Transformer 模型的核心操作可以概括为:

  1. 多次并行注意力计算:通过多头注意力,模型同时关注不同角度的信息。
  2. 添加残差连接:让每一层学习输入上的小修正(“编辑”),从而保留原始信息。
  3. 加入层归一化:使各层输入分布保持稳定,提高训练效率。
  4. 堆叠多层结构:重复上述模块,多层堆叠能捕捉到更加抽象的特征。

从残差视角来观察,Transformer 的核心是词嵌入,随后每一层做的是在原始表示上学习微小的调整,从而“编辑”出更符合任务需求的表示。

核心区别总结表:

模块Encoder LayerDecoder Layer
Attention 1Multi-Head Self-AttentionMasked Multi-Head Self-Attention
Attention 2Cross-Attention(Query 来自 Decoder,Key/Value 来自 Encoder)
FFN有(相同)有(相同)
残差&归一化

📌 为什么 Decoder 需要 Masked Self-Attention?

为了保证**自回归(Autoregressive)**生成,只能看到前面的词,不能偷看将来的词。

举例:

  • 当前生成到位置 3,不能让 Decoder 看到位置 4 的词。
  • 所以在 Attention 的 softmax 权重矩阵中,强行 mask 掉未来位置。

🤯 记忆小技巧:

EncoderDecoder
自我理解自我生成 + 看懂输入
“我看整句,理解上下文”“我边生成边回看 Encoder 给的提示”

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

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

相关文章

路由器端口映射的意思、使用场景、及内网ip让公网访问常见问题和解决方法

一、端口映射是什么意思 端口映射是将内网主机的IP地址端口映射到公网中,内部机器提供相应的互联网服务。当异地用户访问该这个端口时,会自动将请求映射到对应局域网内部的机器上。 二、端口映射常见使用场景 1,远程访问需求。当有…

GEO全域优化白皮书:盈达科技如何打造AI生态中的认知护城河

副标题:让内容被AI优先引用,占领生成式引擎的“主屏入口” 一、GEO:生成式引擎时代的内容占位权之战 随着ChatGPT、Kimi、DeepSeek等生成式AI快速成为信息获取的主流方式,搜索逻辑正在根本性改变:从“网页排名”转向“…

如何用DeepSeek大模型提升MySQL DBA工作效率?实战案例解析

如何用DeepSeek大模型提升MySQL DBA工作效率?实战案例解析 MySQL DBA(数据库管理员)的工作涉及数据库监控、SQL优化、故障排查、备份恢复等复杂任务,传统方式依赖手动操作和经验判断,效率较低。而DeepSeek大模型可以结…

系统设计思维的讨论

我们经常说自己熟悉了spring,能够搭建起一个项目基本框架,并且在此之上进行开发,用户or客户提出需求碰到不会的百度找找就可以实现。干个四五年下一份工作就去面试架构师了,运气好一些可能在中小公司真的找到一份架构师、技术负责…

项目部署-(二)Linux下SpringBoot项目自动部署

一、项目部署架构 二、项目部署环境 192.168.138.100(服务器A): -Nginx :部署前端项目、配置反向代理 -MySQL:主从复制结构中的主库 192.168.138.101(服务器B): -JDK:运行Java项目 -Git:版本控制工具 -Maven:项目构建…

【LeetCode 热题 100】哈希 系列

📁1. 两数之和 本题就是将通过两层遍历优化而成的,为什么需要两层遍历,因为遍历 i 位置时,不知道i-1之前的元素是多少,如果我们知道了,就可以通过两数相加和target比较即可。 因为本题要求返回下标&#xf…

【Kubernetes基础】--查阅笔记1

目录 Kubernetes 是什么为什么要用 KubernetesKubernetes 概念MasterNodePodLabelReplication ControllerDeploymentHorizontal Pod AutoscalerStatefulSetService服务发现机制 JobVolumePersistent VolumeNamespaceConfigmap Kubernetes 是什么 Kubernetes是一个开放的开发平…

卷积神经网络CNN到底在卷些什么?

来源: 卷积神经网络(CNN)到底卷了啥?8分钟带你快速了解!_哔哩哔哩_bilibili卷积神经网络(CNN)到底卷了啥?8分钟带你快速了解!共计2条视频,包括:卷…

Axios 的 POST 请求:QS 处理数据的奥秘与使用场景解析

在现代前端开发中,Axios 已经成为了进行 HTTP 请求的首选库之一,它的简洁易用和强大功能深受开发者喜爱。当使用 Axios 进行 POST 请求时,我们常常会遇到一个问题:是否需要使用 QS 库来处理请求数据?什么时候又可以不用…

java面试题带答案2025最新整理

文章目录 一、java面试题集合框架1. 请简要介绍 Java 集合框架的体系结构2. ArrayList 和 LinkedList 的区别是什么3. HashMap 的工作原理是什么,它在 JDK 7 和 JDK 8 中有哪些不同4. 如何解决 HashMap 的线程安全问题5. TreeSet 是如何保证元素有序的 二、java面试…

4.B-树

一、常见的查找方式 顺序查找 O(N) 二分查找 O(logN)(要求有序和随机访问) 二叉搜索树 O(N) 平衡二叉搜索树(AVL树和红黑树) O(logN) 哈希 O(1) 考虑效率和要求而言,正常选用 平衡二叉搜索树 和 哈希 作为查找方式。 但这两种结构适合用于…

CTF--shell

一、原题 (1)提示: $poc"a#s#s#e#r#t";$poc_1explode("#",$poc);$poc_2$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET[s]) (2)原网页:一片空白什么都…

基于51单片机的正负5V数字电压表( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的正负5V数字电压表( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0101 1. 主要功能: 设计一个基于51单片机数字电压表 1、能够…

hive数仓要点总结

1.OLTP和OLAP区别 OLTP(On-Line Transaction Processing)即联机事务处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用…

【实战手册】8000w数据迁移实践:MySQL到MongoDB的完整解决方案

🔥 本文将带你深入解析大规模数据迁移的实践方案,从架构设计到代码实现,手把手教你解决数据迁移过程中的各种挑战。 📚博主其他匠心之作,强推专栏: 小游戏开发【博主强推 匠心之作 拿来即用无门槛】文章目录 一、场景引入1. 问题背景2. 场景分析为什么需要消息队列?为…

运行小程序需要选择什么配置的服务器

主要是看有多少人浏览,如果是每天有几十个人浏览,通常2核或者4核就可以满足需求,内存的话建议4g或者8g,足够的内存可以使服务器同时处理多个请求,避免因内存不足导致的卡顿或程序崩溃。 硬盘存储方面,50GB…

基于SpringBoo的地方美食分享网站

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Solidity私有函数和私有变量区别,私有变量可以被访问吗

web3面试题 私有函数和私有变量区别,私有变量可以被访问吗 ChatGPT said: 在 Web3 开发,尤其是使用 Solidity 编写智能合约时,关于私有函数和私有变量的区别是常见的面试题。下面是详细解析: ✅ 私有函数(Private Fu…

mongodb 安装配置

1.下载 官网下载地址:MongoDB Community Download | MongoDB 2.使用解压包 解压包安装:https://pan.baidu.com/s/1Er56twK9UfxoExuCPlJjhg 提取码: 26aj 3.配置环境: (1)mongodb安装包位置: &#xf…

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

MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文标题:MLLMs-Augmented Visual-Language Representation Learning ➡️ 论文作者:Yanqing Liu, Kai Wang, Wenqi Shao, Ping Luo, Yu Qiao, Mike Zheng Shou, Kaipeng Zhang, Yang Yo…