模型漫谈 | transformer模型: 每一个成功的大模型的背后都有一位美丽的transformer

文摘   2024-10-31 19:07   浙江  
点击订阅公众号 | 前沿学术成果每日更新               

目录:

  • 引言

  • Transformer 模型的诞生背景

  • 当今的流行的大模型都是Transformer-based模型

    • 没有 Transformer 就没有 ChatGPT

  • Transformer模型架构解析

    • 编码器

    • 解码器

    • 多头注意力机制

    • 位置编码(Positional Encoding)

  • Transformer 的训练和推理

    • 训练过程

    • 推理过程

    • 训练与推理中的关键技术和注意事项

  • 技术创新点

    • 1. 完全基于注意力机制

    • 2. 多头注意力

    • 3. 残差连接和层归一化

    • 4. 位置编码

  • 参考资料

引言

自 2017 年 Transformer 模型问世以来,深度学习领域经历了一场前所未有的革命。Transformer 不仅在自然语言处理(NLP)领域以及多模态大模型取得了突破性的成果,还为计算机视觉、语音处理等领域带来了全新的思路。本文将深入探讨 Transformer 模型的技术细节,解析其内部机制和创新点,帮助您全面理解这一革命性模型。

Transformer 模型的诞生背景

在 Transformer 出现之前,处理序列数据的主要模型是循环神经网络(RNN)及其改进版本,如长短期记忆网络(LSTM)和门控循环单元(GRU)。这些模型通过递归的方式处理序列,但存在以下局限性:

  • 串行计算限制:无法有效并行化,导致训练速度慢。
  • 长距离依赖问题:在处理长序列时,信息传递会逐渐衰减。
  • 梯度消失或爆炸:训练深层网络时容易出现。

为了解决上述问题,Vaswani 等人在论文《Attention Is All You Need》中提出了 Transformer 模型。其核心思想是完全基于注意力机制(Attention Mechanism),摒弃了传统的循环和卷积结构。这一创新允许模型在捕获序列全局信息的同时,实现高效的并行计算。Transformer 模型由Google BrainGoogle Research 的团队提出。主要作者包括:

  • Ashish Vaswani
  • Noam Shazeer
  • Niki Parmar
  • Jakob Uszkoreit
  • Llion Jones
  • Aidan N. Gomez
  • Łukasz Kaiser
  • Illia Polosukhin

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L., Polosukhin, I., 2023. Attention Is All You Need. https://doi.org/10.48550/arXiv.1706.03762

当今的流行的大模型都是Transformer-based模型

随着人工智能技术的飞速发展,大规模预训练模型(Large Pre-trained Models)已成为推动 AI 领域进步的关键力量。其中,ChatGPT 等生成式预训练模型在自然语言处理(NLP)领域表现出色,能够进行对话、创作和复杂任务处理。而ChatGPT系列模型以及其他的大模型,比如BERT、T5,基础架构都是Transformer:

GPT 系列(如 GPT-3、GPT-4):采用了基于 Transformer 解码器(Decoder)的架构,专注于生成任务。

BERT:使用了基于 Transformer 编码器(Encoder)的架构,擅长理解任务。

T5:结合了编码器和解码器,用于统一的文本到文本框架。

下面一图比较详细的总结了主流大模型网络框架进化树:

image-20241031182017176

上图展示了现代大语言模型的进化树,追踪了近年来语言模型的发展历程,并突显了一些最为知名的模型。同一分支上的模型之间关系更为紧密。基于Transformer的模型以非灰色显示:仅解码器模型位于蓝色分支,仅编码器模型位于粉色分支,而编码器-解码器模型位于绿色分支。模型在时间轴上的垂直位置代表其发布日期。开源模型由实心方块表示,而闭源模型则由空心方块表示。右下角的堆叠条形图显示了来自各个公司和机构的模型数量。

本图来自:Yang, J., Jin, H., Tang, R., Han, X., Feng, Q., Jiang, H., Yin, B., Hu, X., 2023. Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond.

没有 Transformer 就没有 ChatGPT

