摘要:过去的模型(比如 RNN、LSTM) 就像一个眼神不太好的人,从左到右一个词一个词地读,读到后面的词就可能忘了前面的细节,而且一次只能处理一个词,效率不高。处理长句子时,它可能只记得“看书”,但忘了是谁在看书(泰迪熊)。
transformer:改变 AI 语言理解的游戏规则
想象一下你在阅读一句话:“我今天下午在公园里看到一只可爱的泰迪熊在看书。”
过去的模型(比如 RNN、LSTM) 就像一个眼神不太好的人,从左到右一个词一个词地读,读到后面的词就可能忘了前面的细节,而且一次只能处理一个词,效率不高。处理长句子时,它可能只记得“看书”,但忘了是谁在看书(泰迪熊)。
Transformer 模型 就像一个拥有“全局视野”和“重点关注”能力的人。它能同时看到句子里的所有词,并且知道哪些词之间关系更密切。它会特别关注“泰迪熊”和“看书”之间的联系,即使它们在句子中隔了几个词。这种能力就叫做 “注意力机制”(Attention Mechanism)。
简单来说,Transformer 的核心优势在于:
并行处理: 能同时处理句子中的所有词,速度更快。
全局依赖: 能捕捉句子中任意两个词之间的关系,无论距离多远,更好地理解上下文。
注意力: 知道哪些词对理解当前词最重要,分配不同的“注意力权重”。
正是因为这些强大的能力,Transformer 成为了现代几乎所有大型语言模型(如 GPT、BERT 等)的基石,彻底改变了自然语言处理(NLP)领域。
第 1 部分:基础 (Foundations)
1.1 Tokens
定义: 文本处理的基本单位,可以是单词 (Word)、子词 (Subword) 或字符 (Character)。想象成语言的“积木块”。
特殊 Tokens: [UNK] 代表词汇库里没有的未知词,[PAD] 用来填充短句子,使所有输入长度一致。
Tokenizer (分词器): 把原始文本切分成 Tokens 的工具。
不同类别分词器对比 :
Word: 简单直观,但词汇量大,处理不了新词(如 "reaaaally")。
Subword (子词,如 BPE, Unigram): 常用!能处理词根和变体(如 "teddy" 和 "##bear"),平衡了词汇量和序列长度。
Character (字符): 不会遇到未知词,但序列太长,难捕捉语义模式。
Byte (字节): 词汇量最小,但过于底层。
1.2 Embeddings (嵌入)
定义: 把 Token (或其他元素) 表示成一个数字向量 (一串数字)。你可以理解为给每个“积木块”一个独特的坐标,这个坐标蕴含了它的意义。
Similarity (相似度): 用余弦相似度 (Cosine Similarity) 计算两个 Token 向量之间的夹角,判断它们的语义相似性。夹角越小 (值越接近 1),意思越相近。而这个夹角便是 transformer 模型的核心概念,而注意力机制计算的相似性就是此夹角。
ANN (近似最近邻) 和 LSH (局部敏感哈希) 是在大数据库中快速查找相似向量的技术。
第 2 部分:Transformers
2.1 Attention (注意力机制)
核心公式: Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) * V
大白话解释: 对于一个查询 q (Query,你想了解的信息),它会去查看一系列的键 k (Key,描述信息标签),找到与 q 最相关的 k。然后,根据相关性强度 (通过 softmax 计算权重),去提取对应的值 v (Value,实际信息内容)。
Q, K, V 矩阵: 在实际计算中,我们用矩阵 Q, K, V 来包含所有的 queries, keys, values,实现并行计算。d_k 是 Key 向量的维度,用来缩放,防止结果过大,模型出现过拟合现象。
MHA (Multi-Head Attention, 多头注意力)
概念: 不是只用一组 Q, K, V 做一次注意力计算,而是将 Q, K, V 投影 (通过矩阵 W_Q, W_K, W_V) 到多个不同的“子空间”(称为“头”,Head),并行计算多次注意力,捕捉不同方面的信息。最后将所有头的结果合并 (通过矩阵 W_O)。
好处: 让模型能从不同角度理解信息,比如一个头关注语法关系,另一个头关注语义关联。
GQA (分组查询注意力) 和 MQA (多查询注意力) 是 MHA 的变种,通过共享 K 和 V 来减少计算量。
2.2 Architecture (架构)
概览: 经典的 Transformer 由 Encoder (编码器) 和 Decoder (解码器) 组成。
Encoder: 负责理解输入文本,并将其编码成包含丰富语义的向量表示 (Embeddings)。
Decoder: 利用 Encoder 的输出和之前已生成的内容,预测下一个 Token,逐步生成输出序列。
以上图片展示了机器翻译任务中,英文输入通过 Encoder,然后 Decoder 基于 Encoder 信息和已生成的法文词,逐步生成完整的法文翻译。
组件:
Self-Attention (自注意力): 在 Encoder 和 Decoder 内部使用,让模型理解输入或输出序列内部各词之间的关系。
Cross-Attention (交叉注意力): 在 Decoder 中使用,让 Decoder 关注 Encoder 输出的相关部分,实现输入到输出的信息传递。
Feed-Forward Network (前馈网络): 在每个注意力层之后,对信息进行进一步处理和转换。
Masked Self-Attention (掩码自注意力): Decoder 在生成第 i 个词时,只能关注第 1 到 i-1 个词,不能“偷看”后面的答案。
Position Embeddings (位置嵌入): 因为 Transformer 本身不处理序列顺序,需要额外加入位置信息,告诉模型每个 Token 在句子中的位置。RoPE (旋转位置嵌入) 是目前流行且高效的一种方式。
2.3 变体模型
Encoder-only (仅编码器,如 BERT): 专注于理解输入文本,输出高质量的文本表示。非常适合做文本分类、情感分析、命名实体识别等任务。通常会加一个特殊的 [CLS] Token,其输出向量代表整个句子的含义。
Decoder-only (仅解码器,如 GPT): 专注于生成文本,是自回归 (Autoregressive) 模型,即根据前面的词预测下一个词。非常适合做对话系统、文本生成、摘要等任务。通常以 [BOS] (Beginning of Sentence) Token 开始。现在 SOTA (State-of-the-art) 的 LLM 大多是 Decoder-only 架构(如 GPT 系列, LLaMA, Mistral 等)。
2.4 Optimizations (注意力机制优化方法)
Attention Approximation (注意力近似): 标准注意力计算复杂度是 O(n²),序列 n 变长时计算量剧增。为了降低计算复杂度,也对 transformer 进行了各种优化,优化方法:
Sparsity (稀疏性): 假设每个 Token 只需关注少数几个相关的 Token,而不是全部。
Low-rank (低秩): 用低秩矩阵分解来简化注意力计算。
Flash Attention: 一种精确的注意力计算优化方法,利用 GPU 硬件特性 (快速的 SRAM),在计算过程中减少对慢速 HBM (显存) 的读写,显著提升速度和降低内存占用。实践中效果非常好!
第 3 部分:大型语言模型 (Large Language Models, LLM)
3.1 概览
定义: 基于 Transformer、拥有数十亿甚至更多参数、具备强大自然语言处理能力的模型。一般包含如下三个步骤:
Pretraining (预训练): 在海量文本数据上学习通用的语言知识。
Finetuning (微调): 在特定任务的数据上进行训练,让模型学会特定技能 (如 SFT - 监督微调)。
Preference Tuning (偏好调整): 根据人类偏好或规则进一步调整模型,使其输出更符合期望 (如 RLHF)。
3.2 Prompting (提示工程)
Context Length (上下文长度): 模型能处理的最大输入 Token 数量。现在越来越长,从几千到上百万。
Decoding Sampling (解码采样): 模型预测下一个词时,不是总选概率最高的,而是根据概率分布进行采样。Temperature (温度) 参数控制采样的随机性:
T
T > 1: 更可能选低概率词,输出更多样、有创意。
Chain-of-Thought (CoT, 思维链): 让模型在回答复杂问题前,先输出一步步的推理过程,能显著提高准确率。Tree of Thoughts (ToT) 是更复杂的版本。Self-consistency 是通过多条 CoT 路径投票选出最终答案的方法。
3.3 Finetuning (微调)
SFT (Supervised Fine Tuning, 监督微调): 使用高质量的“指令-回答”数据对预训练模型进行微调,使其遵循指令。如果数据是指令形式,也叫“指令微调”。
PEFT (Parameter-Efficient Fine Tuning, 参数高效微调): 只微调模型的一小部分参数,大大降低计算和存储成本。
LoRA (Low-Rank Adaptation): 核心思想是冻结预训练模型的主体权重 W0,旁边加两个小的、可训练的低秩矩阵 A 和 B (W ≈ W0 + BA)。微调时只训练 A 和 B。非常流行!
其他 PEFT 方法: Prefix Tuning, Adapter Layers 等。
3.4 Preference Tuning (偏好调整)
Reward Model (RM, 奖励模型): 训练一个模型来评估 LLM 输出的好坏(符合人类偏好的程度),给出一个分数。
Best-of-N (BoN) Sampling: 让 LLM 生成 N 个候选答案,用 RM 打分,选最高分的那个。
Reinforcement Learning (RL, 强化学习): 使用 RM 的评分作为奖励信号,通过 RL 算法 (如 PPO) 更新 LLM,使其倾向于生成高分答案。RLHF (Reinforcement Learning from Human Feedback) 指 RM 的训练数据来自人类对答案对的偏好排序。
PPO (Proximal Policy Optimization): 流行的 RL 算法,在提高奖励的同时防止模型偏离原始模型太远。
DPO (Direct Preference Optimization): 一种用监督学习方式直接从偏好数据中学习策略的方法,可以替代 RM+RL 的步骤。
3.5 Optimizations (优化)
Mixture of Experts (MoE, 混合专家): 模型包含多个“专家”子网络 (通常是 FFNN),对于每个输入的 Token,一个“门控网络”(Gating Network) 会选择激活一小部分(如 2 个)最相关的专家来处理。
优势: 大大增加模型参数规模的同时,保持单个样本的推理计算量不变,推理速度快。
挑战: 训练不稳定且复杂。
Distillation (蒸馏): 用一个训练好的、强大的“教师模型”(Teacher Model) 来指导训练一个更小的“学生模型”(Student Model)。学生模型学习模仿教师模型的输出概率分布 (软标签),而不是仅仅学习真实标签 (硬标签)。损失函数常用 KL 散度。
第 4 部分:应用 (Applications)
Quantization (量化)
概念: 降低模型权重参数的数值精度(如从 16 位浮点数降到 8 位整数),减少模型大小和内存占用,加速推理。
4.1 LLM-as-a-Judge (LaaJ, LLM 作为裁判)
定义: 用一个强大的 LLM 来评估另一个 LLM 的输出质量,根据给定标准打分并给出理由。
优势: 无需人工标注的参考答案,方便快捷。
挑战/偏见:
Position Bias (位置偏见): 可能偏爱成对比较中第一个出现的答案。
Verbosity Bias (冗长偏见): 可能偏爱更长的答案。
Self-enhancement Bias (自我拔高偏见): 可能偏爱自己(或同源模型)生成的答案。
可以通过微调定制 LaaJ 模型,或在评估时采取策略(如随机打乱顺序、对长度加惩罚等)。
4.2 RAG (Retrieval-Augmented Generation, 检索增强生成)
定义: 让 LLM 在回答问题前,先从一个外部知识库 (Knowledge Base) 中检索相关的最新信息,并将这些信息整合到 Prompt 中,再生成答案。
优势: 解决 LLM 知识陈旧、容易“一本正经地胡说八道”的问题。
流程:
Retrieve (检索): 根据用户问题,在文档库(通常被切块并 Embedding)中找到最相关的几段文本。
Augment (增强): 将检索到的文本加入到原始问题的 Prompt 中。
Generate (生成): LLM 基于增强后的 Prompt 生成答案。
4.3 Agents (智能体)
定义: 能够自主理解目标、制定计划、并调用工具 (如 API、代码执行器、知识库) 来完成复杂任务的系统,其核心驱动引擎通常是 LLM。
ReAct (Reason + Act, 思考+行动): 一个流行的 Agent 框架,通过 LLM 进行“思考”(分析现状、制定计划) 和“行动”(调用工具、执行操作) 的循环来完成任务。
步骤: Observe (观察现状) -> Plan (规划下一步) -> Act (执行动作)。
挑战: 评估 Agent 的整体表现比较困难。
4.4 Reasoning Models (推理模型)
定义: 专门设计或优化用于解决需要复杂逻辑推理任务 (如数学、编程、逻辑题) 的模型,通常严重依赖 CoT (思维链) 能力。
例子: OpenAI 的 o 系列 (可能是指内部模型或特定版本), DeepSeek-R1, Google Gemini Flash Thinking。
DeepSeek-R1 特点: 会显式地在 和 标签之间输出其推理过程。
Scaling (扩展推理能力):
Train-time Scaling (训练时扩展): 通过更长时间的 RL 训练,让模型学会生成更好的 CoT 推理路径。
Test-time Scaling (测试时扩展): 在推理时给予模型更多“思考时间”或资源(如强制生成更长的思考步骤或使用特定关键词如 "Wait" 触发更深思考),再输出最终答案。
Transformer 和 LLM 的世界既深邃又迷人,这份笔记为我们提供了一个非常好的学习框架。从基础的 Token、Embedding,到核心的 Attention 机制、模型架构,再到 LLM 的训练、优化和各种前沿应用,几乎涵盖了所有关键点。希望这篇解读能帮助大家更好地理解 Transformer 和大型语言模型。
cme295.stanford.eduAfshine Amidi & Shervine Amidi, Stanford University来源:人工智能研究所