第1章:大语言模型基础 | Chapter 1: Foundations of Large Language Models
大语言模型(Large Language Models, LLMs)正以前所未有的速度重塑我们与信息技术的互动方式。从简单的文本补全到复杂的逻辑推理、代码生成和多轮对话,这些模型展现出令人惊叹的通用能力。然而,要真正驾驭它们,理解其内在原理是第一步。本章将带你深入大语言模型的核心,揭示驱动这些“智能”系统的科学基础,为你后续学习提示工程——这门与LLM高效对话的艺术——奠定坚实的理论基石。我们将一起探索:是什么让Transformer架构成为现代LLM的引擎?预训练如何赋予模型“通用智能”?微调怎样将这种通用智能导向特定任务?模型规模的增长为何会带来“涌现能力”?以及,这些强大工具固有的局限性是什么?通过贯穿始终的中英双语案例,你将亲眼目睹不同规模模型在相同提示下的表现差异,从而获得对LLM能力边界的直观体感。
---
1. 从统计语言模型到Transformer的演进:一场范式革命
在理解当前的大语言模型之前,有必要回顾其演进历程。早期的自然语言处理严重依赖统计语言模型,特别是N元语法(N-gram)。其核心思想是:一个词出现的概率取决于它前面N-1个词。例如,在一个三元语法模型中,句子“今天天气很”后面最可能接“好”,是因为在训练语料中,“天气很”后面经常出现“好”。这种模型简单、高效,但存在致命缺陷:数据稀疏性(未出现的N元组概率为零)和上下文窗口狭窄(无法捕捉长距离依赖)。例如,在句子“我住在北京,那里___”中,要预测空白处的词,需要知道“北京”是城市,而N元语法很难在长达十几个词的间隔中建立这种联系。
随后,神经网络语言模型,特别是基于循环神经网络(RNN) 及其变体长短期记忆网络(LSTM) 和门控循环单元(GRU) 成为主流。它们通过循环结构理论上可以处理任意长度的序列,并捕捉一定程度的上下文信息。然而,RNN架构存在两个固有瓶颈: sequential computation(顺序计算) 导致训练难以并行化,效率低下;以及梯度消失/爆炸问题,使得模型难以学习长程依赖关系。尽管LSTM/GRU通过门控机制缓解了这一问题,但处理超长序列时性能依然会衰减。
2017年,Google的研究团队在论文《Attention Is All You Need》中提出了Transformer架构,彻底改变了序列建模的范式。其核心洞见是:完全依赖自注意力机制(Self-Attention)来建模序列元素之间的关系,完全摒弃了循环和卷积结构。这一设计带来了革命性优势:高度并行化(所有位置可同时计算)、强大的长程依赖建模能力(任意两个位置的距离在自注意力层中都是1),以及可扩展性(模型深度和宽度可独立增加)。Transformer不仅是GPT、BERT等现代LLM的基石,其思想也渗透到了计算机视觉、生物信息学等领域。可以说,没有Transformer,就没有今天的大语言模型繁荣。
> 侧边栏:中英术语对照 > - Large Language Model (LLM):大语言模型 > - Transformer:Transformer架构/变换器 > - Pre-training:预训练 > - Fine-tuning:微调 > - Emergent Ability:涌现能力 > - Hallucination:幻觉 > - Prompt:提示
---
2. Transformer架构详解:自注意力的力量
Transformer的核心是自注意力机制(Self-Attention)。想象一下阅读一句话:“The animal didn't cross the street because it was too wide.” 代词“it”指代“street”还是“animal”?要理解这一点,人类会本能地将“it”与“street”和“animal”同时关联,并判断“street”更可能“宽”,而“animal”通常不直接用“宽”形容。自注意力机制正是模拟这一过程:计算序列中每个词与其他所有词的相关性权重,然后根据这些权重聚合信息,为每个词生成一个富含上下文的新表示。
2.1 自注意力的数学本质
对于输入序列 $X = [x_1, x_2, ..., x_n]$,其中每个 $x_i$ 是一个词向量(例如,维度为 $d_{model}$)。自注意力层首先通过三个可学习的权重矩阵 $W^Q, W^K, W^V$,将每个 $x_i$ 映射为查询(Query) $q_i$、键(Key) $k_i$ 和值(Value) $v_i$: $$ Q = XW^Q,\quad K = XW^K,\quad V = XW^V $$ 然后,计算注意力分数(Attention Scores),即查询与所有键的点积,衡量词 $i$ 对词 $j$ 的关注程度: $$ \text{Attention Score}(i, j) = q_i \cdot k_j $$ 为防止点积过大导致梯度不稳定,分数除以 $\sqrt{d_k}$($d_k$ 是键向量的维度): $$ \text{Scaled Scores} = \frac{QK^T}{\sqrt{d_k}} $$ 接着,通过Softmax函数将分数归一化为概率分布(权重): $$ \text{Attention Weights} = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) $$ 最后,用这些权重对值向量 $V$ 进行加权求和,得到该位置的输出: $$ \text{Output} = \text{Attention Weights} \cdot V $$ 这个输出向量融合了整个序列的上下文信息,其维度与输入 $x_i$ 相同($d_{model}$)。
2.2 多头注意力:捕捉多元关系
单一的自注意力层可能只学会一种“关注模式”。例如,在“The doctor called on the patient because she was sick”中,“she”可能指代“doctor”(如果医生是女性)或“patient”。模型需要同时捕捉“医生-患者”的职业关系和“she-医生/患者”的性别指代关系。多头注意力(Multi-Head Attention) 机制将 $Q, K, V$ 投影到多个不同的子空间(多个“头”),每个头独立学习一种关注模式,最后将多个头的输出拼接并线性变换: $$ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O $$ 其中 $\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)$。通常 $h=8$ 或 $12$。这允许模型同时关注不同位置、不同方面的信息,极大地增强了表达能力。
2.3 架构全景:编码器-解码器与仅解码器
原始的Transformer是编码器-解码器(Encoder-Decoder) 结构,适用于序列到序列任务(如机器翻译)。编码器由N个相同层堆叠,每层包含多头自注意力子层和前馈神经网络子层,中间有残差连接(Residual Connection)和层归一化(Layer Normalization)。其作用是将输入序列编码为富含上下文的表示。解码器同样由N层堆叠,但每层包含三个子层:掩码多头自注意力(确保预测位置只能依赖左侧已生成词)、编码器-解码器注意力(让解码器关注编码器的输出)和前馈网络。解码器自回归地生成输出序列。
然而,当今最著名的LLM(如GPT系列)采用仅解码器(Decoder-Only) 架构。它们移除了编码器-解码器注意力层,仅使用掩码自注意力。这种架构天然适合自回归语言建模任务:给定上文,预测下一个词。通过在海量文本上进行这种训练,模型学会了语法、事实、推理模式乃至某种程度的“世界知识”。BERT则采用仅编码器(Encoder-Only) 架构,通过掩码语言建模(预测被掩码的词)学习双向上下文表示,在理解类任务(如分类、问答)上表现卓越。
```mermaid graph TD A[输入序列] --> B[嵌入层 + 位置编码] B --> C{Transformer架构选择} C --> D[仅解码器<br/>GPT系列] C --> E[仅编码器<br/>BERT系列] C --> F[编码器-解码器<br/>原始Transformer/T5]
D --> G[掩码自注意力] G --> H[前馈网络] H --> I[层归一化与残差连接] I --> J[堆叠N层] J --> K[输出表示]
E --> L[双向自注意力] L --> M[前馈网络] M --> N[层归一化与残差连接] N --> O[堆叠N层] O --> P[上下文表示]
F --> Q[编码器堆栈] Q --> R[解码器堆栈<br/>含掩码自注意力和<br/>编码器-解码器注意力] R --> S[输出序列] ```
---
3. 预训练:赋予模型通用智能的“基础课程”
预训练是LLM开发中最关键、最昂贵的阶段。其核心思想是:在 massive 的、无标注的文本数据上,通过一个自监督学习目标,训练模型掌握语言的通用规律和世界知识。这个过程不针对任何特定下游任务,旨在构建一个强大的“基础模型(Foundation Model)”。
3.1 核心预训练目标
自回归语言建模(Autoregressive Language Modeling) 是仅解码器模型(如GPT系列)的目标。模型被训练来预测序列中下一个词的概率: $$ P(x_t | x_{<t}) = \text{softmax}(W \cdot h_t + b) $$ 其中 $h_t$ 是模型在位置 $t$ 的隐藏状态。损失函数是序列所有位置预测的交叉熵之和。通过这个看似简单的任务,模型被迫学习语法结构(主谓宾)、事实知识(“巴黎是法国的首都”)、常识(“水在0°C结冰”)甚至简单的推理(“如果A>B且B>C,则A>C”)。
掩码语言建模(Masked Language Modeling, MLM) 是仅编码器模型(如BERT)的目标。随机掩盖输入中一定比例(通常15%)的词,然后训练模型根据上下文预测这些被掩盖的词。这个双向目标使BERT能更好地理解词在上下文中的含义,在需要深度理解的任务上优势明显。
其他目标还包括:前缀语言建模(如PaLM,区分前缀和待生成后缀)、去噪自编码(如T5,将 corrupted 文本恢复为原始文本)、统一语言建模(如UL2,混合多种目标)等。这些目标的共同点是:设计一个无法通过简单记忆解决的“预文本(Pretext)”任务,迫使模型学习语言的深层结构。
3.2 数据、数据、还是数据
预训练数据的规模和质量直接决定模型能力的上限。现代LLM通常在数万亿词元(Token) 上训练。数据来源包括:
- **网页文本**(Common Crawl):最大来源,涵盖广泛但噪声大。
- **书籍和学术论文**(BookCorpus, arXiv, PubMed):高质量、结构化、知识密集。
- **代码仓库**(GitHub):学习编程逻辑和结构化表达。
- **对话数据**(Reddit, 社交媒体):学习交互模式和口语化表达。
- **多语言数据**:赋予模型跨语言能力。
数据清洗和过滤至关重要:去除低质量、重复、有害内容,进行语言识别、质量评分(如基于困惑度)、去重(如MinHash算法)等。数据配比也影响模型特性:增加书籍比例可能提升知识性,增加代码比例可能提升逻辑性。
3.3 训练过程与计算规模
预训练是计算密集型任务。以GPT-3为例,在约3000亿词元的文本上训练一个1750亿参数模型,使用了上万块GPU/TPU,耗时数周,成本高达数百万美元。训练过程涉及: 1. 初始化:模型参数随机初始化(如正态分布)。 2. 前向传播:输入一批数据,计算预测和损失。 3. 反向传播:计算梯度(通常使用混合精度训练和梯度检查点以节省内存)。 4. 优化器更新:使用AdamW等优化器更新参数,配合学习率调度器(如余弦衰减、热身阶段)。 5. 迭代:重复直到收敛或达到预定步数。
模型缩放定律(Scaling Laws) 是近年来最重要的发现之一(由OpenAI提出)。研究表明,模型性能(测试损失)可预测地随模型参数量(N)、训练数据量(D) 和训练计算量(C) 增加而提升,关系近似为: $$ L(N, D) = \left(\frac{N_c}{N}\right)^{\alpha_n} + \left(\frac{D_c}{D}\right)^{\alpha_d} + L_0 $$ 其中 $N_c, D_c$ 是临界规模,$\alpha_n, \alpha_d$ 是指数,$L_0$ 是不可约损失。这意味着,只要按比例增加模型、数据和计算,性能就能持续提升,这解释了为何 industry 竞相训练更大模型。
---
4. 微调:从通用智能到专用专家
预训练模型是一个拥有通用语言知识和推理能力的“通才”,但可能不擅长特定任务(如情感分析、法律问答)或遵循特定指令(如“用莎士比亚风格写诗”)。微调(Fine-tuning) 是在预训练模型基础上,使用少量标注数据或指令数据进行额外训练,以适应下游任务或行为模式的过程。
4.1 有监督微调
最直接的方式是有监督微调(Supervised Fine-Tuning, SFT)。针对特定任务(如文本分类),准备输入-输出对(如“电影评论:这部电影太棒了! -> 情感:积极”),在预训练模型顶部添加一个任务特定头(如分类层),然后在整个模型(或仅顶部层)上训练,最小化任务损失(如交叉熵)。这个过程会“覆盖”部分预训练知识,使模型更专注于该任务。SFT数据通常需要人工标注,成本较高。
4.2 指令微调与指令遵循
为了让模型理解并遵循人类指令(如“总结这篇文章”、“用Python写一个快速排序”),需要进行指令微调(Instruction Tuning)。这需要构建指令-响应对的数据集,例如: ``` 指令:将以下中文翻译成英文。 输入:今天天气真好。 输出:The weather is really nice today. ``` 著名的FLAN数据集汇集了多种任务的指令形式。在SFT数据上微调后,模型能更好地将提示中的指令识别为任务,而非普通文本 continuation。这是实现“对话式AI”的关键一步。
4.3 基于人类反馈的强化学习
仅靠SFT,模型可能仍会产生有害、无用或不真实的内容。基于人类反馈的强化学习(Reinforcement Learning from Human Feedback, RLHF) 进一步提升了模型与人类价值观的对齐(Alignment)。其流程通常包括三步: 1. 训练奖励模型(Reward Model, RM):收集人类对多个模型输出的偏好排序(A比B好),训练一个模型来预测人类偏好分数。 2. 强化学习微调:使用近端策略优化(PPO) 等算法,以奖励模型给出的分数为优化目标,微调语言模型,使其生成更符合人类偏好的文本。 3. 迭代:重复收集偏好数据、训练RM、RL微调,逐步提升。
RLHF是ChatGPT等对话模型能够进行有用、无害、尊重的对话的核心技术。类似技术还有基于AI反馈的强化学习(RLAIF),使用AI模型(如 Claude)替代人类提供反馈,降低成本。
4.4 参数高效微调
全参数微调成本极高(需要存储所有参数的梯度)。参数高效微调(Parameter-Efficient Fine-Tuning, PEFT) 技术仅更新少量额外参数,保持原始模型冻结,大幅降低计算和存储成本。主流方法包括:
- **适配器(Adapter)**:在Transformer层间插入小型可训练神经网络模块。
- **LoRA(Low-Rank Adaptation)**:假设权重更新的增量具有低秩结构,用两个小矩阵的乘积近似,仅训练这些低秩矩阵。
- **提示调优(Prompt Tuning)** / **前缀调优(Prefix-Tuning)**:在输入序列前可优化的虚拟词元(软提示),不改变模型参数。
这些技术使得在消费级GPU上微调大模型成为可能,是提示工程实践中模型定制化的重要手段。
---
5. 模型能力与涌现现象:规模带来的质变
LLM最令人着迷的特性之一是涌现能力(Emergent Ability):当模型规模(参数量、数据量、计算量)超过某个阈值后,模型会突然表现出在小模型上不存在的、全新的能力。这些能力不是通过特定任务训练“教会”的,而是 scaling 过程中“自发产生”的。
5.1 什么是涌现能力?
涌现能力指在小型模型上不存在,但在大型模型上突然出现的能力。其关键特征是:性能随模型规模增长而相对平稳,直到某个临界规模,性能曲线突然陡峭上升。这不是简单的性能提升,而是能力的“解锁”。典型涌现能力包括:
- **上下文学习(In-Context Learning)**:仅通过提示中的几个示例( demonstrations),模型就能在测试时执行新任务,无需梯度更新。这是GPT-3的标志性能力。
- **指令遵循(Instruction Following)**:理解并执行自然语言指令,即使指令在训练数据中罕见。
- **思维链推理(Chain-of-Thought Reasoning)**:面对复杂数学或逻辑问题,模型能生成逐步推理的中间步骤,从而解决问题。小模型直接输出错误答案。
- **代码生成与调试**:根据描述生成可运行代码,甚至解释错误。
- **工具使用(Tool Use)**:学会调用外部API、计算器或搜索引擎。
5.2 涌现的机制:一种猜想
涌现现象的机制尚未完全阐明,但主流猜想与Transformer的架构特性和规模带来的表示能力提升有关