NLP进化史:一场「打补丁」的技术接力赛

每一项新技术的诞生,都是因为旧技术"满足不了当下人类的欲望"。

大家好,今天我们来聊聊**自然语言处理(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是家具电器。

每一样都不可或缺,缺了任何一环都到不了今天。

而这个故事还在继续------

多模态、更长上下文、更强的推理能力、更好的对齐方法......

下一个"补丁"会是什么?

让我们拭目以待。

相关推荐
Francek Chen1 小时前
【自然语言处理】初探自然语言处理
人工智能·自然语言处理·nlp·easyui
Dev7z1 小时前
基于多尺度深度卷积增强的YOLO11公共区域发传单违规行为检测系统(2026年 力作)
人工智能·深度学习·机器学习
Codebee1 小时前
SuperAgent核心术语全解析:企业智能化转型必备指南
人工智能
AI科技星2 小时前
光子的几何起源与量子本质:一个源于时空本底运动的统一模型
服务器·人工智能·线性代数·算法·机器学习
清蒸鳜鱼2 小时前
【系列跟学之——强化学习】基础篇
机器学习·语言模型·强化学习
创客匠人老蒋2 小时前
静水流深:在业务深处,看见AI的真实力量
人工智能·创始人ip·创客匠人
杭州泽沃电子科技有限公司2 小时前
充电安全防线:以实时在线监测破解电动自行车火灾困局
人工智能·在线监测·智能监测
阿坤带你走近大数据2 小时前
Rag与RagFlow的区别
人工智能·知识图谱