当前位置: 首页 > news >正文

Transformer 模型详解:从自注意力到编码器-解码器结构

一、背景介绍

在自然语言处理(NLP)领域,传统的 RNN(循环神经网络)和 LSTM(长短期记忆网络)在处理长序列时存在梯度消失和计算效率低的问题。
2017 年,Vaswani 等人提出的 Transformer 架构彻底改变了 NLP 的发展方向。它完全基于注意力机制(Attention),摒弃了循环结构,大幅提升了训练效率与模型表现。

Transformer 不仅成为 NLP 的基础模型,也为后续的 BERT、GPT、ViT(视觉 Transformer)等模型奠定了核心框架。

二、Transformer 总体结构

Transformer 采用 编码器-解码器(Encoder-Decoder)架构

  • 编码器(Encoder):负责将输入序列映射为上下文表示(Contextual Representation)。

  • 解码器(Decoder):在生成任务中,基于编码器输出和历史预测,生成目标序列。

三、核心机制:注意力(Attention)

1. 自注意力机制(Self-Attention)

输入序列 $\mathbf{X} = [x_1, x_2, \dots, x_n]$,通过映射得到 查询(Q)、键(K)、值(V) 矩阵:

Q=XW^Q,K=XW^K,V=XW^V

其中 $W^Q, W^K, W^V$ 是可训练参数。

注意力分数计算公式(Scaled Dot-Product Attention):

\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

其中 $d_k$ 表示键向量的维度,用于缩放,避免内积过大。

2. 多头注意力(Multi-Head Attention)

单头注意力可能无法捕捉序列中不同的语义关系,Transformer 使用 多头注意力机制

\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O

每个注意力头计算方式相同:

\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)

通过多个子空间关注不同的特征关系。

四、位置编码(Positional Encoding)

由于 Transformer 不使用循环网络,因此需要 位置编码 来引入序列位置信息。
采用三角函数的编码方式:

PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)

PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)

其中:

  • $pos$表示单词位置,

  • $i$ 表示维度索引。

五、编码器与解码器结构

1. 编码器(Encoder)

$N$ 个相同层堆叠而成,每一层包含:

  • 多头自注意力层(Multi-Head Self-Attention)

  • 前馈神经网络(Feed Forward Network, FFN)

  • 残差连接(Residual Connection)和层归一化(Layer Normalization)

前馈网络公式

FFN(x) = \max(0, xW_1 + b_1)W_2 + b_2

2. 解码器(Decoder)

解码器结构与编码器类似,但包含额外的 编码器-解码器注意力(Encoder-Decoder Attention)
这一层保证生成目标序列时能够利用输入序列的上下文信息。

六、Transformer 的优势

  1. 并行计算:相比 RNN 的序列计算,Transformer 可并行处理整个序列。

  2. 长依赖捕捉能力强:注意力机制可直接建立任意两个位置的依赖关系。

  3. 扩展性强:易于扩展到超大规模模型,如 BERT、GPT、T5 等。

七、总结

Transformer 通过 注意力机制、多头机制、位置编码 等设计,解决了传统 RNN 的缺陷,成为现代 NLP 的核心框架。
理解 Transformer 的结构与公式,对于深入学习 BERT、GPT 及其他大模型具有重要意义。

http://www.dtcms.com/a/349054.html

相关文章:

  • 拓展:simulink中将仿真环境离散化
  • 关于熵减 - 飘升机
  • Vue3路由
  • C++11新特性全面解析(万字详解)
  • SQL Server从入门到项目实践(超值版)读书笔记 24
  • 详细的周任务清单(Week1-Week24,每周具体目标+任务)
  • Pod 生命周期:从创建到销毁的完整旅程
  • Linux shell编程初步认知与变量学习
  • 【基础算法】初识搜索:递归型枚举与回溯剪枝
  • 基于 Bright Data MCP + LangChain 构建实时网页问答 AI Agent:完整实战教程
  • 玩转深度学习数据填补!CNN-GRU组合模型数据填补(四个案例数据)
  • KVM虚拟化部署全攻略
  • 使用Python实现DLT645-2007智能电表协议
  • 【Docker基础】Docker-compose常用命令实践(三):镜像与配置管理
  • 纯净Win11游戏系统|24H2专业工作站版,预装运行库,无捆绑,开机快,游戏兼容性超强!
  • 27.编程思想
  • 【JVM内存结构系列】四、不同垃圾回收器与堆内存的适配关系:从分代GC到Region GC
  • kylin10-x64 离线安装docker28.3.3
  • 第16届蓝桥杯C++中高级选拔赛(STEMA)2025年3月9日真题
  • 互联网大厂Java面试模拟:核心技术点深度解析
  • 深度剖析Spring AI源码(四):RAG的基石,解密VectorStore的统一抽象
  • 冯·诺依曼体系结构
  • 【机器学习】5 Bayesian statistics
  • AOSP构建指南:从零开始的Android源码之旅
  • 青少年软件编程(python六级)等级考试试卷-客观题(2024年6月)
  • 2.3 金融中介机构的业务
  • 《深入理解Java虚拟机》学习笔记
  • 【高级】系统架构师 | 系统工程
  • Java面试篇
  • 数字防线:现代企业网络安全运维实战指南