第5期 LLM的基石:Transformer架构与自注意力机制
欢迎来到AI编程深度专研系列教程的第五期内容!在前四期,我们从宏观角度了解了AI编程的范式变革、大型语言模型的核心能力、提示工程的艺术以及AI编程的优劣势。从本期开始,我们将深入技术底层,探索支撑这些强大能力的技术原理。本期我们将聚焦于Transformer架构与自注意力机制,这是现代大型语言模型的核心技术基石。
2.1.1 Transformer模型的基本结构
2.1.1.1 Transformer的起源与发展
Transformer架构由Google在2017年发表的论文《Attention Is All You Need》中提出,最初设计用于机器翻译任务。这一架构抛弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)结构,完全基于注意力机制,带来了革命性的性能提升和并行计算能力。
自提出以来,Transformer架构经历了快速演进,主要变种包括:
- BERT(2018):双向Transformer编码器,在理解任务上表现出色
- GPT系列(2018至今):自回归Transformer解码器,专注于生成任务
- T5(2019):统一的”Text-to-Text”框架,使用Encoder-Decoder结构
- Switch Transformer(2021):引入专家混合系统,提高参数效率
2.1.1.2 Transformer的整体架构
Transformer架构主要由两大部分组成:编码器(Encoder)和解码器(Decoder)。在GPT等生成模型中,通常只使用了解码器部分。
编码器结构:
- 输入嵌入:将输入tokens转换为向量表示
- 位置编码:添加序列位置信息
- 多层自注意力机制:捕获输入序列中不同位置之间的关系
- 前馈神经网络:对注意力机制的输出进行非线性变换
- 残差连接与层归一化:稳定训练过程
解码器结构:
- 与编码器相同的基本组件
- 掩码自注意力:确保在生成时只关注已经生成的tokens
- 编码器-解码器注意力:连接编码器输出和解码器中间状态
2.1.1.3 关键组件解析
输入处理:
- Tokenization:将文本分割成tokens
- 嵌入层:将tokens映射到高维向量空间
- 位置编码:由于Transformer没有递归或卷积结构,需要显式添加位置信息
核心计算块:
- 多头自注意力层:允许模型同时关注不同位置和不同表示子空间的信息
- 前馈神经网络层:两个线性变换层,中间使用ReLU等激活函数
- 层归一化:对每层输入进行归一化,加速训练
- 残差连接:从输入直接连接到输出,帮助梯度流动,缓解梯度消失问题
输出处理:
- 线性层:将高维表示映射到词汇表大小的维度
- Softmax层:生成下一个token的概率分布
2.1.2 自注意力机制的工作原理
2.1.2.1 注意力机制的基本概念
注意力机制是模仿人类注意力的一种计算方法,允许模型在处理序列数据时动态地关注最相关的部分。在Transformer中,自注意力(self-attention)允许序列中的每个位置关注序列中的所有其他位置。
注意力机制的核心思想是:
- 计算查询向量与所有键向量的相似度
- 对相似度进行归一化,得到注意力权重
- 使用这些权重对值向量进行加权求和
2.1.2.2 缩放点积注意力的数学原理
Transformer使用的是缩放点积注意力(Scaled Dot-Product Attention),其计算过程如下: