品读论文《Attention is All You Nedd》之Transformer详解

作为当下最先进的深度学习架构之一的Transformer是一种基于注意力机制的神经网络架构,由Vaswani等人在2017年的论文“Attention is All You Need”中首次提出,最初用于解决自然语言处理(Natural Language Processing,NLP)中的序列建模问题。

在 Transformer 出现之前,很多序列任务(例如机器翻译、摘要、语言建模)常用 RNN(如 LSTM/GRU)或 CNN-based seq2seq 模型。但这些模型有若干局限:

  • 顺序处理,难以并行:RNN 必须一步步处理序列,不能充分并行。
  • 长距离依赖困难:即便有长短期记忆机制(LSTM/GRU),在非常长的序列上仍可能梯度消失或难以捕捉远距离依赖。
  • 建模表达受限:注意力机制虽然可以缓解这些问题,但早期 seq2seq + attention 模型仍基于 RNN 作为基础。

1、Transformer 概览

Transformer 架构作为现代自然语言处理(NLP)的架构的基石,是首个完全依赖注意力机制、不使用序列对齐的 循环神经网络(Recurrent Neural Network,RNN)和卷积神经网络(Convolutional Neural Networks,CNN)来计算其输入和输出表示的转换模型,以其高效的多头注意力机制和灵活的层次结构,解决了 RNN 或 CNN 在处理长序列依赖建模中的难题,成为大模型GPT、BERT、T5等模型架构的基础。

Transformer 采用堆叠的自我注意力和逐点全连接层作为编码器和解码器的整体架构,分别如图 1 的左右两半所示。
图1:Transformer模型架构图1:Transformer模型架构

2、Encoder-Decoder 架构

如图1 所示,左侧和右侧分别对应着编码器(Encoder)和解码器(Decoder)结构。它们均由若干个基本的Transformer 块(Block)组成(对应着图中的灰色框)。

整体流程大致如下:

  1. 输入序列(源语言或源令牌) → 嵌入 + 位置编码 → 进入 编码器堆栈(多个 encoder 层叠加)。
  2. 编码器输出作为上下文表示,传递给解码器。
  3. 解码器在每一步依赖之前生成的输出(经过右移后的输入)以及编码器输出,通过内部机制生成下一个输出 token 的概率分布。
  4. 最终通过一个线性层 + softmax 层把解码器输出向词表映射为概率分布。

编码器都是由一堆 N=6 (论文中给出的层数)相同的层组成。在编码器中,每个层有两个子层:多头自注意力 (Multi-Head Self Attention) 和 前馈网络 (Feed-Forward Network)。每个子层周围使用残差连接 ,然后进行层归一化。

同样的,解码器也都是由一堆 N=6 (论文中给出的层数)相同的层组成。每个子层周围使用残差连接 ,然后进行层归一化。但在解码器中,每个层有三个子层:带掩码的多头自注意力(Masked Multi-Head Self Attention)、编码器-解码器注意力(Cross-Attention / Encoder-Decoder Attention)和 前馈网络(Feed-Forward Network)。

模型中的所有子层以及嵌入层都产生维度 dmodel=512d_{model}=512dmodel=512 的输出。

3、注意力机制(Attention)

Self-Attention是一种核心机制,其核心目标是解决在序列数据内部不同元素之间建立有效关联的问题,以捕捉并理解这些元素间的语义联系。

3.1、缩放点积注意力(Scaled Dot-Product Attention)图 2:(左)缩放点积注意力。(右)多头注意力由多个并行运行的注意力层组成。

给定查询 (Q)、键 (K)、值 (V) 三个矩阵(或向量序列),缩放点积注意力的计算流程如下。

  1. 计算Q、K矩阵的点积,并进行逐元素除以 dk\sqrt{d_k}dk 的操作,这一操作称为缩放,目的是在向量维度较大时稳定学习过程。
  2. 可应用一个Mask操作来限制某些位置的注意力。
  3. 对缩放后的结果应用softmax函数,以此获得每个Q位置上关于所有K位置的注意力权重分布。
  4. 将得到的注意力权重与V矩阵进行矩阵乘法,加权求和得到输出,即综合考虑最重要输入信息的上下文向量。这一系列步骤共同构成了Attention 机制中的Q、K和V变换过程。

公式:
Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V) = softmax\begin{pmatrix} \frac{QK^T}{\sqrt{d_k}} \end{pmatrix}VAttention(Q,K,V)=softmax(dkQKT)V

在这个公式中:

  1. Q表示查询向量,通常是解码器的输出,用于询问编码器输出中的相关信息。
  2. K表示键向量,与编码器的输出相关,用于与查询向量进行匹配。
  3. V表示值向量,同样来源于编码器的输出,包含实际需要被加权求和的信息。
  4. dkd_kdk是向量K的维度,通常在计算注意力得分前除以它的平方根进行缩放,以稳定softmax函数的计算并避免出现大的数值导致的梯度量级联乘积溢出问题。
  5. $\frac{QK^T}{\sqrt{d_k}} $计算得出了查询向量与所有键向量之间的相似度量分数。
  6. softmax函数将这些相似度量转换为概率分布,确保注意力权重之和为1,使得不同部分的信息可以被加权求和时有所侧重。

