高级 #dl#nlp#llm
自然语言处理(NLP)
自然语言处理让计算机理解、生成人类语言——从词嵌入(Word2Vec)到预训练模型(BERT、GPT),NLP 经历了从"手动特征"到"大模型"的转变
💬 让计算机”看懂”语言——不只是查字典
“苹果很好吃”和”苹果发布了新手机”——两个”苹果”意思完全不同。这是人类一看就懂的,但计算机怎么知道?
自然语言处理(Natural Language Processing, NLP) 让计算机理解、生成、操作人类语言。从早期的规则系统到今天的大语言模型——NLP 经历了巨大的变革。
🔤 词嵌入——把词变成向量
计算机不认识”猫”这个字——它只认识数字。
词嵌入(Word Embedding) 把每个词映射成向量——语义相似的词在向量空间中距离近:
# Word2Vec——经典词嵌入
# "国王 - 男人 + 女人 ≈ 女王"
# 这就是词嵌入的惊人性质——可以像向量一样做算术!
vec_king - vec_man + vec_woman ≈ vec_queen
vec_北京 - vec_中国 + vec_日本 ≈ vec_东京
词嵌入把每个词表示为几百维的向量:
"猫" → [0.2, -0.5, 0.8, ...]
"狗" → [0.3, -0.4, 0.7, ...] ← 和"猫"距离近
"苹果"(水果)→ [0.1, -0.8, 0.9, ...]
"苹果"(公司)→ [0.7, 0.2, -0.5, ...] ← 不同含义不同向量
📚 从 BERT 到 GPT——预训练时代
预训练 + 微调 模式彻底改变了 NLP:
第一阶段(预训练):
在海量文本上训练一个"语言理解"模型
→ 模型学会了语法、知识、推理能力
第二阶段(微调/提示):
在特定任务上少量数据微调
→ 分类、问答、翻译、摘要……
关键:预训练的成本极大(千万美元级),但微调成本很小
→ "基础模型"(Foundation Model)概念诞生
BERT——双向理解
BERT 用完形填空训练:随机遮住句子中 15% 的词,让模型预测被遮住的词。
输入:"我今天去[MASK]买了苹果"
预测:"超市" → BERT 懂了上下文
双向注意力:同时看"今天去"和"买了苹果"两个方向
GPT——单向生成
GPT 用预测下一个词训练:给前面的词,预测下一个词。
输入:"我今天"
预测:"去" → "超市" → "买了" → "苹果"
单向注意力:只看左边的词,不能看右边
但:这就是"生成"的本质——从左往右逐词产生
🤖 大语言模型(LLM)的能力
GPT-3(1750 亿参数)和后续的 LLM 展现出许多”涌现”能力:
| 能力 | 说明 | 例子 |
|---|---|---|
| 上下文学习 | 给几个例子模型就学会新任务 | 给 3 个翻译例子→模型能继续翻译 |
| 思维链推理 | 让模型”一步一步思考”提高准确率 | ”我们先分析……然后……所以……” |
| 指令跟随 | 理解自然语言指令 | ”用 Python 写一个排序算法” |
| 代码生成 | 生成可运行的代码 | GitHub Copilot |
📝 小结
| 概念 | 一句话 |
|---|---|
| 词嵌入 | 词→向量——语义相似=向量距离近 |
| 预训练 | 在海量数据上训练基础模型——然后微调 |
| BERT | 双向编码器——完形填空训练——擅理解 |
| GPT | 单向解码器——预测下一个词——擅生成 |
| LLM(大语言模型) | 大规模预训练语言模型——涌现多种能力 |
为什么先学这个? NLP 处理”语言”。另一个重要应用方向——计算机视觉(目标检测 YOLO、分割)。