Transformer从零详细解读——DASOU讲AI

1. 从全局角度概括Transformer

transformer的任务是什么?

进一步细化

进一步细化,注意:每个encoder结构相同,参数不同;decoder同理

原论文中的图如下:

2.Encoder

2.1 输入部分

(1)Embedding:

将输入的离散符号(如单词或字符)转换为连续向量表示的关键步骤。

(2)位置编码:

为什么需要位置编码?

与递归神经网络(RNN)和卷积神经网络(CNN)不同,这些传统模型天然地对输入序列的顺序敏感,因为它们通过连续处理或滑动窗口的方式处理数据。

然而,自注意力机制在计算时会同时考虑序列中所有元素之间的关系,这意味着它本身并不具备捕捉元素相对或绝对位置的能力。在原始的 Transformer 模型中,位置编码是通过正弦和余弦函数来实现的。

2.2 注意力机制

详细讲解见下面博客

https://blog.csdn.net/WBingJ/article/details/144832299?spm=1001.2014.3001.5501

原因:传统的序列到序列(Seq2Seq)模型使用一个固定大小的上下文向量来表示整个输入序列,这在处理长序列时可能会导致信息丢失。注意力机制通过允许模型在每个时间步关注输入序列的不同部分,解决了这一问题。

作用:允许模型在处理输入序列时,能够有选择性地聚焦于最相关的部分,而不是对所有部分一视同仁

  • 具体来说,自注意力机制通过计算查询(Query)、键(Key)和值(Value)之间的相似度来生成注意力权重。

残差

  • 新的表示 z1z1​ 和 z2z2​ 通过残差连接与原始输入相加,并经过归一化层。
  • 归一化后的结果再次进入前馈神经网络。

为什么使用残差:
  • 缓解梯度消失/爆炸问题:在非常深的神经网络中,随着层数的增加,反向传播过程中梯度会逐渐变小(梯度消失)或变得非常大(梯度爆炸)。这使得网络难以收敛,甚至无法正常训练。残差连接通过引入直接路径来传递信息,使得梯度可以更容易地从输出层反向传播到输入层。
具体步骤
  1. 输入向量 xx:

    • 输入向量 xx 是残差块的初始输入。
  2. 前馈网络 F(x)F(x):

    • 输入 x 通过第一个权重层和 ReLU 激活函数。
    • 输出再通过第二个权重层和 ReLU 激活函数。
  3. 残差连接:

    • 将原始输入 x 与前馈网络的输出 z 相加

Layer Normalization

Layer Normalization 是一种用于深度学习模型中的正则化和加速训练的技术,它通过归一化每一层的输入来稳定和加速神经网络的训练过程。与 Batch Normalization 不同,Layer Normalization 对每个样本的所有特征进行归一化,而不是在小批量(mini-batch)上对每个特征进行归一化。

2.3 前馈神经网络

3. Decoder

3.1 多头注意力机制Mask

为什么需要mask:解码器中的未来信息屏蔽,在解码阶段,模型不应该看到未来的词,因为这会导致数据泄露,并且不符合实际应用情境。例如,在机器翻译任务中,当翻译一句话时,每个时刻只能基于之前的词语来预测下一个词。

3.2 交互层Cross Attention Layer

作用:交互层的核心是交叉注意力机制,它使得解码器可以在生成每个输出词时参考编码器的所有输入。

  • 查询(Query):来自解码器当前时间步的隐藏状态。
  • 键(Key)和值(Value):由编码器生成的隐藏状态提供。
  • 计算注意力分布:通过计算查询与所有键之间的相似度得分,并使用 Softmax 函数将其转换为概率分布。然后,该分布用于对值进行加权求和,得到最终的上下文向量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值