1. 引言
说明目标
在深度学习领域,Transformer架构已成为近年来最重要的技术突破之一。它最早由Vaswani等人在2017年的论文《Attention is All You Need》中提出,迅速成为自然语言处理(NLP)和其他序列建模任务的核心工具。传统方法(如循环神经网络RNN和长短时记忆网络LSTM)尽管在某些场景下表现优异,但其本质的序列依赖性限制了并行化的实现,同时在处理长序列时存在效率低下和信息遗忘的问题。相比之下,Transformer通过完全摒弃循环结构,依赖注意力机制(Attention)实现了高效的并行计算,同时能够更好地捕捉序列中不同位置之间的全局(理解上下文-语境)关系。
Transformer的应用领域不仅局限于NLP,其泛化能力使得它在计算机视觉、语音识别、蛋白质折叠预测和强化学习等领域展现出卓越的性能。例如,OpenAI的GPT系列模型、Google的BERT模型以及后续的大规模多模态模型(如DALL·E和CLIP),均以Transformer为技术底座,为AI模型的能力边界带来了飞跃式突破。
本文旨在对Transformer的核心技术进行深入解析,相对全面地理解其设计理念、关键组件及背后的技术逻辑。
- Transformer 的整体架构
功能概述
Transformer是一种专为序列建模任务设计的深度神经网络,其核心目标是将输入序列映射到输出序列。这种灵活的映射能力使其能够广泛应用于多种任务场景。
Transformer通过完全摒弃传统循环神经网络(RNN)的序列依赖结构,采用全并行的注意力机制来处理序列数据。这一特性显著提升了模型的计算效率,特别是在长序列任务中展现出卓越的性能。
Transformer往简单里说它就是个深度神经网络,有着输入和输出,输入是一种语言,输出是翻译的另一种语言;也可以输入是一篇文章,输出是几句话的摘要;输入是问题,输出是回答,这样也可以是问答系统。
Transformer是一种结构,它可以做很多种事情,需要保证的是,输入是sequence,输出是sequence,sequence等于string,里面包含很多token;之所以说Transformer是深度神经网络,就是说叠加了很多个Encoder和Decoder,最核心的就是Encoder Block和DecoderBlock;Feed-forward就是普通的神经网络,核心的三个部分是 Encoder 中的 Self-Attention,Decoder 中的 Self-Attention,EncoderDecoder Attentio。
基本组成
Transformer的架构以Encoder-Decoder框架为核心,采用了层级堆叠的方式,并通过多个关键模块实现序列的表示学习和映射功能。
Encoder-Decoder架构
Transformer由两部分组成:
Encoder(编码器):负责从输入序列中提取上下文特征,生成一个隐层表示(hidden representation)。
Decoder(解码器):利用Encoder生成的隐层表示,将其与目标序列结合,生成最终输出。
这两个模块共同协作,通过注意力机制和嵌入层的强大表示能力,实现了输入和输出序列的高效映射。
Encoder 和 Decoder 的层级堆叠
Transformer的编码器和解码器都由多个模块堆叠而成,每个模块都由以下关键组件组成:
Encoder的层级结构:
输入序列首先被转化为向量表示(通过Embedding和位置编码)。
每一层的Encoder通过以下步骤处理输入:
Self-Attention层:计算序列中每个token与其他token的关联权重。
Feed-Forward层:一个全连接网络层,负责进一步处理和变换Self-Attention的输出。
Layer Normalization和残差连接:用于稳定训练,确保信息流动不会被中断。
层与层之间通过残差连接,最终输出经过多个堆叠的隐层特征。
Decoder的层级结构:
Decoder除了包含与Encoder相同的Self-Attention层和Feed-Forward层,还增加了Encoder-Decoder Attention模块:
Masked Self-Attention层:保证解码过程中不能访问未来的token,仅使用已生成的上下文信息。
Encoder-Decoder Attention层:计算目标序列中每个token与源序列中每个token的相关性,将源序列的信息融入解码过程。
关键模块概述
Self-Attention:这是Transformer的核心机制,通过为每个token分配与其他token的注意力权重,使模型能够捕捉长距离依赖关系。它是并行化计算的基础,也是语言建模的强大工具。
Feed-Forward网络:一个两层的全连接神经网络,每个token的向量独立经过此网络,用于学习更深层次的特征。
Layer Normalization:对隐藏层的输出进行归一化,增强模型的稳定性,加速收敛。
残差连接(Residual Connection):通过将输入直接传递到输出,缓解梯度消失问题,提高信息流动效率。
通过这种模块化设计,Transformer可以轻松扩展层数和参数规模,从而适应从小规模任务到超大规模任务的多种需求。
3. Attention 注意力机制
原理与作用
Attention机制是Transformer的核心创新之一,其主要作用是通过计算序列中各个token之间的关联性(权重),捕捉输入序列的全局依赖关系,从而在建模时能够更有效地理解数据的上下文信息。
具体而言,Attention机制会对每个token赋予不同的“注意力”权重,权重值反映了该token在上下文中的重要程度。例如,在翻译任务中,一个单词在目标语言中的正确翻译往往与源语言句子中某些关键单词高度相关,而不必依赖于所有单词。Attention机制通过加权求和的方式,让模型专注于关键token,同时减少不相关token对结果的影响。
Attention的最大优势在于其全局感知能力,即每个token都能同时关注整个输入序列的任意位置。这种全局建模方法避免了传统循环神经网络(RNN)中无法并行处理和长距离依赖难以捕捉的缺陷。
类型划分
Transformer中Attention机制根据使用场景分为三种类型:Encoder Self-Attention、Decoder Self-Attention 和 Encoder-Decoder Attention,它们在功能和作用上各有侧重。
我们期望语言模型(Transformer)可以学习到更好的Vector, 那么如何更好的理解文本的含义呢?
这就引入了tf中很重要的Attention机制!
Encoder Self-Attention
功能:在编码过程中,Encoder Self-Attention用于捕捉输入序列中每个token与其他token之间的关系,帮助模型理解输入序列的上下文语义。
工作机制:
对输入序列的所有token生成对应的Query、Key、Value向量。
每个token的Query与所有token的Key计算内积,得到与所有token的相关性分数(得分矩阵)。
使用Softmax将得分矩阵归一化为权重矩阵,反映每个token对其他token的注意力程度。
将权重矩阵与Value矩阵相乘,得到加权后的上下文向量,作为Self-Attention的输出。
优势:通过全局关联的计算,Encoder Self-Attention能够提取输入序列的语义表示,无需依赖固定的词序结构。
例如,对于输入句子“Machine learning is fascinating”,Self-Attention可以关注“learning”与“Machine”之间的语义关联,同时弱化与“is”的关联。
为了在一句话中更好的理解每个token的含义,把对当前这个token 影响比较大的其它token找到,这样通过影响比较大的token来理解 当前这个token的含义。
直白地理解token:对于计算机来说是把一句话的每个token和其它token的关联性(权重)计算一下,然后以加权求平均的方式计算出每个token的向量。
Decoder Self-Attention
功能:在解码过程中,Decoder Self-Attention用于捕捉目标序列中当前生成的token与之前生成的token之间的关系。
特殊性:
Masking机制:为了避免解码时“窥探”未来的token,Decoder Self-Attention引入了Masking机制,将未来的token关联性分数设为负无穷,使其注意力权重为零。这确保了解码的自回归特性(即逐步生成序列)。
工作机制:与Encoder Self-Attention类似,但在计算得分矩阵之前,加入Mask操作。
Masking屏蔽未来token的影响,仅允许当前token关注已生成的token。
生成当前token的上下文表示。
应用场景:保证解码器在生成目标序列时,遵循自回归顺序。例如,在生成“Transformer is amazing”时,生成“is”时只能看到“Transformer”,生成“amazing”时只能看到“Transformer is”。
Encoder-Decoder Attention
功能:连接Encoder和Decoder,将源序列的信息传递给目标序列,帮助解码器理解输入序列的上下文信息。
工作机制:
Decoder中的每个token生成Query向量,Encoder中的所有token生成Key和Value向量。
Decoder的Query与Encoder的Key计算注意力得分,反映目标序列中的每个token与源序列中的每个token的关联性。
使用Softmax归一化后,将权重作用在Encoder的Value上,生成Decoder对输入序列的上下文表示。
重要性:这一模块保证了生成目标序列时充分利用源序列的信息,例如在机器翻译任务中,将“hello”翻译为“你好”时,需要关注目标语言“你好”与源语言“hello”的直接关联。
Encoder-Decoder Attention有效结合了源序列和目标序列的信息,为高质量的序列映射提供了关键支持。
Attention机制贯穿了Transformer的整个架构设计,三种不同类型的Attention分别在编码、解码和信息交互中发挥核心作用。Encoder Self-Attention用于构建输入序列的全局语义表示,Decoder Self-Attention确保解码的自回归特性,Encoder-Decoder Attention则实现源序列与目标序列之间的信息流动。这种模块化设计奠定了Transformer在序列建模中的强大表现,使其成为现代深度学习模型的重要基石。