Transformer

Transformer
Seq2seq model with Self-attention

Transformer是一种基于自注意力机制Self-attention深度学习模型框架,最早用于处理序列数据,尤其在自然语言处理(NLP)中取得了突破性成果,如今也广泛应用于计算机视觉、语音处理等领域。

与传统的递归神经网络(RNN)、卷积神经网络(CNN)不同,Transformer完全基于注意力机制,摒弃了序列依赖和局部卷积,能够并行处理整个输入序列。

Transformer 已成为现代自然语言处理(NLP)领域的绝对基石,是几乎所有大语言模型(如 GPT 和 BERT)的核心。

提出背景

在Transformer出现之前,序列建模主要靠:

这些方法存在的核心问题:

核心机制:自注意力机制 (Self-Attention)

自注意力是 Transformer 的灵魂。它允许模型在处理序列中的一个元素(如一个词)时,能够同时权衡和考虑序列中所有其他元素对它的重要性。

QKV 模型: 自注意力的计算过程可以被抽象为对“Query(查询)”、“Key(键)”和“Value(值)”的操作。

  1. 对于输入序列中的每个词,都创建三个不同的向量:Query 向量(Q)、Key 向量(K)和 Value 向量(V)。
  2. 要计算一个词的表示,我们用它的 Q 向量去和所有其他词K 向量进行点积运算,得到一个注意力分数 (Attention Score)。这个分数衡量了“查询”与各个“键”的匹配程度。
  3. 将这些分数通过一个 Softmax 函数进行归一化,得到一组权重。
  4. 将这些权重分别与每个词对应的 V 向量相乘,然后加权求和。结果就是该词经过自注意力计算后得到的、融合了全局上下文信息的新表示。
自注意力的优势

  • 全局依赖捕捉: 任意两个位置之间的依赖关系都可以在一步计算内直接建立,路径长度为 O (1)。
  • 高度并行化: 对序列中每个元素的计算都可以独立进行,极大地提升了训练效率。

基本原理

核心思想总结为一句话:

让每个位置的元素根据输入序列中所有其他位置的信息自适应地建模依赖关系

靠什么做到?

核心架构

标准的Transformer模型分为两大部分:
每个Encoder和Decoder都是堆叠多个层(Layer)**组成的。

模块 作用
Encoder(编码器) 输入处理,提取上下文信息
Decoder(解码器) 生成输出,常用于翻译、文本生成等任务

架构组成

原始的 Transformer 模型采用了一个编码器-解码器 (Encoder-Decoder) 的结构,主要用于机器翻译任务。

Encoder

每个Encoder Layer包含:

Decoder

每个Decoder Layer包含:

关键机制

自注意力机制

自注意力(Self-Attention)

让序列中的每一个元素都对其它所有元素进行加权求和,从而动态建模它与其它元素的依赖关系。

Attention(Q,K,V)=softmax(QKTdk)V

多头注意力(Multi-Head Attention)

不同头可以关注不同层次、不同角度的信息(局部、全局、不同语义特征)

残差连接 + 层归一化(Residual + LayerNorm)

位置编码(Positional Encoding)

由于Transformer完全放弃了RNN的顺序性,需要显式告诉模型"顺序信息"。这样模型就能利用不同频率编码位置信息。

PE(pos,2i)=sin(pos100002i/dmodel)PE(pos,2i+1)=cos(pos100002i/dmodel)
模型 特点 应用领域
BERT Encoder部分,预训练-微调范式 自然语言理解(NLU)
GPT系列 Decoder部分,生成式预训练模型 文本生成(NLG)
Vision Transformer(ViT) 直接把图像切成Patch后用Transformer处理 图像分类
DETR Transformer用于目标检测 计算机视觉
Speech-Transformer 语音识别与理解 语音处理

发展方向

Pasted image 20240513234553.png

Pasted image 20240513235157.png

Pasted image 20240513235314.png