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

哈工大神经网络与深度学习第三次总结

Transformer模型完全解读:从原理到训练,一文吃透

前言

在自然语言处理(NLP)领域,Transformer模型的提出堪称里程碑式的事件。2017年,Google团队发表了论文《Attention Is All You Need》,彻底颠覆了以往基于循环神经网络(RNN)或卷积神经网络(CNN)的序列建模方式。Transformer仅依靠注意力机制(Attention Mechanism)就实现了机器翻译、文本生成等任务,不仅效果更好,而且训练效率大幅提升。


一、Transformer概述

1.1 诞生背景

在Transformer之前,主流的序列转换模型(Sequence Transduction Models)大多基于复杂的RNN或LSTM,配合编码器-解码器结构。尽管LSTM和GRU在一定程度上缓解了长距离依赖问题,但它们仍然存在两个主要缺陷:

  • 顺序计算:每个时间步依赖于前一步的输出,无法并行,训练速度慢。
  • 长距离依赖依然有限:虽然LSTM门控机制改善了梯度消失,但超过一定距离的语义关联仍然难以捕捉。

Transformer的提出彻底解决了这些问题。它摒弃了递归和卷积,完全依靠注意力机制来捕捉全局依赖,同时支持高度并行化。

1.2 Transformer的两大优势

根据PPT中的总结:

  1. 可捕捉间隔较长的语义关联
    自注意力(Self-Attention)直接计算序列中任意两个位置的相关性,距离不再是障碍。
  2. 充分利用分布式GPU进行并行训练
    没有时间步依赖,可以对整个序列同时计算,极大提升了训练效率。

二、Transformer总体架构

Transformer的总体架构可以分为四大模块:

  1. 输入部分:源文本和目标文本的嵌入 + 位置编码
  2. 编码器部分:多个编码器层堆叠,每个层包含自注意力和前馈网络
  3. 解码器部分:多个解码器层堆叠,包含带掩码的自注意力、编码器-解码器注意力和前馈网络
  4. 输出部分:线性变换 + Softmax,生成概率分布

下面我们逐部分深入。


三、输入部分详解

3.1 整体工作流程

输入部分的主要任务:将原始文本转换成模型可以处理的向量序列

对于输入句子中的每一个单词,我们生成一个表示向量X,该向量由两部分相加得到:

  • 词嵌入:将单词映射为稠密向量
  • 位置编码:注入单词的位置信息

3.2 词嵌入(Word Embedding)

词嵌入的步骤:

  1. 分词:将输入文本以单词(或子词)为单位切分,得到一个token序列。
  2. 对齐:由于不同句子长度不同,通过剪切填充(padding)使同一个batch内的句子长度一致。
  3. 独热编码:每个token用一个高维独热向量表示(维度等于词汇表大小)。
  4. 降维映射:通过一个可训练的嵌入矩阵(d×vv为词汇表大小,d为嵌入维度,通常d≪v),将独热向量映射为低维稠密向量。这个映射矩阵通过训练学习得到。

示例
假设词汇表有5个词,嵌入维度为2。那么每个词会映射为一个2维向量。Word2Vec是一种经典的预训练词嵌入方法,它通过一个简单的双层神经网络从大量文本中学习单词之间的语义关系。

3.3 位置编码(Positional Encoding)

为什么要位置编码?

Transformer的自注意力机制本身是置换不变的(即打乱输入顺序,输出也会相应打乱,但单独一个词的表示不会因为位置而改变)。然而自然语言中,单词顺序至关重要。例如:“狗咬人”和“人咬狗”含义完全不同。因此必须显式注入位置信息。

几种尝试

  • 整数编码:直接用位置1,2,3,... 作为编码,但数值太大,与词嵌入值(通常较小)相加会淹没语义信息。
  • 二进制编码:将位置表示为二进制位,但相邻位置的二进制向量可能发生多位跳变(例如3(011)到4(100)),导致表示不连续,不符合位置平滑变化的直觉。

最终方案:正弦位置编码

Google团队提出了一种正弦位置编码(Sinusoidal Positional Encoding),其公式如下:

其中:

  • pos是单词在句子中的位置(0,1,2,...)
  • i是维度索引(0 ≤ i < d/2)
  • d是嵌入维度

特点

  • 每个维度的值都在 [-1, 1] 之间,与词嵌入值域匹配。
  • 不同维度具有不同波长,低维度变化快(捕捉短距离位置关系),高维度变化慢(捕捉长距离位置关系)。
  • 由于正弦和余弦的线性性质,模型可以轻松学习到相对位置关系(因为PE(pos+k)可以表示为PE(pos)的线性函数)。

3.4 输出嵌入

在机器翻译等任务中,解码器也需要将目标语言的token转换为嵌入向量。方式与源语言完全相同,只不过是在目标语言的词汇表上进行嵌入。


四、编码器(Encoder)详解

编码器由N个相同的层堆叠而成(原论文中N=6)。每一层包含两个主要子层:

  1. 多头自注意力子层(Multi-Head Self-Attention)
  2. 前馈全连接子层(Feed-Forward Network)