ChatGPT 是基于 GPT-3 和 GPT-4 等大型语言模型的对话模型。这些模型采用了纯粹的 Transformer 解码器架构,通过大规模的预训练语料进行训练。

  • 预训练阶段:模型在海量的互联网文本数据上进行自回归语言建模,学习文本生成的能力。
  • 微调阶段:通过人类反馈强化学习(RLHF)等技术,进一步调整模型,使其能够更好地理解指令和生成符合人类期望的回复。

Transformer 在 ChatGPT 中的作用是:

  • 序列建模:Transformer 的自注意力机制使模型能够理解上下文关系,生成连贯的文本。
  • 参数扩展:通过增加 Transformer 层数和隐藏维度,ChatGPT 的参数量达到数百亿甚至更大,提升了模型的表达能力。
  • 高效训练:Transformer 的并行计算特性使得在大规模数据和模型参数下的训练成为可能。

可以说,没有 Transformer,就不会有像 ChatGPT 这样的大模型,这是因为:

  • 性能优势:Transformer 提供了优于传统模型的性能,是大模型取得成功的基础。
  • 可扩展性:Transformer 架构便于扩展到超大规模参数,这是构建 ChatGPT 等模型的必要条件。
  • 通用性:Transformer 在处理序列数据方面的通用能力,使其适用于各种 NLP 任务,为预训练和微调提供了可能。

为神马Transformer 最适合作为大模型的架构,这是因为:

  • 并行计算优势:Transformer 摒弃了循环结构,允许模型在训练时高效并行处理大规模数据。
  • 强大的表达能力:多头自注意力机制使模型能够捕捉长距离的全局依赖关系。
  • 可扩展性:Transformer 的模块化设计便于扩展模型的深度和宽度,适应更大的参数规模。

Transformer模型架构解析

Transformer 的整体架构由 编码器(Encoder)解码器(Decoder) 两个部分组成。编码器和解码器各自由多个层堆叠而成,每一层包含多个子层。其整体架构图如下:

image-20241031174334593

本图来自:Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L., Polosukhin, I., 2023. Attention Is All You Need. https://doi.org/10.48550/arXiv.1706.03762

编码器

编码器由 个相同的层堆叠组成,每一层包含两个子层:

  1. 多头自注意力机制(Multi-Head Self-Attention) 子层
  2. 位置前馈神经网络(Position-wise Feed-Forward Network) 子层

每个子层后都采用残差连接(Residual Connection)和层归一化(Layer Normalization),即输出为:

解码器

解码器也由 个相同的层堆叠组成,但每层包含三个子层:

  1. 多头自注意力机制 子层
  2. 编码器-解码器注意力(Encoder-Decoder Attention) 子层
  3. 位置前馈神经网络 子层

同样,每个子层后也采用残差连接和层归一化。解码器的自注意力机制中,采用了 掩码(Masking) 技术,防止模型在训练时看到未来的信息。

多头注意力机制

多头注意力机制是 Transformer 的核心创新,允许模型从不同的表示子空间中学习信息。其计算过程如下:

  1. 对输入进行线性变换,得到查询()、键()和值()矩阵。
  2. 计算注意力权重:
  3. 将多个头的输出拼接,并进行线性变换,得到最终输出。

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

位置编码(Positional Encoding)

由于 Transformer 不含循环结构,需要引入位置信息。位置编码通过对每个输入位置添加固定或可学习的向量来实现。常用的方法是利用正弦和余弦函数:

其中, 是位置, 是维度索引。

如果你仔细观察,这里是跟傅里叶级数相关的,哈哈,是不是非常巧妙?


Transformer 的训练和推理

训练过程

Transformer 模型的训练过程涉及多个关键步骤,从数据预处理到参数更新,每个环节都对模型性能有重要影响。

1. 数据预处理

  • 文本清洗:去除噪音,如 HTML 标签、特殊符号等。
  • 分词处理:使用分词器(如 BPE、WordPiece)将文本拆分为子词或词片段,生成词汇表(Vocabulary)。
  • 词汇映射:将分词结果映射为词汇表中的索引,以便输入模型。
  • 添加特殊标记:在序列的开头和结尾添加特殊符号,如 [CLS][SEP]
  • 位置编码:为每个词的位置添加位置信息,以保留序列顺序。