softmax括号里的整体是它使用的对齐函数,这个函数就是缩放点积注意力(Scaled Dot-Product Attention)。这个机制能让每个位置(query)根据与所有 key 的关系有意识地“关注”输入序列中不同位置的信息。

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

单个注意力头可能关注某些维度的信息,但可能不足以捕捉多种关联。于是 Transformer 使用多个注意力头(head)并行:

  • 把 Q, K, V 分为多个子空间(每个 head 对应一个子空间),分别做 attention。
  • 然后把这些头的输出拼接 (concatenate),再通过线性变换得到最终输出。

数学上:

MultiHead(Q,K,V)=Concat(head1,…,headh)WOMultiHead(Q,K,V)=Concat(head1,…,headh)W^OMultiHead(Q,K,V)=Concat(head1,,headh)WO

其中

headi=Attention(QWiQ,KWiK,VWiV)headi=Attention(QWiQ,KWiK,VWiV)headi=Attention(QWiQ,KWiK,VWiV)

这样每个头能捕捉不同的注意力模式(不同的角度、不同的关系)。

3.3、掩码 (Masking)

在解码器子层中有一个带掩码的多头自注意力(Masked Multi-Head Self Attention)层需要用 掩码 (masking) 来避免未来信息泄露(即当前位置不能访问之后的位置):

  • 通常是使用一个上三角掩码 (causal mask),把未来位置的权重设为 −∞−\infty,使其 softmaxsoftmaxsoftmax 后权重为 0。

  • 这样保证解码器在第 i 步只能看到第 <= i 的 token 信息。

4、位置前馈网络( Position-wise Feed-Forward Networks)

位置前馈网络在注意力子层之后,是一个对每个位置单独作用的前馈网络(位置无关的全连接层)。

FFN(x)=W2ϕ(W1x+b1)+b2FFN(x)=W2ϕ(W1x+b1)+b2FFN(x)=W2ϕ(W1x+b1)+b2

其由两个线性变换组成 ,即两个全连接层组成,第一个全连接层的激活函数为 ReLU 激活函数。 原始论文中,前馈网络的中间维度通常是 4×dmodel4 \times d_{\text{model}}4×dmodel
虽然线性变换在不同位置上是相同的,但它们在层与层之间使用不同的参数。

5、位置编码

位置编码它为模型提供了序列顺序信息,弥补了无序的自注意力机制。它通过将固定的位置信息添加到输入嵌入上,使模型能够在没有循环或卷积结构的情况下处理序列。

Transformer使用正余弦函数来进行位置编码,通过不同频率的波形表示不同位置。此设计为每个位置生成唯一的编码,确保模型能够学习到顺序依赖。

6、残差连接和层归一化

为了确保深层网络稳定,Transformer架构在每个子层(注意力和前馈网络)外都引入了层归一化和残差连接,保证梯度流动的稳定性和数据在层间的连贯性。

为了方便进行残差连接,编码器和解码器中的所有子层和嵌入层的输出维度需要保持一致 ,在 Transformer 论文中 $ d_{model}=512$ 。

Output=LayerNorm(x+SubLayer(x))Output=LayerNorm(x+SubLayer(x))Output=LayerNorm(x+SubLayer(x))

这样做有两个好处:

  • 残差连接 (skip connection) 可以缓解梯度消失 / 梯度爆炸问题,让训练更稳定;
  • 层归一化 (LayerNorm) 对每个 token 的表示做归一化,有助于加速训练与稳定性。

这里的 LayerNorm 通常是在 “加法” 后再做归一化。

简单总结

Transformer 是一种基于注意力机制(Attention)的深度学习模型,它在 2017 年由 Google 提出,核心思想是“Attention Is All You Need”。与传统的RNN和CNN的模型不同,Transformer 完全抛弃了序列递归结构,通过注意力机制让每个位置的词都能直接关注到序列中其他所有位置,从而高效捕捉长距离依赖关系,并且可以并行计算,大大提高了训练效率。

Transformer主要由编码器(Encoder)和 解码器(Decoder)两部分组成:编码器负责提取输入序列的语义信息;解码器根据编码器的输出逐步生成结果。

每一层都包含两个核心模块:多头自注意力(Multi-Head Self-Attention),用于建模序列中不同位置之间的关系;前馈神经网络(Feed-Forward Network),用于非线性特征变换;并配合残差连接(Residual Connection)与层归一化(Layer Normalization)保证训练稳定。

得益于这种架构,Transformer 具备极强的扩展性,目前几乎所有主流大模型(如 BERT、GPT、T5 等)都基于它构建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值