每个子层后均接一个残差连接(Residual Connection)和层归一化(Layer Normalization),即:LayerNorm(x + Sublayer(x))。

4.1 自注意力机制(Self-Attention)

为什么需要自注意力?

一个单词的语义往往取决于上下文。例如“bank”可以指银行或河岸,具体含义由句子中其他词决定。传统的词嵌入为每个词赋予固定向量,无法反映上下文。自注意力机制能够根据上下文动态调整每个词的表示

基本思想

我们希望通过其他词(尤其是相关词)来“修正”当前词的向量。修正量取决于两个方面:

  • 其他词的“值”(Value)
  • 其他词与当前词的“相关度”

数学上可以理解为:

注意力机制公式(Scaled Dot-Product Attention)

给定一个查询(Query)、一组键(Key)和值(Value),输出是值的加权和,权重由查询与键的相似度决定:

  • Q:当前词的查询向量
  • K:所有词的键向量
  • V:所有词的值向量
  • dk:键向量的维度,缩放因子dk防止点积过大导致softmax梯度极小

在自注意力中Q,K,V都来自同一个输入序列(但通过不同的权重矩阵变换得到)。

具体计算步骤

  1. 生成 Q、K、V
    对于输入矩阵Xn×d),通过三个可训练的权重矩阵WQ,WK,WV计算:

Q=XWQ,K=XWK,V=XWV

  1. 计算注意力分数

得到一个n×n的矩阵,其中第i行第j列表示第i个词对第j个词的注意力分数。

  1. Softmax归一化
    对每一行进行softmax,使权重和为1。
  2. 加权求和

Z就是自注意力层在该位置的输出。

4.2 多头注意力(Multi-Head Attention)

单头注意力可能只关注一种相关性(如语法或语义)。为了捕获更丰富的特征,Transformer引入了多头注意力

做法

  • Q,K,V通过多组不同的权重矩阵(头)分别线性投影到多个低维空间。
  • 每组独立计算注意力,得到多个Zi
  • 将所有Zi拼接起来,再通过一个额外的权重矩阵WO线性变换,得到最终的输出。

公式:

其中

优点

  • 每个头可以关注不同的特征(如短距离、长距离、特定词汇模式等)。
  • 增加模型容量而不增加计算量太多(因为每个头的维度降低)。

4.3 前馈全连接网络(Feed-Forward Network, FFN)

每个编码器层还包含一个全连接的前馈网络,它对每个位置的向量独立地进行非线性变换:

  • 第一层将维度从d扩展到dff(通常为2048),使用ReLU激活。
  • 第二层将维度从dff降回d

这个FFN在不同位置是参数共享的,但不同层之间参数不同。

4.4 残差连接与层归一化

  • 残差连接:将子层的输入与输出相加,有助于梯度流动,缓解深层网络训练困难。
  • 层归一化:对每个样本的所有特征进行归一化(与批归一化不同),使每一层的输入具有稳定的均值和方差,加速收敛。

五、解码器(Decoder)详解

解码器也由N个相同的层堆叠而成。每一层包含三个子层:

  1. 带掩码的多头自注意力子层(Masked Multi-Head Self-Attention)
  2. 编码器-解码器多头注意力子层(Encoder-Decoder Multi-Head Attention)
  3. 前馈全连接子层

同样,每个子层后都有残差连接和层归一化。

5.1 带掩码的自注意力(Masked Self-Attention)

在自回归生成过程中(例如逐词翻译),解码器在预测第t个词时,不能看到第t个词之后的词(未来信息)。为此,在自注意力计算时,需要将未来位置掩盖。

实现方式:在计算 scores 矩阵后,将上三角部分(包括对角线)设置为-∞,这样softmax后这些位置的权重为0。

示例(来自PPT的表格):
未归一化的注意力模式中,未来位置设为负无穷,经过softmax后变为0。

5.2 编码器-解码器注意力

这个子层的目的是让解码器关注输入序列的相关部分。它的Q来自解码器上一层的输出,而KV来自编码器的最终输出。这样每个解码器位置都可以“查询”整个输入序列,找到最相关的信息。

5.3 解码器中的前馈网络

与编码器完全相同。


六、输出部分

解码器输出的向量(维度d)需要通过一个线性层映射到词汇表大小(v),再经过Softmax得到每个词的概率分布。

  • 线性层,维度从d变为v
  • Softmax:将logits转换为概率,概率最大的词即为预测的下一个词。

七、网络训练

7.1 训练数据与预处理

  • 英-德翻译:WMT2014,约450万句对,共享约37000个BPE(字节对编码)token。
  • 英-法翻译:WMT2014,约3600万句对,词汇量32000。
  • 句子对按长度排序后分批,每个batch约25000个源token和25000个目标token。

7.2 训练过程(以翻译为例)

  1. 输入源句子(如中文:“我打算买一辆新车”)和目标句子(英文:“I am going to buy a new car”)。
  2. 解码器以开始符(如<SOS>)作为初始输入。
  3. 模型逐步预测下一个词。
  4. 每一步预测结果与真实目标词计算交叉熵损失。
  5. 损失反向传播,更新所有参数(包括嵌入、注意力权重、FFN等)。
  6. 重复直到收敛。

