第二章:NLP 发展史
NLP 的发展经历了多个阶段,从最初的手工规则到如今的大语言模型。理解这段历史,有助于我们把握技术演进的脉络,理解每项技术诞生的背景和动机。
第一阶段:规则系统时代(1950s-1980s)
时代背景
在 20 世纪 50 年代至 80 年代初,自然语言处理主要依赖人工编写的语言规则。这些规则由语言学家和程序员手动制定,基于语法规则和词典来处理语言。
代表系统
Georgetown-IBM 实验(1954)
这是人类历史上第一次公开演示的机器翻译系统。由乔治城大学和 IBM 联合开发,实验演示了将 60 多个俄语句子完全自动翻译成英语。
输入(俄语):Мы хотим видеть советскую Америку.
输出(英语):We would like to see Soviet America.局限性
该实验仅覆盖了 6 个语法规则和 250 个词汇条目,只能处理非常有限的句子结构。但它的意义在于证明了机器翻译的可能性。
ELIZA 聊天机器人(1966)
ELIZA 由 MIT 的约瑟夫·魏岑鲍姆(Joseph Weizenbaum)开发,是世界上最早的聊天机器人之一。它模拟了一位心理治疗师,通过模式匹配和替换规则来生成回复。
用户:我感觉很不开心。
ELIZA:你为什么感觉不开心?
用户:因为我考试没考好。
ELIZA:考试没考好让你有什么感受?ELIZA 的工作原理非常简单:它使用一系列的模板规则,例如:
规则:我感觉 <X>
回复:你为什么感觉 <X>?优缺点
| 优点 | 缺点 |
|---|---|
| 精确可控 | 需要大量人工编写规则 |
| 可解释性强 | 无法处理歧义和新情况 |
| 在特定领域表现良好 | 扩展性差,维护成本高 |
第二阶段:统计方法时代(1990s)
时代背景
90 年代,随着计算能力的提升和大规模语料库的出现,统计方法逐渐取代规则系统成为主流。核心思想是:不再人工编写规则,而是让机器从大量文本数据中自动学习语言的模式和规律。
核心方法
N-gram 模型
N-gram 是最早出现的统计语言模型之一。它的核心思想是:一个词出现的概率只取决于它前面的 N-1 个词。
Bigram(2-gram)示例:
假设我们要计算句子"今天 天气 很好"的概率:
Trigram(3-gram)示例:
其中:
表示在"今天"出现的条件下,下一个词是"天气"的概率 - 这些概率通过统计语料库中词语出现的频率来估计
N-gram 的局限:
| 问题 | 说明 |
|---|---|
| 数据稀疏 | 当 N 增大时,很多 N-gram 组合在语料中从未出现 |
| 无法捕捉长距离依赖 | 只能看前 N-1 个词,无法理解长距离的语义关系 |
| 存储开销大 | 需要存储所有可能的 N-gram 及其频率 |
隐马尔可夫模型(HMM)
HMM 是一种概率图模型,广泛应用于词性标注和语音识别。它假设:
- 当前状态只依赖于前一个状态(马尔可夫假设)
- 当前的观测只依赖于当前的状态(输出独立性假设)
隐藏状态序列:名词 → 动词 → 形容词 → 名词
观测序列: 我 → 爱 → 美丽 → 花朵优缺点
| 优点 | 缺点 |
|---|---|
| 从数据中自动学习 | 需要大量标注数据 |
| 能处理一定程度的歧义 | 特征工程复杂 |
| 有坚实的数学基础 | 难以捕捉复杂的语言现象 |
第三阶段:机器学习时代(2000s)
时代背景
进入 21 世纪,NLP 技术逐步引入传统机器学习方法。这一阶段的特征工程成为关键环节——研究者需要设计大量手工特征来提升模型性能。
核心方法
逻辑回归(Logistic Regression)
逻辑回归是最基础的分类模型之一,广泛应用于文本分类任务。
给定输入特征向量
其中:
是输入的特征向量(如词频向量) 是模型的权重向量 是偏置项 是 Sigmoid 函数,将输出映射到 [0, 1] 区间
支持向量机(SVM)
SVM 的核心思想是找到一个最优超平面,使得不同类别的样本之间的间隔最大化。
其中:
是超平面的法向量 是偏置 是第 个样本的标签(+1 或 -1) 是权重的 L2 范数,用于控制模型复杂度
条件随机场(CRF)
CRF 是一种判别式概率图模型,特别适合序列标注任务(如命名实体识别、词性标注)。
CRF 定义了给定观测序列
其中:
是特征函数,描述相邻标签之间的关系 是特征函数的权重 是归一化因子(配分函数)
词袋模型的局限
这一阶段常用的文本表示方法是词袋模型(Bag of Words),它通过统计词频来表示文本。但词袋模型有一个明显的局限——完全忽略了词语的顺序。
示例:
| 评论 | 分词结果 |
|---|---|
| "服务很好但味道差劲" | ["服务", "很", "好", "但", "味道", "差劲"] |
| "味道很好但服务差劲" | ["味道", "很", "好", "但", "服务", "差劲"] |
这两条评论在词袋模型中的特征向量是完全相同的,但它们表达的情感完全相反。
为了解决这个问题,引入了 N-gram 特征。使用 trigram(3-gram)后:
评论A:["服务很好", "很好但", "好但味道", "但味道差劲"]
评论B:["味道很好", "很好但", "好但服务", "但服务差劲"]这样两条评论的特征向量就能区分开了。
第四阶段:深度学习时代(2010s)
时代背景
自 2010 年代中期开始,深度学习在 NLP 中迅速崛起。基于神经网络的模型取代了传统手工特征工程,能够从海量数据中自动学习语义表示。
核心模型
Word2Vec(2013)
Word2Vec 由 Google 的 Tomas Mikolov 团队提出,它通过神经网络为每个词生成一个稠密的、低维的向量表示,使得语义相近的词在向量空间中距离更近。
vec("国王") - vec("男人") + vec("女人") ≈ vec("女王")RNN / LSTM / GRU
循环神经网络(RNN)及其变体 LSTM 和 GRU,是处理序列数据的经典模型。它们通过循环连接来建模序列中的上下文信息。
时间步1: 输入"我" → 隐藏状态 h₁
时间步2: 输入"爱" → 隐藏状态 h₂ (结合 h₁)
时间步3: 输入"NLP" → 隐藏状态 h₃ (结合 h₂)ELMo(2018)
ELMo(Embeddings from Language Models)是第一个成功应用于下游任务的上下文相关词向量模型。它基于双向 LSTM 语言模型,同一个词在不同上下文中会有不同的向量表示。
"苹果很好吃" 中的 "苹果" → 向量 A(偏向水果含义)
"苹果发布新手机" 中的 "苹果" → 向量 B(偏向公司含义)Transformer(2017)
2017 年,Google 团队发表了划时代的论文 "Attention Is All You Need",提出了 Transformer 架构。它完全抛弃了循环结构,仅使用注意力机制来建模序列中的依赖关系。
Transformer 的优势:
- 并行计算:不像 RNN 需要逐步处理,可以同时处理整个序列
- 长距离依赖:通过注意力机制直接建模任意两个位置之间的关系
- 可扩展性:可以通过增加层数和参数量来提升性能
我们将在后续章节中详细讲解 Transformer 的架构。
第五阶段:预训练模型时代(2018-2022)
时代背景
预训练模型的核心思想是:先在大规模无标注文本上进行预训练,学习通用的语言知识,然后在特定下游任务上进行微调(Fine-tuning)。
核心模型
| 模型 | 年份 | 架构 | 特点 |
|---|---|---|---|
| ELMo | 2018 | LSTM | 上下文相关词向量 |
| GPT | 2018.6 | Transformer Decoder | 单向自回归语言模型 |
| BERT | 2018.10 | Transformer Encoder | 双向掩码语言模型 |
| GPT-2 | 2019.2 | Transformer Decoder | 更大规模的生成模型 |
| T5 | 2019.10 | Transformer Encoder-Decoder | 统一的文本到文本框架 |
| GPT-3 | 2020.5 | Transformer Decoder | 1750 亿参数,少样本学习 |
BERT vs GPT:两种范式
BERT(双向编码器):
- 使用 Transformer 的编码器部分
- 通过掩码语言模型(MLM)进行预训练:随机遮盖一些词,让模型预测被遮盖的词
- 适合理解型任务(分类、问答、NER)
输入:我 爱 [MASK] 语言 处理
输出:我 爱 自然 语言 处理GPT(单向解码器):
- 使用 Transformer 的解码器部分
- 通过自回归语言模型进行预训练:根据前面的词预测下一个词
- 适合生成型任务(文本生成、对话)
输入:我 爱 自然
输出:我 爱 自然 语言第六阶段:大语言模型时代(2022-至今)
时代背景
2022 年底,ChatGPT 的发布标志着 NLP 进入了大语言模型(Large Language Model,LLM)时代。这些模型通过海量数据和超大规模参数,展现出了前所未有的语言理解和生成能力。
核心模型
| 模型 | 年份 | 参数量 | 特点 |
|---|---|---|---|
| ChatGPT | 2022.11 | ~1750 亿 | 基于 GPT-3.5,RLHF 对齐 |
| GPT-4 | 2023.3 | 未公开 | 多模态能力 |
| LLaMA | 2023.2 | 7B-65B | Meta 开源模型 |
| LLaMA 2 | 2023.7 | 7B-70B | 改进的开源模型 |
| DeepSeek | 2024 | 67B | 中国开源模型 |
| GPT-4o | 2024.5 | 未公开 | 多模态、更快推理 |
关键技术突破
- 规模定律(Scaling Law):模型性能随参数量、数据量和计算量的增加而持续提升
- 上下文学习(In-Context Learning):无需微调,仅通过提示就能完成新任务
- 思维链(Chain of Thought):通过逐步推理来解决复杂问题
- RLHF(人类反馈强化学习):让模型的输出更好地对齐人类偏好
技术演进总览
1950s 规则系统 ──────────────────┐
Georgetown-IBM, ELIZA │
│
1990s 统计方法 ──────────────────┤
N-gram, HMM, 最大熵 │
│
2000s 机器学习 ──────────────────┤
SVM, CRF, 逻辑回归 │
│
2013 Word2Vec ──────────────────┤
静态词向量 │
│
2017 Transformer ───────────────┤
注意力机制 │
│
2018 预训练模型 ─────────────────┤
ELMo → GPT → BERT │
│
2022 大语言模型 ─────────────────┘
ChatGPT → GPT-4 → LLaMA小结
本章回顾了 NLP 从 1950 年代到今天的发展历程。每一代技术的出现都是为了解决前一代技术的局限:
- 规则系统 → 无法扩展 → 统计方法
- 统计方法 → 特征工程复杂 → 深度学习
- 深度学习 → 需要大量标注数据 → 预训练模型
- 预训练模型 → 任务特定微调 → 大语言模型
理解这段演进历史,有助于我们理解为什么 Transformer、BERT、GPT 等架构被设计成现在这个样子。在后续章节中,我们将逐一深入讲解这些技术的原理和实现。