2. 模型参数初始化

  • 权重初始化:采用 Xavier 或 Kaiming 初始化方法随机初始化模型的权重参数。
  • 偏置初始化:通常初始化为零。
  • 优化器选择:常用优化器有 Adam、AdamW,需设置初始学习率、 值等超参数。
  • 学习率调度器:使用学习率调度策略(如 Warm-up、余弦退火)动态调整学习率。

3. 前向传播(Forward Pass)

  • 输入嵌入层:将输入的词索引转换为词嵌入向量,并加上位置编码,形成输入矩阵

  • 编码器处理

    • 多头自注意力机制:计算输入序列中各个词之间的相关性。
    • 前馈神经网络:两个线性变换加激活函数(通常为 ReLU),逐位置(Position-wise)应用。
    • 残差连接和层归一化:缓解梯度消失,加速训练收敛。
  • 解码器处理

    • Masked 多头自注意力机制:防止解码器在预测当前位置时看到未来的信息。
    • 编码器-解码器注意力机制:解码器的查询 ,编码器的键 和值
    • 前馈神经网络:与编码器相同。
  • 输出层:通过线性层映射到词汇表大小的向量,使用 softmax 得到概率分布。

4. 计算损失函数

  • 目标函数:通常采用交叉熵损失(Cross-Entropy Loss),衡量预测概率分布与真实分布的差异。
  • 掩码处理:对于填充的序列位置(Padding),在损失计算中忽略。

5. 反向传播(Backward Pass)

  • 梯度计算:利用自动求导机制,计算损失函数对模型参数的梯度。
  • 梯度剪裁:为防止梯度爆炸,常采用梯度裁剪策略(如基于范数的裁剪)。

6. 参数更新

  • 优化器步骤:根据计算得到的梯度和优化器算法,更新模型参数。
  • 学习率调整:根据学习率调度器更新当前学习率。

7. 训练迭代

  • Epoch:遍历整个训练集一次称为一个 Epoch,通常需要多个 Epoch。
  • 批处理(Batching):将数据分成小批量,进行迷你批量梯度下降。
  • 混合精度训练:使用半精度浮点数(FP16)加速训练,减少显存占用。

8. 模型验证与保存

  • 验证集评估:定期在验证集上评估模型性能,监控过拟合。
  • 早停(Early Stopping):根据验证集性能决定何时停止训练。
  • 模型检查点:保存最佳模型参数,便于后续加载和推理。

推理过程

在推理阶段,Transformer 模型利用训练好的参数,根据输入序列生成输出序列。推理过程与训练过程有相似之处,但也有独特的地方。

1. 输入预处理

  • 与训练一致的预处理:包括分词、词汇映射和添加特殊标记,确保输入格式一致。
  • 位置编码:同样需要添加位置信息。

2. 编码器计算

  • 前向传播:输入序列通过编码器层,得到编码器输出张量 ,表示输入序列的上下文表示。

3. 解码器初始化

  • 起始标记:通常以特殊的起始标记 [SOS](Start of Sequence)作为解码器的初始输入。
  • 初始解码状态:解码器的初始状态仅包含起始标记的嵌入表示。

4. 序列生成过程

Transformer 的序列生成通常是自回归的,即每次预测下一个词,直到生成结束标记 [EOS] 或达到最大长度。以下是详细步骤:

a. 时间步循环

对于每个时间步

  • 输入准备:将解码器已生成的序列 作为输入。
  • Masked 自注意力:解码器在当前时间步只关注已生成的词,防止信息泄露。
  • 编码器-解码器注意力:解码器利用编码器输出 ,捕捉输入序列与已生成序列之间的相关性。
  • 前馈网络和输出层:得到当前时间步的输出向量,映射为词汇表大小的概率分布。