注意:在训练阶段,解码器采用教师强制(Teacher Forcing),即输入正确的目标词序列(但通过掩码确保不能看到未来词),而不是使用自己的预测作为输入。

7.3 硬件与时间

  • 硬件:8个NVIDIA P100 GPU
  • 基础模型:每个训练步0.4秒,训练10万步(12小时)
  • 大模型:每个训练步1.0秒,训练30万步(3.5天)

7.4 实验结果

模型

英-德 BLEU

英-法 BLEU

Transformer(基础)

27.3

38.1

Transformer(大)

28.4

41.0

相比之前的先进模型(GNMT、ConvS2S等),Transformer在更低的训练成本下取得了更高的BLEU分数。


八、总结与思考

8.1 Transformer的核心创新

  • 纯注意力架构:完全抛弃RNN和CNN,开创了新的范式。
  • 多头自注意力:同时关注不同语义空间,捕捉丰富特征。
  • 位置编码:巧妙注入顺序信息,不破坏并行性。
  • 残差+层归一化:支持深层网络稳定训练。

8.2 对后续研究的影响

  • BERT:仅使用Transformer的编码器,通过掩码语言模型预训练,刷新了NLP排行榜。
  • GPT系列:仅使用Transformer的解码器,通过自回归语言模型预训练,实现了强大的文本生成能力。
  • ViT:将图像切块作为序列输入Transformer,标志着Transformer进军计算机视觉。

8.3 未来展望

尽管Transformer已取得巨大成功,但仍有改进空间:

  • 二次复杂度:自注意力计算与序列长度的平方成正比,对于超长文本(如整本书)仍是挑战,催生了Longformer、BigBird、稀疏注意力等变体。
  • 位置编码的改进:相对位置编码、旋转位置编码(RoPE)等。
  • 更高效的变体:如Linformer、Reformer等。

结语

Transformer模型通过精巧的注意力机制设计,在并行性和长距离依赖捕获上取得了突破,成为当前自然语言处理乃至人工智能领域的基石。希望这篇详尽的总结能帮助你深入理解Transformer的每一个角落。如果你正在学习或应用Transformer,不妨从手动实现一个小型模型开始,体验注意力计算的魅力。

http://www.jsqmd.com/news/928266/

相关文章:

  • 2iterable iterator 可迭代对象与迭代器
  • 如何让 AI 读懂你的奇葩需求?针对 Gemini 3.5 优化的 Prompt 进阶指南
  • 鸿蒙原生开发生态全景:从 ArkTS 到纯血鸿蒙
  • mydumper 编译安装与 RPM 部署:从源码到实战的避坑指南
  • 中国建设银行广东茂名分行:警惕AI诈骗的陷阱
  • 跨国链路的物理限制:马蒂斯公式(Mathis‘s Formula)
  • 人形检测数据集, 目标检测/行人检测/安防AI模型训练 密集场景人形检测数据集 / 行人检测数据集训练及应用
  • Protobuf协议解析与微信数据结构设计
  • 开发日志六
  • 对波普尔可证伪主义引发全域系统性灾难的全面批判
  • 百度SEO优化实战指南:2026年百度SEO优化核心技巧全面解析
  • STM32 SAI 通讯原理与 TDM 应用
  • 第四章:暗礁
  • 【个人记账理财助手】手动新增账单功能
  • 2026年最新三亚市金银首饰回收+金条金币+铂金K金 高价回收;实体老店回收黄金 多年口碑 交易放心;TOP5实力权威排行榜推荐+联系方式 - 亦辰小黄鸭
  • 2026最新指南|Codex 接入 MiniMax 模型全攻略:利用 CC Switch 本地路由零基础配置
  • 从一次线上GC故障排查说起:我为什么最终把生产环境从OracleJDK 11换成了Amazon Corretto 11
  • 医疗营销实战:生成式AI在聊天机器人、内容创作与社交媒体中的应用
  • 第1篇 | 政治思维生存逻辑解析
  • 二分查找模板(binary_search)
  • Web应用技术第一次和第二次作业
  • 无人机红外数据集 深度学习框架 无人机高空红外检测系统pyqt5界面 无人机高空红外数据集 无人机高空红外行人车辆检测数据集
  • 【多Agent 协作深度解析】Claude 官方 5 种协调模式的原理、选择与工程实践
  • 微服务架构(MSA)是如何诞生的?
  • 聊天机器人的搭建(一)
  • AI销售助理:1700万美元融资背后的技术架构与落地实践
  • AI内容运营成为大学生就业热门方向,越来越多年轻人开始学习AI营销
  • 单向循环链表超详细精讲 | 带头节点带头指针 + 完整可运行c语言代码
  • 车载AI Agent Harness:行车安全与交互管控
  • 生成式AI赋能无障碍开发:从设计到测试的实践指南