Transformer 学习笔记 | Decoder

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文记录了笔者学习Transformer的过程,重点介绍了填充(padding)和掩码(masking)机制。掩码确保解码器只依赖于之前的位置,避免信息泄露,保持因果关系及训练与推理的一致性。通过线性层和softmax函数生成输出概率,并使用梯度下降和反向传播进行训练。评估指标包括BLEU、ROUGE、METEOR和困惑度等。欢迎指正。

前言

本文是笔者在学习Transformer过程中记录的笔记,可能有一些错误。望指正。


Pasted image 20250218162344.png

填充(padding)和掩码(masking)机制

在解码器(decoder)中使用掩码(mask)的目的是确保当前位置的输出仅仅依赖于其之前的位置,而不是未来的位置。

掩码(mask)的作用

1. 因果关系(Causality)
在序列生成中,每个输出仅仅应当依赖于之前的输出。例如,生成句子的第四个单词时,我们只能考虑前三个单词,而不能考虑第五个单词。加入掩码确保模型在训练时保持这种因果关系。

2. 训练与推理的一致性
在推理(即实际使用)时,我们通常采用自回归方式生成序列:一次生成一个标记,然后将其作为新输入传递回模型。使用掩码确保模型在训练和推理时的行为是一致的。

3. 避免信息泄露
如果不使用掩码,模型可能会在训练期间“窥视”未来的标记,并过度依赖这些信息。这会导致在推理时性能下降,因为在实际应用中这些未来的标记是不可用的。

在实际操作中,掩码通常是一个上三角形状的矩阵,其中上三角(包括对角线)的部分设为0,其余部分设为负无穷(或非常大的负数)。在应用 softmax 函数计算注意力权重之前,这个掩码会被加到注意力分数上,这样上三角部分的分数在 softmax 后基本上就会变成0,从而实现了掩蔽效果。

举例

  • “我喜欢猫猫”
  • “我喜欢打羽毛球”

步骤 1:Tokenization 我们将每个句子分词,得到以下token序列:

1. “我” “喜” “欢” “猫” “猫”
2. “我” “喜” “欢” “打” “羽” “毛” “球”
AI 代码解读

步骤 2:Padding 由于训练集中最长的句子长度为10个tokens,我们需要对这两个句子进行填充,使它们的长度都达到10个tokens。通常使用一个特殊的填充token(例如"")来实现这一点:

1. “我” “喜” “欢” “猫” “猫” “” “” “” “” “”
2. “我” “喜” “欢” “打” “羽” “毛” “球” “” “” “”
AI 代码解读

步骤 3:Masking 现在,模型需要知道哪些是真正的token,哪些是填充的token。这是通过创建一个掩码矩阵来实现的,掩码矩阵与输入序列的长度相同。在这个掩码矩阵中,真实token的位置用0表示,填充token的位置用1表示:

1. 掩码:[0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
2. 掩码:[0, 0, 0, 0, 0, 0, 0, 1, 1, 1]
AI 代码解读

步骤 4:应用掩码 在模型的注意力机制中,特别是在计算softmax之前,我们会将这些掩码应用到模型中。具体来说,我们会在掩码为1的位置上加上一个非常大的负数(例如负无穷),这样在经过softmax操作后,这些位置的值将接近0,从而不会对全局概率预测产生影响。

通过这种方式,模型在计算注意力权重时,会忽略填充token,确保只关注实际的内容token。这样,模型就能够正确地学习序列数据,而不会被填充token所干扰。

Mask-Multi-Head-Attention

Mask 的目的是防止 Decoder “seeing the future”,就像防止考生偷看考试答案一样。

Pasted image 20250218182106.png

Linear 和 Softmax 来生成输出概率

在解码器的最终阶段,其输出将通过一个线性层进行转换,该层的作用是将解码器的输出映射到与词汇表大小相匹配的维度。随后,应用softmax函数将这些数值转换成概率分布,其中每个词汇对应一个概率值。在这一过程中,概率最高的词汇被选为预测的下一个词

训练过程

模型没有收敛得很好时,Decoder预测产生的词很可能不是我们想要的。这个时候如果再把错误的数据再输给Decoder,就会越跑越偏。这个时候怎么办?

(1)在训练过程中可以使用 “teacher forcing”。因为我们知道应该预测的word是什么,那么可以给Decoder喂一个正确的结果作为输入。

(2)除了选择最高概率的词 (greedy search),还可以选择是比如 “Beam Search”,保留top-K个预测的word。 Beam Search 方法不再是只得到一个输出放到下一步去训练了,我们可以设定一个值,拿多个值放到下一步去训练,这条路径的概率等于每一步输出的概率的乘积。

训练和损失函数

在训练过程中,我们使用损失函数(例如交叉熵损失)将生成的输出概率分布与目标序列进行比较。概率分布给出了每个单词出现在该位置的概率。

模型的训练与评估

训练Transformer模型涉及优化其参数以最小化损失函数,通常使用梯度下降和反向传播。一旦训练完成,就会使用各种指标评估模型的性能,以评估其解决目标任务的有效性。

梯度下降 (Gradient Descent)是一种迭代优化算法,用于最小化损失函数。 它通过沿着负梯度方向逐步更新参数,寻找最优解。

反向传播 (Backpropagation)利用 链式法则,将梯度从输出层反向传播到输入层,计算出所有参数的梯度。

训练神经网络的完整流程
随机初始化参数 --> 前向传播 --> 反向传播 --> 参数更新 --> 重复步骤 2-4,直到模型收敛或达到预设的训练轮数

(1) 梯度下降和反向传播:

  • 在训练期间,将输入序列输入模型,并生成输出序列。
  • 将模型的预测与地面真相进行比较,涉及使用损失函数(例如交叉熵损失)来衡量预测值与实际值之间的差异。
  • 梯度下降用于更新模型的参数,使损失最小化的方向。
  • 优化器根据这些梯度调整参数,迭代更新它们以提高模型性能。

(2) 学习率调度:

  • 可以应用学习率调度技术来动态调整训练期间的学习率。
  • 常见策略包括热身计划,其中学习率从低开始逐渐增加,以及衰减计划,其中学习率随时间降低。

模型的评估指标

  • BLEU(Bilingual Evaluation Understudy):适用于机器翻译和文本生成任务,衡量生成文本与参考文本的相似度。
  • ROUGE(Recall-Oriented Understudy for Gisting Evaluation):常用于文本摘要,评估生成摘要与参考摘要的重叠部分。
  • METEOR(Metric for Evaluation of Translation with Explicit ORdering of Renderings):结合精确率和召回率,用于评估翻译质量。
  • Perplexity 困惑度:用于语言模型,衡量模型预测测试数据的能力,数值越低越好。
目录
打赏
0
2
2
0
16
分享
相关文章
LeViT-UNet:transformer 编码器和CNN解码器的有效整合
LeViT-UNet:transformer 编码器和CNN解码器的有效整合
248 0
Transformer之十万个为什么?
这篇博文主要结合个人理解和思考,通过整理和自己的解释列出关于Transformer的部分重要问题(持续更新),看完后会对Transformer有个更好的理解。
Transformer之十万个为什么?
Transformer到底解决什么问题?
本文希望围绕“Transformer到底是解决什么问题的”这个角度,阐述NLP发展以来遇到的关键问题和解法,通过这些问题引出Transformer实现原理,帮助初学者理解。
Transformer到底解决什么问题?
Transformer 学习笔记 | Encoder
本文记录了学习Transformer模型过程中对Encoder部分的理解,包括多头自注意力机制(Multi-Head Self-Attention)和前馈网络(Feed-Forward Network)的工作原理。每个Encoder Layer包含残差连接(Residual Connection)和层归一化(Layer Normalization),以缓解梯度消失问题并稳定训练过程。文中详细解释了Q、K、V的含义及缩放点积注意力机制(Scaled Dot-Product Attention),并通过图解展示了各组件的工作流程。欢迎指正。
白话文讲解大模型| Attention is all you need
本文档旨在详细阐述当前主流的大模型技术架构如Transformer架构。我们将从技术概述、架构介绍到具体模型实现等多个角度进行讲解。通过本文档,我们期望为读者提供一个全面的理解,帮助大家掌握大模型的工作原理,增强与客户沟通的技术基础。本文档适合对大模型感兴趣的人员阅读。
1025 18
白话文讲解大模型| Attention is all you need
Transformer
【8月更文挑战第7天】
101 3
Transformer介绍
Transformer模型于2017年由Google提出,其在BERT中大放异彩,革新了NLP领域。Transformer的优势在于并行计算能力和处理长距离依赖,通过自注意力机制避免了RNN/LSTM的梯度问题。它由编码器和解码器组成,使用位置编码处理序列信息。Transformer在机器翻译、文本生成、问答系统等多个任务中提升效率和准确性,并扩展至计算机视觉和语音识别。随着AI发展,Transformer成为大模型核心技术,推动整个产业进步。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等