第1章:引言与历史脉络——从统计语言模型到Transformer革命
语言建模作为自然语言处理(NLP)领域的基石任务,旨在对词序列的概率分布进行建模,其发展历程不仅反映了算法范式的迭代,更体现了计算效率与表示能力之间永恒的张力。从早期的统计方法到深度学习革命,再到以Transformer为核心的现代大语言模型,每一次技术跃迁都源于对前序方法根本局限的深刻认知与突破。本章将系统梳理这一演进脉络,揭示从n-gram的稀疏计数到Transformer的稠密注意力之间,人类如何逐步解锁序列建模的潜能,并为理解大语言模型的涌现现象奠定历史与理论基础。这一回顾并非简单的编年史,而是聚焦于核心矛盾的演化:如何高效捕获长距离依赖、如何实现可扩展的并行训练、如何构建具有泛化能力的语义表示。
统计语言模型:基于频率的朴素智慧与数据稀疏诅咒
n-gram模型的核心原理与马尔可夫假设
统计语言模型的奠基性工作是n-gram模型,其核心思想是利用马尔可夫假设来简化序列概率的计算。一个n-gram模型假设当前词的出现仅依赖于前n-1个词,即满足一阶马尔可夫链的推广。给定一个词序列 $w_1, w_2, ..., w_T$,其联合概率可分解为条件概率的乘积: $$ P(w_1, w_2, ..., w_T) = \prod_{t=1}^{T} P(w_t | w_{t-n+1}^{t-1}) $$ 其中 $w_{t-n+1}^{t-1}$ 表示从第 $t-n+1$ 到第 $t-1$ 个词的历史上下文。当 $n=1$ 时,模型退化为unigram,即每个词独立出现;当 $n=2$ 时,为bigram,依赖前一个词;$n=3$ 为trigram,依此类推。参数估计通过最大似然估计(MLE)在大型语料库上完成: $$ P_{MLE}(w_t | w_{t-n+1}^{t-1}) = \frac{C(w_{t-n+1}^{t})}{C(w_{t-n+1}^{t-1})} $$ 这里 $C(\cdot)$ 表示n-gram在语料中的计数。例如,对于三元模型“今天天气很”,预测下一个词“好”的概率为“今天天气很好”的计数除以“今天天气很”的计数。
n-gram模型的优势在于其计算高效、实现简单,且无需复杂训练,仅需一次语料扫描即可构建概率表。在20世纪90年代至21世纪初,它是语音识别、机器翻译等任务的主流语言模型,支撑了如IBM语音翻译系统、Google早期搜索等工业应用。
数据稀疏性与维度灾难
然而,n-gram模型面临一个根本性挑战:数据稀疏性(Data Sparsity)。由于自然语言词汇量庞大(通常数万至数十万),n-gram的组合空间随n呈指数增长。即使使用大规模语料,绝大多数可能的n-gram从未出现,导致其MLE概率为零。例如,在trigram模型中,若历史“人工智能的”在训练集中仅出现一次且后续词为“发展”,则“人工智能的”后接任何其他词的概率均为零,这显然不符合语言的实际概率分布。
为缓解此问题,研究者发展了多种平滑技术(Smoothing),旨在将零概率质量分配给未出现的n-gram。常见方法包括:
- **加一平滑**(Laplace Smoothing):为所有计数加1,但分配过于均匀,在大型词汇表上效果差。
- **Good-Turing估计**:利用出现k次的n-gram数量来估计出现一次的概率,更精细但计算复杂。
- **Kneser-Ney平滑**:将概率质量分配给低阶n-gram,并考虑上下文的多样性,在工业界长期被视为最优方法之一。
尽管平滑技术部分缓解了零概率问题,但n-gram模型仍受制于局部上下文窗口。n通常取2-5,因为更大的n会导致计数急剧减少,模型几乎完全依赖平滑估计,失去统计意义。这意味着模型无法捕获超过n-1距离的依赖关系。例如,在句子“我出生于1990年,那年发生了许多大事,因此我对此印象深刻”中,“因此”的语义依赖于开头的“1990年”,但若n=5,该长距离依赖无法被直接建模。这种短视性是n-gram模型的本质缺陷,源于其严格的马尔可夫假设。
语义缺失与泛化能力薄弱
更深层地,n-gram模型是表面形式的计数工具,完全缺乏语义表示能力。它将每个词视为离散符号,无法建立词与词之间的语义关联。例如,“汽车”和“轿车”在模型中是完全不同的符号,即使它们语义相近,也无法共享统计强度。这导致模型对同义词、近义词的泛化能力极差,且无法处理未登录词(Out-of-Vocabulary, OOV)问题。
此外,n-gram模型的概率估计严重依赖训练语料的领域和风格。在特定领域训练的模型应用于新领域时,性能往往急剧下降,因为词汇分布和n-gram模式可能完全不同。这种领域脆弱性限制了其通用性。
综上所述,n-gram模型在计算效率和简单性上具有优势,但其数据稀疏性、短视上下文窗口、语义缺失和泛化能力薄弱等根本局限,推动了更强大的表示学习方法的诞生。神经网络语言模型应运而生,旨在通过连续向量空间克服这些挑战。
神经网络语言模型:序列建模的探索与长程依赖的幽灵
神经语言模型的奠基:从分布式假设到NNLM
21世纪初,神经网络在NLP中的应用开始萌芽。2003年,Bengio等人提出神经网络语言模型(Neural Network Language Model, NNLM),首次将词表示为连续向量(词嵌入),并利用神经网络建模条件概率。NNLM的核心创新在于分布式假设:语义相似的词在向量空间中距离相近,从而实现了从离散符号到稠密表示的转变。
NNLM的结构包含三个部分:输入层将上下文词映射为嵌入向量并拼接;隐藏层通过非线性变换(如tanh)整合信息;输出层通过softmax计算下一个词的概率分布。参数通过反向传播联合训练,词嵌入和网络权重同时优化。这一设计使得模型能够泛化到未出现的n-gram:即使某个具体历史组合未见过,只要其组成词与训练数据中的历史有相似嵌入,模型就能给出合理概率估计。
NNLM开启了神经语言模型的先河,但其训练和推理仍需考虑固定长度的上下文(如前n-1个词),且输出层的softmax计算在词汇表较大时(如10万词)非常昂贵,需通过分层softmax或噪声对比估计等技术优化。
RNN的链式结构:理论上无限上下文
循环神经网络(Recurrent Neural Network, RNN)为语言建模带来了根本性变革。RNN的核心设计是循环连接,允许信息在时间步之间持续传递。给定输入序列 $x_1, x_2, ..., x_T$,RNN在每一步t计算隐藏状态 $h_t$: $$ h_t = f(W_{xh} x_t + W_{hh} h_{t-1} + b_h) $$ 其中 $f$ 通常为tanh或ReLU激活函数,$W_{xh}$ 和 $W_{hh}$ 为权重矩阵,$b_h$ 为偏置。隐藏状态 $h_t$ 理论上可包含从 $t=1$ 到当前步的所有历史信息,从而突破n-gram的固定窗口限制,实现理论上无限长度的上下文建模。
在语言建模中,RNN以自回归方式逐词预测:每一步输入当前词,输出下一个词的概率分布。训练通过随时间反向传播(BPTT)展开时间步,计算梯度并更新参数。RNN的链式结构使其成为处理序列数据的自然选择,在2010年代初期被广泛用于语言建模、语音识别等任务。
梯度消失与爆炸:长序列的隐形杀手
然而,RNN在实践中遭遇了严重的梯度消失(Vanishing Gradient)和梯度爆炸(Exploding Gradient)问题。BPTT的梯度通过时间步反向传播时,涉及权重矩阵 $W_{hh}$ 的连乘。若 $W_{hh}$ 的特征值绝对值小于1,连乘会导致梯度指数级衰减至零(消失);若大于1,则梯度指数级增长(爆炸)。这使得RNN难以学习长距离依赖,因为远距离时间步的梯度几乎为零,参数无法有效更新。
梯度问题的根源在于RNN的线性递归 $h_t = W_{hh} h_{t-1} + ...$ 中,$W_{hh}$ 的幂次主导了长期动态。即使使用非线性激活函数,连乘效应依然存在。实践中,梯度爆炸可通过梯度裁剪缓解,但梯度消失更为棘手。这意味着RNN实际上只能有效记忆短距离依赖(通常几十个时间步),长程信息在传播中逐渐丢失。例如,在句子“我在法国长大,...(数百词后)...所以我说法语”中,RNN很难将“法国”与“法语”关联起来。
LSTM与GRU:门控机制的救赎与残余瓶颈
为克服梯度消失,长短期记忆网络(Long Short-Term Memory, LSTM)于1997年提出,并在2010年代成为RNN的主流变体。LSTM引入了门控机制,通过精心设计的“细胞状态”(Cell State) $C_t$ 和三个门(输入门 $i_t$、遗忘门 $f_t$、输出门 $o_t$)来控制信息流: $$ \begin{aligned} f_t &= \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) \\ i_t &= \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \\ \tilde{C}_t &= \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) \\ C_t &= f_t \odot C_{t-1} + i_t \odot \tilde{C}_t \\ o_t &= \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) \\ h_t &= o_t \odot \tanh(C_t) \end{aligned} $$ 其中 $\sigma$ 为sigmoid函数,$\odot$ 为逐元素乘法。遗忘门决定丢弃哪些历史信息,输入门决定新信息的加入,输出门决定当前输出。细胞状态 $C_t$ 的更新是线性的($f_t \odot C_{t-1} + i_t \odot \tilde{C}_t$),梯度可沿其直接传播,大幅缓解了梯度消失。理论上,LSTM可捕获数百步的依赖。
门控循环单元(Gated Recurrent Unit, GRU)是LSTM的简化变体,合并了遗忘门和输入门为更新门,并引入了重置门,参数更少,训练更快,在许多任务上表现与LSTM相当。
LSTM和GRU显著提升了RNN处理长序列的能力,在机器翻译、文本生成等任务中取得了当时的最佳结果。然而,它们仍面临固有瓶颈: 1. 序列计算不可并行:每一步依赖前一步的隐藏状态,必须顺序计算,无法利用GPU的并行能力,导致训练速度慢,难以扩展至超长序列和大规模数据。 2. 信息瓶颈:隐藏状态 $h_t$ 是固定维度的向量,需压缩所有历史信息,长序列中可能丢失细节。 3. 梯度问题未完全解决:尽管门控缓解了梯度消失,但极端长序列(如数千步)中,梯度仍可能衰减,且门控的饱和区(sigmoid输出接近0或1)可能导致梯度进一步减小。 4. 长程依赖仍脆弱:实验表明,LSTM在超过100-200步的依赖上性能下降,尤其在需要精确记忆早期信息时。
这些局限性表明,循环架构本身可能不是处理超长序列的最优解。一个根本性的范式转变正在酝酿:放弃循环,拥抱注意力。
Transformer革命:注意力机制与并行化的范式转变
背景:机器翻译的瓶颈与注意力的萌芽
2014-2016年,基于RNN的序列到序列(Seq2Seq)框架在机器翻译中占据主导。编码器将源序列压缩为固定向量(上下文向量),解码器基于此生成目标序列。但固定向量成为信息瓶颈,尤其对长句子,解码器难以获取完整的源信息。注意力机制(Attention Mechanism)由Bahdanau等人于2014年提出,允许解码器在每一步动态关注源序列的不同位置,显著提升了翻译质量。随后,Luong等人提出更高效的全局和局部注意力。注意力证明:让模型学会“聚焦”于相关部分,比强制压缩所有信息更有效。
然而,这些注意力机制仍与RNN耦合,计算仍为序列式。2017年,Vaswani等人发表里程碑论文《Attention Is All You Need》,提出完全基于注意力的Transformer架构,彻底摒弃循环和卷积,实现了并行化与长程依赖建模的统一。
自注意力:核心思想的数学表达
Transformer的核心是自注意力(Self-Attention)机制。给定输入序列 $X = [x_1, ..., x_n]$,其中每个 $x_i$ 为词嵌入向量,自注意力并行计算所有位置间的关联强度。首先,通过线性变换生成查询(Query)、键(Key)、值(Value)矩阵: $$ Q = XW_Q, \quad K = XW_K, \quad V = XW_V $$ 其中 $W_Q, W_K, W_V \in \mathbb{R}^{d \times d_k}$ 为可学习参数(通常 $d_k = d_v = d/h$,h为头数)。然后,计算注意力分数: $$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$ 分数矩阵 $QK^T$ 的每个元素 $q_i \cdot k_j$ 衡量位置i对位置j的“关注度”。除以 $\sqrt{d_k}$ 是为了稳定梯度(点积过大导致softmax饱和)。softmax归一化后,得到注意力权重,对值向量 $V$ 加权求和,输出每个位置的上下文相关表示。
缩放点积注意力的关键优势在于:
- **长程依赖直接建模**:任意两位置间一步计算,路径长度恒为1,梯度可直接流动,完美解决长程依赖问题。
- **并行计算**:所有位置的 $Q, K, V$ 计算可同时进行,无序列依赖,极大加速训练。
- **可解释性**:注意力权重可可视化,揭示模型聚焦模式。
多头注意力与位置信息注入
单一注意力可能局限于一种关联模式。多头注意力(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_Q^i, KW_K^i, VW_V^i)$。多头允许模型在不同表示子空间联合关注不同类型的关系,如句法、语义、指代等,增强了表示能力。
然而,自注意力本身是置换不变的:打乱输入顺序,输出仅元素重排,无法捕获序列顺序。为解决此问题,Transformer引入位置编码(Positional Encoding)。原始论文使用正弦余弦函数: $$ PE_{(pos,2i)} = \sin(pos/10000^{2i/d}), \quad PE_{(pos,2i+1)} = \cos(pos/10000^{2i/d}) $$ 这为每个位置生成唯一编码,且允许模型学习相对位置(因函数是确定的)。后续工作也使用可学习的位置嵌入。位置编码加到词嵌入上,使模型同时拥有内容和位置信息。
编码器-解码器架构与全连接前馈网络
Transformer采用经典的编码器-解码器结构,但均基于自注意力和前馈网络。
- **编码器**:由N个相同层堆叠。每层包含:1) 多头自注意力(带残差连接和层归一化);2) 位置式全连接前馈网络(两个线性变换加ReLU):
$$ \text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2 $$ 同样带残差和层归一化。编码器输出上下文表示 $Z$。
- **解码器**:同样N层。每层包含:1) 带掩码的多头自注意力(防止当前位置关注未来位置);2) 对编码器输出的交叉注意力;3) 前馈网络。解码器自回归生成输出序列。
残差连接(Residual Connection)和层归一化(Layer Normalization)是训练稳定性的关键。残差连接缓解梯度消失,层归一化加速收敛。整体架构清晰、模块化,为后续变体奠定基础。
为什么Transformer是革命性的?
与RNN/LSTM相比,Transformer实现了三重突破: 1. 长程依赖无衰减:任意两位置间路径长度为1,梯度直接传播,完美解决梯度消失问题。实验表明,Transformer可轻松捕获数百步依赖,远超LSTM。 2. 训练并行化:序列所有位置同时处理,GPU利用率极高。训练速度比RNN快一个数量级,使大规模语料训练成为可能。 3. 表示能力强大:多头注意力可学习多种关系模式,前馈网络增强非线性。整体模型容量大,易于扩展。
当然,Transformer也有其代价:自注意力计算复杂度为 $O(n^2 d)$(序列长度n,维度d),对超长序列(如长文档、基因组)不友好,催生了后续的稀疏注意力、线性注意力等变体。但就当时而言,它完美平衡了长程建模与计算效率,成为大语言模型的完美基石。
大语言模型的发展阶段:从预训练到涌现与对齐
阶段一:预训练-微调范式的确立(2017-2019)
Transformer发表后,研究者迅速将其应用于各类NLP任务。2018年,两篇开创性论文奠定了现代大语言模型的基础:
- **BERT**(Bidirectional Encoder Representations from Transformers):仅使用编码器,通过**掩码语言模型**(Masked LM)预训练:随机掩盖输入词,预测被掩词。双向上下文使其在理解类任务(如分类、问答)上表现卓越。
- **GPT**(Generative Pre-trained Transformer):仅使用解码器,采用**自回归语言模型**预训练:给定上文,预测下一个词。单向性使其在生成任务上自然适配。
两者均采用预训练-微调范式:先在无标注大规模语料上预训练,学习通用语言表示;再在特定任务的小规模标注数据上微调,适配下游应用。这一范式极大减少了对任务特定架构和标注数据的依赖,展示了迁移学习的巨大潜力。
此阶段模型规模适中(BERT-base: 110M参数;GPT-1: 117M参数),但性能已显著超越之前方法。研究焦点在架构改进(如ALBERT的跨层参数共享)、预训练目标(如SpanBERT、XLNet的排列语言模型)和领域适应。
阶段二:Scaling Law与大模型涌现(2020-2021)
2020年,OpenAI发布GPT-3(1750亿参数),震惊学