每一项新技术的诞生,都是因为旧技术"满足不了当下人类的欲望"。
大家好,今天我们来聊聊**自然语言处理(NLP)**这个领域是怎么一步步走到今天ChatGPT时代的。
你可能觉得这是个很学术的话题,但我换个角度讲------
NLP的发展史,其实就是一部"发现问题→解决问题→发现新问题"的循环史。
每一项技术都像是在给上一代技术"打补丁",结果打着打着,补丁比原来的系统还大,于是就成了新系统。
好,我们正式开始。
01 最初的问题:计算机根本"看不懂"人话
😫 问题是什么?
在计算机眼里,文字就是一堆符号。
你说"我爱你",计算机看到的是三个毫无意义的字符编码。它不知道这是表达感情,更不知道"爱"和"喜欢"有什么关系。
核心矛盾:人类用语言思考,计算机用数字计算。两边语言不通。
🔧 怎么解决?
早期方案:人工编写规则
语言学家们想:既然计算机不懂,那我来教它!
于是他们手写了无数条规则:
如果句子里有"不"+动词 → 这是否定句如果出现"吗"结尾 → 这是疑问句如果"名词+的+名词" → 这是所属关系
这套方法在一些简单场景下确实能用。
❌ 有什么局限性?
规则写不完,例外杀不尽。
语言这东西太灵活了:
"这部电影还行" ------ 是夸还是贬?
"我差点没摔倒" ------ 到底摔没摔?
"他背着老婆和情人约会" ------ 谁背着谁?
人类都可能理解错,何况死板的规则?
而且不同语言规则完全不同,换个语言就得重写一遍。
成本高、覆盖率低、扩展性差。此路不通。
02 新思路:让机器自己从数据里"学"规律
😫 问题是什么?
既然规则写不完,能不能让机器自己总结规律?
🔧 怎么解决?
统计语言模型(N-gram)登场
核心思想很朴素:统计词和词一起出现的概率。
比如,给机器看了100万句话后,它发现:
"我想"后面跟"吃"的概率是30%
"我想"后面跟"石头"的概率是0.001%
所以当机器要判断哪句话更通顺时:
我想吃苹果" ✅ 概率高"我想吃马路" ❌ 概率低
数据驱动,自动学习,不用手写规则了!
❌ 有什么局限性?
只有短期记忆,看不远。
N-gram的N通常只能取到3-5,也就是说,它只能看前面3-5个词。
"小明昨天在北京的那家我们上周一起去过的餐厅吃了一碗很好吃的___"
答案应该是"面条"或"米饭"这类食物,但N-gram只能看到"好吃的"这几个字,完全抓不到前面的信息。
而且,这种方法只是统计表面规律,根本不理解语义。
"我喜欢苹果"和"我喜欢香蕉",在它眼里毫无关系。
03 语义困境:词和词之间的"关系"怎么表示?
😫 问题是什么?
早期我们用One-hot编码表示词汇:
表:[我, 爱, 你, 他, 中国]"我" = [1, 0, 0, 0, 0]"爱" = [0, 1, 0, 0, 0]"你" = [0, 0, 1, 0, 0]
问题来了:
维度爆炸:词表有10万个词,每个词就是10万维的向量
语义缺失:"开心"和"高兴"明明是近义词,但它们的向量完全正交,相似度为0
计算机依然不知道"开心≈高兴"。
🔧 怎么解决?
Word2Vec(2013)横空出世
谷歌的Mikolov提出了一个天才想法:
一个词的含义,由它周围的词决定。
经常出现在相似上下文里的词,意思应该相近。
今天天气真___" → 好/不错/棒"这道菜真___" → 好吃/美味/香
于是Word2Vec通过预测上下文的任务,把每个词压缩成一个低维稠密向量(比如300维)。
神奇的事情发生了:
ing - man + woman ≈ queen北京 - 中国 + 日本 ≈ 东京
词向量居然能做数学运算,还符合人类直觉!
❌ 有什么局限性?
一词一向量,搞不定多义词。
我去银行取钱" → bank = 金融机构"我在河岸边钓鱼" → bank = 河岸
但在Word2Vec里,"bank"只有一个向量。它根本分不清这是哪个意思。
每个词被"焊死"成固定表示,无法根据上下文变化。
04 序列困境:怎么处理有先后顺序的句子?
😫 问题是什么?
语言是有顺序的。
"狗咬人" ≠ "人咬狗"
但之前的词袋模型(Bag of Words)直接把词序扔掉了,两句话表示完全一样。
我们需要一种能"按顺序阅读"的模型。
🔧 怎么解决?
RNN(循环神经网络)登场
RNN的思想很像人类阅读:一个词一个词地读,同时记住前面读过的内容。
读"我" → 记住"我"读"爱" → 结合"我"的记忆,更新理解读"你" → 结合"我爱"的记忆,输出理解
它有一个"隐藏状态"(Hidden State),像一个小本本,边读边记。
终于能处理序列了!而且输入多长都行。
❌ 有什么局限性?
记忆太短,长句子记不住前面的内容。
这就是著名的梯度消失问题。
RNN像一个传话游戏:信息从第1个词传到第100个词,经过100次传递后,早就面目全非了。
"小明昨天说他下周要去北京参加一个会议,会议结束后他会去找___"
读到最后,RNN可能已经忘了主语是"小明"了。
05 记忆难题:怎么让模型"该记的记住,该忘的忘掉"?
😫 问题是什么?
RNN的问题是记忆没有选择性------所有信息都混在一起,旧的容易被新的覆盖。
🔧 怎么解决?
LSTM(长短期记忆网络)
LSTM加入了三道"门":
🚪 遗忘门:决定丢掉哪些旧信息🚪 输入门:决定记住哪些新信息 🚪 输出门:决定输出哪些信息
还有一条"细胞状态",像信息高速公路,让重要信息可以一路畅通地传递。
打个比方:
普通RNN像一个只能口头传话的人,传几句就忘。
LSTM像一个带小本本、还知道什么该记什么不该记的人。
❌ 有什么局限性?
还是串行处理,慢!
LSTM必须一个词一个词地读,不能并行。
一句话100个词 → 要计算100步一批1000句话 → 每句都要100步
GPU明明有强大的并行能力,却只能干等着。
另外,超长文本(比如几千字的文章)依然处理不好。
06 瓶颈问题:翻译时所有信息都挤在一个向量里?
😫 问题是什么?
Seq2Seq模型做机器翻译时,分两步:
Encoder:把源语言句子压缩成一个固定向量
Decoder:从这个向量解码出目标语言
问题来了:不管输入句子多长,都得压成一个固定长度的向量。
一句话5个词 → 压成512维向量一句话50个词 → 还是压成512维向量
信息严重损失!长句翻译效果断崖式下跌。
🔧 怎么解决?
注意力机制(Attention)
核心思想:翻译每个词的时候,回头"看"一眼所有源语言的词,看看哪些最相关。
翻译 "I love you" → "我爱你"
生成"爱"时: 看"I" → 相关度20% 看"love" → 相关度70% ← 主要看这里! 看"you" → 相关度10%
不用把所有信息挤进一个向量了,解码时可以随时"回看"。
翻译质量大幅提升,还顺带解决了可解释性问题(能看到模型在"看"哪里)。
❌ 有什么局限性?
这时候的Attention还是配合RNN/LSTM使用的。
底层还是串行处理,还是慢。
能不能把RNN扔掉,全部用Attention?
07 效率革命:能不能完全并行处理?
😫 问题是什么?
RNN/LSTM的串行处理是根本瓶颈。
而且长距离依赖虽然比以前好了,但信息传递路径还是太长------从第1个词到第100个词,还是要经过99步。
🔧 怎么解决?
Transformer(2017)------"Attention Is All You Need"
谷歌团队直接把RNN扔了,全部用Attention。
核心创新是自注意力(Self-Attention):
句子中每个位置都可以直接关注其他所有位置
"我爱北京天安门"
"门"可以直接看到"北京",不用经过"天""安"
路径长度从O(n)变成O(1),任意两个位置一步直达!
而且自注意力的计算可以完全并行,GPU利用率拉满。
同时通过位置编码告诉模型词的顺序,弥补没有RNN的缺陷。
❌ 有什么局限性?
计算复杂度是O(n²)。
序列长度为n时,每个位置都要和n个位置计算注意力。
512个token → 计算26万次
4096个token → 计算1677万次
长文本处理成本极高。这也是为什么早期大模型上下文窗口只有2048、4096的原因。
(后来有各种魔改方案优化这个问题,但那是后话了)
08 预训练革命:能不能先学通用知识,再适配具体任务?
😫 问题是什么?
在BERT之前,NLP任务的训练模式是这样的:
情感分析 → 收集情感标注数据 → 从零训练一个模型机器翻译 → 收集平行语料 → 从零训练一个模型问答系统 → 收集问答数据 → 从零训练一个模型
每个任务都要大量标注数据,成本极高!
而且人类不是这样学习的------我们先学语言的通用知识(语法、常识、逻辑),再学具体技能。
🔧 怎么解决?
ELMo(2018)+ BERT(2018)开启预训练时代
ELMo首先证明:
在大规模文本上训练语言模型,学到的词向量可以迁移到下游任务。
而且ELMo的词向量是动态的------同一个词在不同上下文里表示不同:
"苹果很好吃" → 苹果 = 水果向量"苹果发布会" → 苹果 = 公司向量
一词多义问题终于解决了!
BERT更进一步:
创造了**MLM(掩码语言模型)**训练方式:
输入:"我喜欢吃[MASK]果"任务:预测被遮住的词是"苹"
关键是:预测时可以同时看左边和右边,实现真正的双向理解。
新范式形成:
阶段1:在海量无标注文本上预训练(学通用知识)阶段2:在少量标注数据上微调(适配具体任务)
❌ 有什么局限性?
BERT擅长"理解",不擅长"生成"。
因为BERT的训练方式是填空,不是写作。让它续写文章、进行对话,表现一般。
另外,模型还是相对较小(1-3亿参数),能力有上限。
09 生成之王:怎么让AI学会"写"?
😫 问题是什么?
BERT能理解,但不能生成。
我们需要一个能流畅写作、对话、续写的模型。
🔧 怎么解决?
GPT系列------用自回归方式训练
GPT的训练任务很简单:给前面的词,预测下一个词。
"今天天气" → 预测"很""今天天气很" → 预测"好"
就像人类写作:边写边想下一个字该写什么。
OpenAI的策略是:疯狂加大规模。
GPT-1(2018):1.17亿参数GPT-2(2019):15亿参数GPT-3(2020):1750亿参数
到GPT-3时,神奇的事情发生了------
模型涌现出**In-Context Learning(上下文学习)**能力:
给几个例子:情感:这电影太棒了 → 正面情感:真难吃 → 负面情感:还可以 → ?
模型自动输出:中性
不用微调!给几个例子就能做新任务!
❌ 有什么局限性?
模型学的是"预测概率最高的下一个词",而不是"人类想要的答案"。
它可能:
一本正经地胡说八道(幻觉)
输出有害内容
回答啰嗦废话多
不理解人类真正的意图
能力很强,但不够"听话"。
10 对齐问题:怎么让AI说人话、办人事?
😫 问题是什么?
GPT-3很强,但总有些"毛病":
问它不知道的事,它瞎编,还编得特别自信
有时候回答绕来绕去不直接
可能输出不当内容
模型的目标(预测下一个词)和人类的目标(有用、真实、安全)并不一致。
🔧 怎么解决?
RLHF(人类反馈强化学习)
这是ChatGPT能聊得这么"舒服"的核心秘密。
三步走:
第一步:监督微调(SFT)收集高质量对话数据,让模型学习什么是"好回答"
第二步:训练奖励模型(RM)让人类给多个回答排序:"回答A比B好,B比C好"训练一个打分模型
第三步:强化学习优化(PPO)让语言模型生成回答 → 奖励模型打分 → 优化语言模型
本质是:让模型学会"什么样的回答让人类满意"。
❌ 有什么局限性?
人类反馈有偏见:标注员的偏好可能不代表所有人
可能过度讨好:模型可能为了高分变得"圆滑"
成本高:需要大量人工标注
而且RLHF解决的是"态度问题",不解决"能力问题"------不会的东西还是不会。
11 推理困境:为什么大模型做数学题老错?
😫 问题是什么?
你可能发现,ChatGPT写文章很溜,但做数学题经常出错:
问:一个农场有5只鸡,买进3只,卖掉2只,还剩几只?答:6只 ❌(正确答案也是6,但复杂点的就经常错)
因为语言模型是"条件反射式"输出,不是真正在推理。
🔧 怎么解决?
Chain-of-Thought(思维链)
核心思想:让模型显式输出推理过程,而不是直接给答案。
普通方式:问:5+3-2=?答:6
思维链方式:问:5+3-2=?答:让我一步步计算。 首先,5+3=8 然后,8-2=6 所以答案是6
拆解问题 → 逐步推导 → 验证结果
效果惊人:加上一句"Let's think step by step",数学推理准确率能翻倍。
❌ 有什么局限性?
增加了输出长度:推理过程要额外生成,成本更高
不是万能的:有些问题拆解了也做不对
可能"编造"推理过程:模型可能输出看起来合理但实际错误的步骤
12 知识困境:训练完就"定格"了,新知识怎么办?
😫 问题是什么?
大模型的知识截止到训练时间。
"2024年奥运会在哪举办?"→ 如果模型2023年训练完,它可能不知道最新消息→ 或者它瞎编一个
而且专业领域知识(法律、医学、公司内部文档)很难全部塞进模型。
🔧 怎么解决?
RAG(检索增强生成)
思路很简单:让模型在回答之前,先去查资料。
用户提问:"特斯拉2024年Q1销量如何?" ↓检索系统:从数据库/网络找到相关文档 ↓大模型:根据找到的文档生成回答 ↓输出:"根据特斯拉官方报告,2024年Q1..."
模型变成了"开卷考试"。
❌ 有什么局限性?
检索质量是瓶颈:找不到或找错文档,回答就废了
增加延迟:先检索再生成,响应变慢
可能检索和问题不匹配:语义理解不到位
总结:一场永不停歇的"打补丁"游戏
回顾整个发展历程,你会发现一个有趣的规律:
| 阶段 | 核心问题 | 解决方案 | 新问题 |
|---|---|---|---|
| 规则时代 | 机器不懂人话 | 手写规则 | 规则写不完 |
| 统计时代 | 规则写不完 | 数据统计 | 没有语义理解 |
| 词向量时代 | 稀疏表示、无语义 | Word2Vec | 一词多义、无序列 |
| RNN时代 | 无法处理序列 | RNN/LSTM | 长依赖、慢 |
| Attention时代 | 信息瓶颈 | 注意力机制 | 还是依赖RNN |
| Transformer时代 | 串行处理慢 | 自注意力 | 预训练不足 |
| 预训练时代 | 标注数据不足 | BERT/GPT | 能力有限、不对齐 |
| 大模型时代 | 不够聪明 | 扩大规模 | 幻觉、推理差 |
| 对齐时代 | 不听话 | RLHF | 知识过时、推理弱 |
| 增强时代 | 知识和推理 | RAG/CoT | 未完待续... |
每个"解决方案"都会带来新的"问题",然后催生下一个技术。
这不是缺陷,而是科学进步的常态。
写在最后
如果你看到这里,会发现NLP的发展就像盖房子:
词向量是砖头,RNN是梁柱,Attention是钢筋,Transformer是框架,预训练是装修,RLHF是精装修,RAG和CoT是家具电器。
每一样都不可或缺,缺了任何一环都到不了今天。
而这个故事还在继续------
多模态、更长上下文、更强的推理能力、更好的对齐方法......
下一个"补丁"会是什么?
让我们拭目以待。