b. 词语选择策略
  • 贪心搜索(Greedy Search):选择当前时间步概率最大的词。
  • 束搜索(Beam Search):维护 个最优序列路径,综合考虑全局概率,避免局部最优。
  • 采样策略
    • 随机采样:按概率分布随机选择,下游任务不敏感时使用。
    • Top-K 采样:仅在概率最高的 个词中采样。
    • 核采样(Nucleus Sampling):在累计概率达到阈值的词集合中采样。
c. 终止条件
  • 结束标记生成:当模型生成结束标记 [EOS] 时,停止生成。
  • 最大长度限制:达到预设的最大生成长度,强制停止。
5. 输出后处理
  • 去除特殊标记:删除 [SOS][EOS] 等特殊符号。
  • 解码映射:将词汇索引转换回对应的词或子词。
  • 拼接与格式化:根据需要拼接子词、处理空格和标点,得到可读的文本。
6. 性能优化
  • 批量推理(Batch Inference):对于独立的输入,批量处理提高效率。
  • 模型压缩:使用剪枝、量化、知识蒸馏等方法,减少模型大小,加快推理速度。
  • 硬件加速:利用 GPU、TPU 或专用的 AI 芯片进行推理加速。

训练与推理中的关键技术和注意事项

1. 正则化技术

  • Dropout:在注意力层和前馈网络中应用 Dropout,防止过拟合。
  • 标签平滑(Label Smoothing):在计算损失时,避免模型过于自信,提高泛化能力。

2. 学习率策略

  • Warm-up:在训练初期,逐步增加学习率,避免模型不稳定。
  • 学习率衰减:采用指数衰减或余弦退火策略,降低学习率,提升模型性能。

3. 多卡并行与分布式训练

  • 数据并行:在多 GPU 上并行计算,每个 GPU 处理不同的批次。
  • 模型并行:将模型的不同部分分布到不同的 GPU 上,适用于超大模型。
  • 混合并行:结合数据并行和模型并行,提升训练效率。

4. 内存优化

  • 梯度检查点(Gradient Checkpointing):在反向传播时节省显存。
  • 动态计算图:根据输入序列长度动态构建计算图,减少不必要的计算。

5. 推理中的特殊策略

  • 长度归一化:在束搜索中,调整评分以避免偏向短序列。
  • 覆盖惩罚:在翻译等任务中,避免遗漏重要信息。
  • 重复惩罚:降低生成重复词或短语的概率,提升文本质量。

技术创新点

1. 完全基于注意力机制

Transformer 完全摒弃了循环和卷积结构,依赖注意力机制捕捉序列中元素之间的全局依赖。这使得模型能够并行处理序列,大幅提高了训练效率。

2. 多头注意力

多头注意力允许模型关注不同的位置子集,从不同的表示子空间中提取信息。这增强了模型的表达能力。

3. 残差连接和层归一化

通过在每个子层后添加残差连接和层归一化,缓解了深层网络训练中的梯度消失问题,加速了收敛。

4. 位置编码

引入位置编码,使模型能够感知序列中元素的相对或绝对位置,弥补了无序结构的缺陷。

好的,下面我们将详细介绍 Transformer 模型的 训练过程推理过程,深入解析其中的技术细节。

参考资料

  1. Vaswani, A., et al. (2017). Attention Is All You Need.
  2. Yang, J., et al. (2023). Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond.Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond.

感谢您阅读本文!如果您对 Transformer 模型有任何疑问或想法,欢迎在下方留言讨论。请关注我们的公众号,获取更多人工智能领域的深度解析和最新动态。

               

               

声明:本公众号分享的前沿学术成果来源于各学术网站,不依法享有其所有权。若原作者发现本次分享中的文字及图片涉及侵权,请立刻联系公众号后台或发送邮件,我们将及时修改或删除!         

邮箱:environmodel@sina.com         

若您认为有用,欢迎

Environmodel设为星标,或

点击“在看”或“分享”给他人


Environmodel
Environmodel(环境模型)专注于环境科学与工程领域的建模及模型研究进展,并分享涵盖机器学习、深度学习以及人工智能等相关领域的理论知识、主流工具和Python编程技巧。
 最新文章