跳至主要內容

Transformer

pptg大约 3 分钟

2017 年提出的 Transformer 完全摒弃了 RNN,仅依靠注意力机制来实现Seq2Seq,成为当前主流(如 BERT、GPT 等模型的基础)

序列到序列(Seq2Seq)

Seq2Seq(Sequence-to-Sequence,序列到序列)是一种深度学习模型架构,主要用于将一个输入序列转换为另一个输出序列。它最初被广泛应用于机器翻译任务(例如将英文句子翻译成中文)。主要由两个部分组成:

  • 编码器(Encoder)
    • 接收输入序列(如文本向量)
    • 使用神经网络,将输入序列转换为语义信息,生成固定长度的上下文向量(context vector)
  • 解码器(Decoder)
    • 以解码器生成的上下文向量作为初始状态
    • 逐步预测下一个输出元素
Seq2Seq
Seq2Seq

Transformer结构

Transformer由6 * Encoder6 * Decoder组成

模型结构
模型结构

Encoder

  • Input Embedding: 将输入经过分词工具拆分为最小的语义单位Token,每个Token会被编码为512维的向量, 最终多个词组成 N * 512稠密向量, 也就是Input Embedding
  • Positional Encoding: Input Embedding是同时输入模型的,所以需要加入位置编码来表示词的相对顺序, 也就是Positional Encoding。这里原文是用的正弦/余弦函数,其他变种也有使用模型的。

每个Encoder内部,使用ResNet的思想,添加了Add & Norm连接。主体结构由Feed-ForwardMulti-Head Attention组成

  • Feed-Forward: Transformer的Attention缺乏非线形的能力,这里引入FFN并使用ReLU增强拟合能力。
  • Scaled Dot-Product Attention: 计算Attention(Q,K,V)=softmax(QKTdk)V,先获取Q、K的注意力分数矩阵,缩放归一化后,最终与V加权求和
Scaled Dot-Product Attention
Scaled Dot-Product Attention
  • Muti-Head Attention(Self-Attention): 多头注意力让不同的头关注不同的区间的向量,从而增强模型对输入序列中不同位置、不同语义关系的建模能力。
    • Q: 查询向量,当前Token关注什么
    • K: 键向量,当前Token能给其它Token提供什么信息
    • V: 值向量,这个词实际包含的信息内容
Muti-Head Attention
Muti-Head Attention

Decoder

Decoder的大部分结构类似Encoder,主要的不同在于:

  • shifted right: 在训练阶段,将目标序列(target sequence)向右平移一个位置作为 Decoder 的输入。这是为了实现时间步上的对齐,从而正确计算Loss
  • Masked Multi-Head Attention: 这里启用了Masked机制,并使用了两组注意力结构
    • Masked Self-Attention: 为了让Decoder在生成第t个词时,不能看到未来词
    • Cross-Attention: Q来自Decoder, K、V来自Encoder的最终输出,从而建立输出和输入之间的依赖关系

当 Decoder 要生成 "爱"(对应英语 "love")时,Cross-Attention 会让它聚焦到 Encoder 中 "love" 对应的位置,从而实现跨语言对齐

[1] 词向量 | Transformer & Bert | 原理简介+代码简析open in new window

[2] 【完整版】硬核讲解:一个视频彻底了解大模型的原理,从输入层到输出层open in new window

[3] 《Attention Is All You Need》算法详解open in new window