自然语言处理:从词袋模型到大语言模型的演进之路
引言
自然语言处理(NLP)是人工智能领域中最贴近人类日常生活的分支之一。它的目标是让机器理解、生成和操作人类语言。从早期的规则系统到今天的千亿参数大模型,NLP 经历了数次范式转移。这篇文章沿着技术演进的脉络,梳理 NLP 的核心任务、关键方法和当前的主流训练范式。
一、NLP 的核心任务
NLP 的任务可以按语言理解的层次来划分,从字词到篇章,复杂度逐级上升。
任务层级 |
典型任务 |
说明 |
|---|---|---|
词法层 |
分词、词性标注 |
将文本切分为词并标注语法属性 |
句法层 |
句法分析、依存分析 |
分析句子中词与词的结构关系 |
语义层 |
命名实体识别、语义角色标注 |
识别实体及其在句中的语义角色 |
篇章层 |
指代消解、篇章连贯性 |
处理跨句子的语义关联 |
应用层 |
机器翻译、问答、摘要、情感分析 |
面向具体场景的端到端任务 |
不同语言的任务难度差异很大。中文分词就是一个典型例子,因为中文没有天然的空格分隔,分词本身就是一个需要模型判断的问题。
二、文本表示方法
2.1 离散表示
最早的文本表示是 One-Hot 和词袋模型(Bag of Words)。每个词用一个稀疏向量表示,文档用词频向量表示。TF-IDF 在此基础上引入逆文档频率,降低常见词的权重。
这类方法简单高效,但有两个根本缺陷:一是词汇表爆炸,二是无法表达词与词之间的语义相似性。
2.2 静态词向量
Word2Vec 的出现是一个转折点。它通过预测上下文(Skip-gram)或根据上下文预测中心词(CBOW),把词映射到低维稠密向量空间。语义相近的词在向量空间中距离更近,经典的例子是:
king - man + woman ≈ queen
GloVe 则通过全局共现矩阵分解得到词向量。两者都属于静态词向量,同一个词在任何语境下向量相同,无法处理一词多义。
2.3 上下文相关表示
ELMo 首次提出用双向 LSTM 根据上下文动态生成词向量,同一个词在不同句子中会有不同的表示。这为后来的 Transformer 时代铺平了道路。
三、从 RNN 到 Transformer
3.1 循环神经网络
RNN 及其变体 LSTM、GRU 曾是序列建模的主流。它们按时间步依次处理输入,天然适合变长序列。但存在两个问题:
长距离依赖难以捕捉,梯度容易消失或爆炸
无法并行计算,训练速度受序列长度限制
3.2 注意力机制
注意力机制最早用于机器翻译,让解码器在生成每个词时能够“关注”编码器的不同位置。它的核心计算是:
# 缩放点积注意力
scores = Q @ K.T / sqrt(d_k)
weights = softmax(scores)
output = weights @ V
3.3 Transformer
Transformer 完全抛弃了循环结构,只用注意力机制和前馈网络。它的关键设计包括:
多头注意力:让模型在不同子空间并行捕捉多种关系
位置编码:弥补注意力本身不含位置信息的缺陷
残差连接 + 层归一化:保证深层网络稳定训练
并行计算:整个序列可以同时处理,训练效率大幅提升
Transformer 最初用于翻译,后来成为几乎所有 NLP 模型的基础架构。
四、预训练范式
4.1 预训练 + 微调
BERT 开启了 NLP 的预训练时代。它用 Transformer 编码器,通过两个任务预训练:
掩码语言模型(MLM):随机遮住部分词,让模型预测
下一句预测(NSP):判断两个句子是否连续
预训练完成后,只需在下游任务上加一个轻量头部,用少量标注数据微调,就能取得很好的效果。
4.2 自回归语言模型
GPT 系列走的是另一条路:用 Transformer 解码器,训练目标是预测下一个词。这种范式天然适合文本生成,随着模型规模增大,展现出了少样本甚至零样本能力。
4.3 两种范式的对比
维度 |
BERT 类(编码器) |
GPT 类(解码器) |
|---|---|---|
预训练目标 |
掩码预测 |
下一词预测 |
擅长任务 |
理解类:分类、抽取、匹配 |
生成类:写作、对话、翻译 |
注意力方向 |
双向 |
单向(因果) |
典型使用 |
微调 |
提示 / 指令 |
五、大语言模型的关键技术
5.1 缩放定律
研究发现,模型性能与参数量、数据量、计算量之间存在幂律关系。这为“把模型做大”提供了理论依据,也推动了千亿参数模型的竞赛。
5.2 指令微调
原始预训练模型只会续写文本,不会遵循指令。指令微调用“输入-输出”配对数据训练模型,让它学会按指令行事。数据质量比数量更重要,少量高质量样本往往胜过大而杂的数据集。
5.3 人类反馈强化学习
RLHF 的流程分为三步:
监督微调:用人工示范数据微调模型
训练奖励模型:让人类对模型输出排序,训练打分模型
强化学习优化:用 PPO 等算法让模型最大化奖励
这一步让模型的输出更符合人类偏好,也是 ChatGPT 成功的关键之一。
5.4 参数高效微调
全量微调大模型成本极高。LoRA 等方法通过冻结原模型,只训练少量低秩矩阵,大幅降低显存和存储需求。QLoRA 进一步结合量化,让单卡微调大模型成为可能。
六、提示工程与上下文学习
大模型的一个有趣特性是上下文学习:不需要更新参数,只靠提示中的几个示例就能完成新任务。
常见提示技术:
零样本:直接给指令,不给示例
少样本:给几个输入输出示例
思维链:让模型一步步推理再给答案
自洽性:多次采样,投票选最一致的答案
思维树:把推理过程组织成树状搜索
这些技术的共同点是:不改变模型,只改变输入的组织方式。
七、评估与挑战
7.1 常见评估指标
任务 |
指标 |
|---|---|
分类 |
准确率、F1、AUC |
生成 |
BLEU、ROUGE、BERTScore |
问答 |
EM、F1 |
对话 |
人工评估、胜率 |
检索 |
Recall@K、MRR、NDCG |
7.2 当前主要挑战
幻觉:模型生成看似合理但事实错误的内容
长文本:上下文窗口有限,长文档理解仍有困难
推理能力:多步逻辑推理仍是弱项
偏见与安全:训练数据中的偏见会被模型放大
评估困难:生成任务的自动评估与人类判断存在差距
计算成本:训练和推理的能耗与成本居高不下
八、一条典型的技术路线
收集与清洗语料
训练分词器(BPE、WordPiece、SentencePiece)
预训练基础模型(自监督目标)
指令微调(监督数据)
对齐优化(RLHF / DPO)
评估与红队测试
量化压缩与部署
线上监控与迭代
总结
NLP 的演进有一条清晰的主线:从人工规则到统计方法,从静态表示到上下文表示,从任务专用模型到通用预训练模型。每一步都在减少对人工特征的依赖,同时提升模型的通用性。当前的大语言模型把这个趋势推到了极致,但也暴露了幻觉、推理、成本等新问题。理解这条演进脉络,比记住某个具体模型的名字更重要,因为下一个范式转移,很可能就藏在当前这些挑战的解法里。
延伸阅读方向
分词算法:BPE、WordPiece、Unigram 的对比
注意力优化:稀疏注意力、线性注意力、FlashAttention
对齐方法:RLHF、DPO、KTO 的异同
检索增强生成:RAG 的架构与工程实践
多语言与低资源:跨语言迁移与数据增广
模型可解释性:注意力可视化与探针分析