前言
2023年以来,ChatGPT、GPT-4、Claude、Llama 这些名字频繁出现在我们的视野中。它们能写代码、翻译文档、创作故事,甚至通过律师资格考试------这一切能力的核心引擎,就是大语言模型(Large Language Model, LLM) 。
但如果你以为大语言模型是某一天突然从实验室里"蹦"出来的,那就错过了一个持续四十多年的精彩故事。从概率统计到神经网络,从循环结构到注意力机制,这条路是一代代研究者不断发现问题、提出方案、再发现新问题的迭代过程。
本文面向对 AI 感兴趣但尚未深入技术细节的读者。我会尽量用直觉和类比来解释核心概念,同时不牺牲技术上的准确性。读完你会对"GPT 到底是什么"以及"它为什么这么强"有一个结构化的理解。
一、语言的概率游戏:统计语言模型与N-gram
语言模型到底在做什么?
想象一个日常场景:你在手机上打字,输入法自动给出下一个词的候选。你输入"今天天气真",它提示"好""热""冷"。这个自动补全的背后,就是一个语言模型在工作。
严谨地说,语言模型的核心任务很简单:计算一个词序列(即一个句子)出现的概率。好的语言模型能判断"今天天气真好"比"今天天气真火车"更合理------因为前者在人类的日常表达中更可能发生。
链式法则与它的困境
从数学角度看,计算一个句子 S = w₁, w₂, ..., wₘ 的概率,可以写成:
css
P(S) = P(w₁) × P(w₂|w₁) × P(w₃|w₁,w₂) × ... × P(wₘ|w₁,...,wₘ₋₁)
这被称为概率的链式法则 。逻辑上完全正确,但实际计算时灾难来了:当句子变长,P(wₘ|w₁,...,wₘ₋₁) 这样的条件概率几乎无法从任何语料库中可靠地估计------因为这串词很可能从未在训练数据中出现过。
打个比方:把整个互联网的文本作为"训练数据",你仍然找不到"一只紫色的长颈鹿在火星上弹奏肖邦的夜曲"这个句子。但这不代表这个句子本身没有概率------它只是极为罕见而已。
N-gram 的便宜之计:只看眼前
为了绕开这个困难,研究者引入了一个大胆的简化------马尔可夫假设:一个词的出现概率,只与它前面有限的 n-1 个词有关,不需要回溯整个历史。
基于这个假设建立的模型,就是 N-gram 模型。这里的 "N" 代表上下文窗口的大小:
- 2-gram (Bigram) :只参考前 1 个词。
P(w₃|w₁,w₂) ≈ P(w₃|w₂) - 3-gram (Trigram) :参考前 2 个词。
- 以此类推。
N-gram 相当于戴上了一个"视野受限的眼罩"------不去看整个句子的历史,只看最近的那几个词。这个朴素的想法在很长一段时间内是语言模型的主流方案。
但它有两个致命缺陷:
- 数据稀疏:一个 N-gram 组合从未出现过,概率就是 0。"agent learns" 出现过而 "robot learns" 没出现过?后者的概率直接归零。
- 不懂语义:模型不知道 "agent" 和 "robot" 在含义上的相似性。在它眼中,每个词就是一个孤立的编号。
这就像一个人只会死记硬背,却完全不理解单词的含义。要真正理解语言,模型需要明白词与词之间的"亲戚关系"。
二、给词画一张地图:神经网络与词嵌入
N-gram 解决了"怎么算概率",但没解决"怎么理解语义"。下一个突破,来自一个关键的思想转变:把词从离散符号变成连续向量。
从符号到向量
N-gram 的根本问题在于它将词视为彼此无关的离散符号。2003年,Bengio 等人提出了一个里程碑式的思路:用连续的向量来表示每个词。
具体来说分两步:
- 创建语义空间 :想象一个高维向量空间(比如几百维),词汇表中的每个词都被映射为空间中的一个点。这个点(即向量)就是词嵌入(Word Embedding) 。
- "近义即近距" :语义相近的词,在向量空间中的位置也相近。
如果说 N-gram 是把词当成抽屉里一个个独立的小卡片,那么词嵌入就是给所有词画了一张语义地图。在这张地图上,"猫"附近会有"狗"、"宠物"、"喵"------含义相关的词自然聚集在一起。
词向量的"魔法":King - Man + Woman ≈ Queen
词嵌入最令人惊叹的特性是,它能通过简单的向量运算来捕捉语义类比关系:
c
vector("国王") - vector("男人") + vector("女人") ≈ vector("女王")
这意味着什么?从"国王"的位置出发,减去"男性"的向量(去掉性别属性),加上"女性"的向量,结果就靠近了"女王"的位置。更令人称奇的是,这种关系不是人为设定的 ------是模型在训练过程中为了"预测下一个词"这个任务自动学会的。
衡量向量相似性的常用工具是余弦相似度:余弦值越接近 1,两个词的含义越相近;越接近 0,越无关;越接近 -1,含义越相反。
词嵌入的引入是一次范式转变:从此,词不再是离散符号,而是语义空间中一个有意义的点。
三、给模型装上记忆:RNN与LSTM
词嵌入让模型"懂"了语义,但它和 N-gram 一样,只能看到固定长度的上文。现实中的理解常常需要跨越很长的距离。
固定窗口不够用了
考虑这个句子:
"小明三年前在北京买了一本书,去年他在上海的一家咖啡店里重读了它。"
要理解"它"指代的是"一本书"而不是"咖啡店",你需要回溯到句子开头------这远远超出了 N-gram 或前馈神经网络的固定窗口范围。
RNN:给网络一个"短期记忆"
循环神经网络(RNN, Recurrent Neural Network) 的解决方案非常直观:引入一个隐藏状态,你可以把它理解为网络的"短期记忆"。
处理序列的每一步,RNN 做三件事:
- 读入当前词的信息
- 结合上一刻的"记忆"
- 生成新的"记忆",传递给下一刻
这就像人读句子:每读一个新词,都结合之前建立的语境来更新理解。循环往复的结构,让信息理论上可以沿整个序列无限传递------打破了固定窗口的枷锁。
长期依赖的诅咒:梯度消失
但在实践中,标准 RNN 遭遇了致命问题------长期依赖问题。
RNN 通过反向传播 来训练:读完整个序列后,根据输出端的误差反向调整各层参数。序列的长度就是网络的"深度"。当序列很长时,误差信号(梯度)在反向传播中经过一次次连乘------结果要么趋向于零(梯度消失 ),要么爆炸式增长(梯度爆炸)。
就像 100 人的传话游戏:第一个人说的悄悄话传到第 100 个人时,早已面目全非。RNN 很难记住句子开头的信息,因为"记忆信号"在传递中衰减得太快。
LSTM:一条不会丢失信息的高速公路
为解决这个难题,长短时记忆网络(LSTM) 被设计出来。它在 RNN 的基础上增加了一条细胞状态 通路和一套精密的门控机制。
把细胞状态想象成一条贯穿整个序列的"信息高速公路",门控机制就是这条路上的智能收费站:
| 门 | 功能 | 直观理解 |
|---|---|---|
| 遗忘门 | 丢掉不重要的旧信息 | "出版社名称不重要,忘了它" |
| 输入门 | 存入重要的新信息 | "指代关系很重要,记下来" |
| 输出门 | 决定输出什么信息 | 基于当前记忆,输出判断依据 |
这套系统让 LSTM 能够有选择地记住和遗忘,而不是像原始 RNN 那样被动地让一切随时间衰减。模型第一次真正具备了捕捉长距离语义依赖的能力。
四、一场注意力革命:Transformer架构
LSTM 解决了"记不住",但没有解决"算不快"。RNN 必须按顺序处理数据的特性,成了下一个要攻克的堡垒。
RNN 的另一个天花板:不能并行
LSTM 再强,也必须一步一步地算:第 t 步的计算必须等第 t-1 步算完。就好比你读书必须一个字一个字地看,不能同时看整页。序列越长,训练越慢,而且无法用更多 GPU 去加速------这严重限制了模型规模的增长。
2017年,谷歌团队在论文 Attention Is All You Need 中给出了一个大胆的回答:彻底扔掉循环结构,全靠注意力 。这篇论文提出的架构,就是今天主宰 AI 世界的 Transformer。
自注意力:句子中所有词之间的"默契"
Transformer 的核心叫自注意力(Self-Attention) 。让我用一个场景来解释:
读到这句话: "The agent learns because it is intelligent."
看到加粗的 "it" 时,为了理解它指代谁,你的大脑会把更多"注意力"分配给前面的 "agent"。自注意力就是对这种认知现象的数学建模------处理每个词时,同时关注句子中所有其他词,并为每个词分配不同的"注意力权重"。权重越高,关联越强,对最终表示的贡献越大。
技术实现上,自注意力为每个词引入三个角色:
| 角色 | 含义 | 类比 |
|---|---|---|
| Query (Q) | 当前词,正在主动"查询" | 你在图书馆里想找一本书 |
| Key (K) | 可被查询的"索引"或"标签" | 检索系统中的索引卡片 |
| Value (V) | 词本身携带的"内容" | 每本书里的具体内容 |
整个计算过程可以概括为一次高效的开卷考试:
- 准备资料:为每个词生成 Q、K、V 三个向量
- 计算相关性得分:用当前词的 Q 去和所有词(包括自己)的 K 做点积,得分越高关联越强
- Softmax 归一化:把所有得分转为一组总和为 1 的权重
- 加权求和:用权重对每个词的 V 做加权平均,得到融合了全局上下文的新表示
最关键的一点 :句子中所有词的自注意力计算可以同时完成,因为它们之间没有"必须等上一步"的依赖。这就是 Transformer 能实现大规模并行计算的秘密。
多头注意力:让多位"专家"同时工作
如果只做一次注意力计算("单头"),模型可能只会学到一种类型的关系。但语言中的关系要复杂得多------指代关系、因果关系、语法修饰关系......
多头注意力(Multi-Head Attention) 的思路简单而有效:把 Q、K、V 在维度上切成 h 份(h 就是"头数"),每组独立计算。让 h 个不同"专家"从不同角度审视句子,各自捕捉一种特征关系。最后把所有专家的"意见"拼接整合。
好比不是派一个侦探去案发现场,而是派了八个不同专长的侦探------语言学家、逻辑学家、修辞学家......汇总之后得到的全貌比任何一个人单独看到的都丰富。
位置编码:不能丢了"顺序"
自注意力有一个盲点:它不感知词与词的顺序。对自注意力来说,"agent learns" 和 "learns agent" 是完全等价的。
为解决这个问题,Transformer 引入了位置编码(Positional Encoding) :在输入每个词的嵌入时,额外加上一个代表其位置信息的向量(由正弦和余弦函数的数学公式计算得出,不是学出来的)。加了位置编码之后,两个相同的词因为位置不同,输入模型的向量就不同------模型由此获得了感知顺序的能力。
Encoder-Decoder:先理解,再生成
最初的 Transformer 为机器翻译设计,采用编码器-解码器结构:
- 编码器:读取并"理解"整个输入句子,为每个词生成富含上下文的向量表示
- 解码器:基于编码器的理解,逐词生成目标翻译
设计哲学是"先理解,再生成"。但很快,研究者发现了一个可以极大简化架构的洞察。
五、极简主义的力量:Decoder-Only与GPT时代
如果说 Transformer 的提出是一次架构革命,那么 GPT 的选择就是一次哲学简化------它问了一个看似简单却改变一切的问题。
一个更简单的思想
OpenAI 在开发 GPT 时,提出了一个异常简洁但极其深刻的视角:
语言的核心任务,不就是预测下一个最有可能出现的词吗?
回答问题?就是在问题文本后面,预测出答案的词序列。
写故事?就是在开头之后,预测出后续情节的词序列。
写代码?就是在注释或函数签名之后,预测出实现逻辑的词序列。
基于这个思想,GPT 做了一个大胆的简化:彻底抛弃编码器,只保留解码器。 这就是 Decoder-Only 架构。
自回归:一字一句地"编织"文本
Decoder-Only 的工作模式叫自回归(Autoregressive) 。过程简单得令人惊讶:
起始文本 → 预测下一个词 → 把生成的词追加到末尾 → 基于新文本再次预测 → 不断重复
就像用织布机一针一线地编织------每一针都依赖前面已经织好的部分,同时每一针又成为下一针的基础。这种模式与所有生成式任务天然契合:对话、写作、翻译、代码生成,本质上都是"根据已有文本,不断往后添加内容"。
掩码自注意力:禁止"偷看"答案
但有一个关键问题:模型在预测第 t 个词时,怎么保证不去"偷看"第 t+1 个词?
答案叫掩码自注意力(Masked Self-Attention) :在注意力分数矩阵计算出来之后(Softmax 归一化之前),模型会把所有"未来位置"的分数替换为一个极大的负数。经过 Softmax 后,这些位置的权重精确地变成 0------从数学上禁止了模型去关注后面的内容。它只能依赖已看到的"上文"来预测"下文"。
为什么 Decoder-Only 统治了世界?
从 GPT-1 到 GPT-4,从 Llama 到 Claude,几乎所有主流大语言模型都采用 Decoder-Only 架构。这不是巧合:
- 训练目标天然统一:"预测下一个词"这个简单目标意味着你可以把互联网上的任何文本直接作为训练数据,不需要人工标注。
- 结构简单,易于扩展:组件越少,工程坑越少。当你想从百亿参数扩展到千亿甚至万亿参数时,架构的简洁就是最大的优势。
- 天然适合生成任务:自回归的工作模式与所有生成式任务完美契合。而"生成"恰恰是今天大模型最有价值的能力。
结语:四十年迭代,一个简单的答案
回顾这条演进之路,每一步突破,解决的都是前一步方案中最明显的瓶颈:
| 阶段 | 核心问题 | 解决方案 |
|---|---|---|
| N-gram | 如何计算句子概率? | 马尔可夫假设 + 统计计数 |
| 神经网络/词嵌入 | 如何理解词的语义? | 连续向量空间 |
| RNN / LSTM | 如何建模长距离依赖? | 隐藏状态 + 门控机制 |
| Transformer | 如何实现并行计算? | 自注意力机制 |
| Decoder-Only (GPT) | 如何统一训练范式? | 只保留解码器 + 预测下一个词 |
最终胜出的方案------"预测下一个词"------听起来简单得不可思议。但正是这个简单的目标,配合 Transformer 的自注意力机制和海量数据与算力,催生了今天我们看到的智能涌现。
理解这个演进历程,不只是为了"知道历史"。当你理解了 Transformer 为什么抛弃 RNN 的循环结构、Decoder-Only 为什么能统一所有生成任务,你就更能洞察大语言模型的能力边界------它能做什么、不能做什么、以及为什么会这样。