细谈Transformer

1. Transformer 的背景

Transformer 由 Vaswani 等人在 2017 年提出,论文名为 "Attention Is All You Need"。它彻底改变了 NLP(自然语言处理)领域,相较于 RNN(循环神经网络)和 LSTM(长短时记忆网络),Transformer 具备以下优势:

  • 并行化计算:由于不依赖序列的时间步计算(不像 RNN 那样逐步处理),可以利用 GPU 高效计算。
  • 长距离依赖捕捉能力更强:通过“自注意力(Self-Attention)”机制,可以在处理长序列时更有效地关注相关内容,而不是像 RNN 那样面临梯度消失问题。
  • 更强的表达能力:多头注意力(Multi-Head Attention)机制使得模型可以关注输入序列中的不同部分,从多个角度建模语义关系。

2. Transformer 结构概览

Transformer 由“编码器(Encoder)解码器(Decoder)”两部分组成,每部分由多个层(Layer)堆叠而成。

2.1 编码器(Encoder)

  • 作用:接收输入序列,将其转换为高维表示,提供给解码器。
  • 结构(每层):
    1. 多头自注意力(Multi-Head Self-Attention)
    2. 前馈神经网络(Feed-Forward Network, FFN)
    3. 层归一化(Layer Normalization) + 残差连接(Residual Connection)
组件作用
输入嵌入(Token Embedding)把输入序列的 Token 转换为向量表示(例如词向量)。
位置编码(Positional Encoding)由于 Transformer 不像 RNN 依赖序列顺序,需要添加位置信息。
多头自注意力(Multi-Head Self-Attention)让输入序列的不同部分彼此交互,捕捉长距离依赖关系。
前馈神经网络(Feed-Forward Network, FFN)提高特征表达能力,对每个 Token 进行非线性变换。
残差连接(Residual Connection)+ 层归一化(LayerNorm)让信息更容易传播,避免梯度消失或梯度爆炸。

编码器的流程

  1. 输入嵌入 + 位置编码 → 形成向量表示
  2. 多头自注意力 → 关注输入序列的不同部分(自注意力机制)
  3. 前馈神经网络(FFN) → 进一步处理特征
  4. 残差连接 + 层归一化 → 稳定训练,保持信息流动
  5. 多层堆叠 → 进一步丰富表示

最终输出
        一个与输入长度相同的表示向量,每个 Token 经过多次交互后,包含了整个序列的上下文信息。

2.2 解码器(Decoder)

  • 作用:接收编码器输出和目标序列(已生成的部分),生成新的序列。
  • 结构(每层):
    1. Masked 多头自注意力(Masked Multi-Head Self-Attention)
    2. 跨层注意力(Cross Attention),用于处理编码器输出
    3. 前馈神经网络(FFN)
    4. 层归一化 + 残差连接
组件作用
Masked 多头自注意力(Masked Multi-Head Self-Attention)只能关注当前和过去的 Token,防止未来信息泄露。
跨注意力(Cross-Attention)结合编码器输出,使解码器能够获取输入序列的信息。
前馈神经网络(Feed-Forward Network, FFN)进一步处理特征,增强表达能力。
残差连接(Residual Connection)+ 层归一化(LayerNorm)让信息更容易传播,提高训练稳定性。

解码器的流程

  1. 输入嵌入 + 位置编码 → 形成向量表示
  2. Masked 多头自注意力 → 只能看到已经生成的部分,防止未来信息泄露
  3. 跨注意力(Cross-Attention) → 结合编码器的输出,确保解码器生成的 Token 与输入相关
  4. 前馈神经网络(FFN) → 进一步处理特征
  5. 残差连接 + 层归一化 → 保持梯度稳定
  6. 多层堆叠 → 增强模型表达能力
  7. 最终全连接层(Linear) + Softmax → 预测下一个 Token 的概率分布

最终输出
        解码器在每个时间步输出一个 Token,最终生成整个目标序列。

输入输出关系

  • 输入:一个序列,例如 "I love machine learning"
  • 输出:另一个序列,例如 "我爱机器学习"(机器翻译任务)。

3. 核心机制

3.1 自注意力(Self-Attention)

核心计算公式:

Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V 

其中:

  • Q, K,V 分别是查询(Query)、键(Key)、值(Value)矩阵,来自相同的输入嵌入(Embedding)。
  • \frac{1}{\sqrt{d_{k}}}  是缩放因子,避免梯度消失/爆炸。
  • softmax 计算权重,使其归一化。

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

  • 作用:让模型可以关注输入的不同部分。
  • 计算方式:将输入向量分成多个子空间,每个子空间独立执行注意力计算,然后合并。

3.3 位置编码(Positional Encoding)

Transformer 不像 RNN 那样有序列依赖,需要手动加入位置信息:

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

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

其中:

  • pos 表示单词在序列中的位置,
  • 表示维度索引,
  • d_{model} 是嵌入向量的维度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值