分类微调 — 把会续写的 GPT 改成垃圾短信分类器
这一章讲一件事: 拿第 07 章搬好权重的预训练 GPT,改造成一个只能回答 「垃圾 / 不垃圾」的分 类器——全过程:换输出头、冻主干、训 5 轮、看准确率。 这是全书「阶段 3」的第一种微调,也是理解「为什么预训练值钱」的最好例子: 改动不到 1% 的参数,就换来一个 95% 准确率的专用工具。
1. 这一章讲什么
第 01 章说过微调有两类:分类微调和指令微调。这一章做前者。 选的例子是垃圾短信识别——书里的理由很实在:数据集小、任务直观、笔记本几分钟训完1。 但重点不在短信,在手法:「一台只会续写的机器,怎么变成一台只做判断的机器」, 这套手法对任何分类任务通用。
2. 顶层全景
手术前后对比:
手术前(预训练 GPT):输入一条文本 → 每个位置输出 50,257 维 logits → 管「下一个词是什么」
手术后(分类器): 输入一条短信 → 只看最后一个位置的输出 → 2 维 → 管「是不是垃圾」
手术内容:
① 数据:5,572 条短信 → 下采样到 747/747 → 70%/10%/20% 切三份
② 换头:out_head 从 768→50,257 换成 768→2
③ 冻结:主干全部设 requires_grad=False,只留新头 + 最后一个块 + 最终归一化可训
④ 训练:同一个交叉熵、同一个 AdamW,只是损失只算最后一个位置
⑤ 评估:准确率 = 猜对的比例
图说:模型的 99% 原封不动;「分类能力」是预训练白送的,微调只是给它接上一个出口。