预训练范式
本节定位
这一章的主线其实只有一句话:
先在大语料上学通用能力,再把这些能力迁移到具体任务。
这就是现代 NLP 的预训练范式。
如果前面只把它看成“先训一下再微调”,后面会很容易只剩术语。
所以这一节要把它为什么重要、为什么改变整个 NLP 讲清楚。
学习目标
- 理解预训练范式和“每个任务从零训练”的差别
- 理解预训练 -> 迁移 -> 微调 的主线
- 通过可运行示例建立“共享底座”的直觉
- 理解为什么现代 NLP 主线几乎都围绕它展开
先建立一张地图
如果你已经学过词向量、上下文化表示和语言模型,这一节最自然的续接就是:
- 前面你已经看到文本表示越来越强
- 这一节开始回答“为什么后来整个 NLP 都开始围绕一个共享底座来组织”
所以预训练范式不是“又多训一步”,而是:
- 任务组织方式本身变了
预训练范式这节最适合新人的理解顺序不是“先记模型名”,而是先看清:
所以这节真正想讲清的是:
- 为什么“每个任务从零训练”会浪费
- 为什么“先学底座,再迁移”会改变整个 NLP 主线
一、为什么预训练会改变整个 NLP?
1.1 因为很多任务共享底层语言能力
无论是:
- 分类
- NER
- 问答
- 翻译
它们都需要一些共同底层能力,例如:
- 词义理解
- 语法结构
- 上下文建模
1.2 如果每个任务都从零学,会很浪费
这就像:
- 每次做新题,都从头学语言本身
显然成本很高。
1.3 预训练范式的核心
于是更合理的做法就变成:
- 先在海量通用文本上学基础能力
- 再把这份能力迁移到具体任务
这就是现代 NLP 的主线。
1.4 第一次学预训练范式,最该先抓住什么?
最该先抓住的不是模型名,而是这句:
预训练的核心价值,是把很多任务都共享的语言能力先集中学出来。
这句话一旦稳住,后面你再看:
- BERT
- GPT
- T5
就会更 自然地先问:
- 它在这条共享底座主线里扮演什么角色?
二、预训练、迁移、微调三者关系是什么?
2.1 预训练
目标是:
- 学通用语言表示和模式
2.2 迁移
目标是:
- 把已有能力带到新任务上
2.3 微调
目标是:
- 在具体任务上做进一步适配
2.4 一个类比
预训练像先读通识教材。
迁移像把这套基础搬去新科目。
微调像针对考试题型做专项训练。
2.5 为什么这个类比特别值得先记?
因为很多新人第一次接触预训练,会误以为:
- 预训练 = 再多训练一会儿
但这个类比会帮你更稳地看到:
- 预训练在学通用能力
- 迁移在复用能力
- 微调在做任务适配
三、先跑一个“共享底座”示例
shared_representation = {
"退款": [1.0, 0.2, 0.1],
"发票": [0.3, 1.0, 0.1],
"密码": [0.1, 0.2, 1.0],
}
def sentence_vector(tokens):
vectors = [shared_representation[token] for token in tokens if token in shared_representation]
dim = len(vectors[0])
return [sum(vec[i] for vec in vectors) / len(vectors) for i in range(dim)]
def classify_intent(tokens):
vec = sentence_vector(tokens)
scores = {
"refund": vec[0],
"invoice": vec[1],
"password": vec[2],
}
return max(scores, key=scores.get), scores
for tokens in [["退款"], ["发票"], ["密码"]]:
print(tokens, "->", classify_intent(tokens))
3.1 这个例子在说明什么?
它想表达的不是一个真实强模型,
而是最核心的范式感觉:
- 先有共享表示底座
- 再在其上完成具体任务
3.2 为什么这很像预训练时代的思路?
因为你不再是:
- 每个任务单独从零学所有表示
而是:
- 复用一套已有语言表示
3.3 新人第一次学预训练范式,最该先记什么?
最值得先记的其实是:
- 预训练不是“多训一步”,而是在换任务组织方式
- 共享底座能力是现代 NLP 的核心资产
- 下游任务的门槛因此大幅下降
3.4 为什么“共享底座”这个视角特别重要?
因为它会直接改变你后面看问题的方式。
你不再只是问:
- 这个任务要不要单独做一个模型?
而会开始更自然地问:
- 这个任务能不能建立在已有底座之上?
- 我到底需要微调、特征抽取,还是 Prompt?
四、为什么这条路后面会走向 BERT / GPT / T5?
4.1 因为它能规模化
一旦预训练成立,
更大的数据、更多的计算通常会继续提升底座能力。