核心主线: 预训练 → 分类微调 → 指令微调,完成从"无标注文本"到"可对话助手"的完整闭环

一、整体架构图

第五章 → 第六章 → 第七章 技术演进对比表

维度第五章:预训练第六章:分类微调第七章:指令微调
核心目标让模型学会“理解语言和生成文本”让模型学会“识别特定类别”让模型学会“听懂指令并自由回复”
输入数据无标注文本(维基百科、书籍语料)标注数据(短信 + 标签:spam / ham)指令数据集(instruction + input + output)
输出形式能“接龙”生成文本的基础模型垃圾短信检测器 / 情感分析器(固定类别)能执行指令的聊天助手(自由文本)
模型改造无(原始 GPT 架构)替换输出层:50257 维 → 2 维(分类头)保持原词表输出层不变,不添加分类头
训练策略预测下一个 token冻结 Transformer 层,只训练分类头(可选解冻)掩码指令部分,只优化 Response 部分的每个 token
损失函数交叉熵损失(全部 token)只优化最后一个 token 的交叉熵损失只优化 Response token 的交叉熵损失
优化器AdamW(带权重衰减)AdamW(同上)AdamW(同上)
解码/生成温度缩放 + Top‑k 采样不需要生成(直接用 argmax 分类)generate() 自回归 + 温度/Top‑k 控制
评估方法训练/验证损失分类准确率(Accuracy)人工评估 + 自动评估(OpenAI API / Ollama)
局限性只能做无监督生成只能预测训练时见过的固定类别需要高质量指令数据,评估较主观

二、逐章核心要点

第五章:在无标注数据上进行预训练

目标:让模型通过海量无标注文本自学语言规律,获得"接龙"能力。

类别技术/概念说明
数据预处理教师强制目标序列为输入序列右移一位(如输入"A B C",目标为"B C D"),用于自回归训练。
优化器AdamW改进Adam的权重衰减实现,避免权重与梯度耦合,成为大语言模型训练的标准优化器。
生成策略温度缩放调整logits除以温度参数:>1增加多样性,<1降低随机性(如0.5使输出更确定)。
Top-k采样仅保留概率最高的k个token,其余置零后重新归一化,平衡生成质量与多样性(常用k=50)。
模型管理模型持久化使用torch.save保存模型权重、优化器状态;torch.load恢复训练或部署。
加载预训练权重支持加载OpenAI GPT-2系列(124M至1558M参数)至自定义实现架构,需结构匹配。

关键补充说明

  • 教师强制:训练时使用真实历史token作为输入,避免错误累积,但推理时需切换为自回归生成。
  • AdamW优化器:权重衰减直接作用于参数,而非梯度,提升超参数鲁棒性。
  • 温度与Top-k:两者可结合使用,例如温度=0.7且k=40,控制生成多样性与集中度。
    一句话总结:第五章让模型"学会说话"——给它任意前缀,它能合理地续写下去。

第六章:进行文本分类的微调

目标:将预训练模型改造成特定任务的分类器。

配置项参数/说明
数据集SMS Spam Collection(约5000条短信,标签为spam/ham)
架构改造输出层维度从[batch, seq, 50257]调整为[batch, seq, 2],仅保留最后一个token的输出
冻结策略选项1:冻结全部Transformer层,仅训练分类头
选项2:解冻部分Transformer层
损失计算仅对序列最后一个token的输出计算交叉熵损失(非整个序列)
评估指标分类准确率(Accuracy)

关键说明

  • 输出层调整:原始语言模型的50257维输出对应词汇表大小,改造后适应二分类任务。
  • 冻结策略:解冻部分层时需注意梯度传播效率,建议从顶层开始逐步解冻。
  • 损失计算优化:仅计算序列末端损失可显著减少计算量,符合分类任务特性。
    只取最后一个token的输出进行分类
    一句话总结:第六章让模型"学会判断"——给它一段文本,它能输出一个固定类别标签。

第七章:进行遵循指令的微调

目标:让模型成为能理解自然语言指令并自由生成回复的通用助手。

关键要素说明
数据格式每条样本包含 instruction/input/output,按Alpaca模板格式化
损失计算掩码训练时掩码指令部分(设为-100),仅计算Response部分的损失
模型规模选择使用GPT-2 medium(355M参数),比预训练时更大以提升微调效果
生成方式调用generate()函数自回归解码,支持温度(Temperature)和Top-k采样控制
评估方法人工并排对比 + 调用更强模型(如GPT-4/Ollama)自动打分
进阶优化方向多轮对话支持、偏好对齐(DPO/RLHF)、参数高效微调(LoRA/QLoRA)

一句话总结:第七章让模型"学会对话"——给它一个指令,它能理解意图并生成完整、有用的回答。

三、三章对比总表

维度第五章(预训练)第六章(分类微调)第七章(指令微调)
数据类型无标注文本标注数据(文本+标签)指令-响应对
数据规模海量(GB级)小规模(千级)小规模(千级)
输出层词表维度(50257)类别维度(如2)词表维度(50257)
损失范围整个序列每个token仅最后一个token仅Response部分的token
模型改造无替换输出层为分类头无(保持原架构)
生成方式接龙生成无(直接输出类别)自回归生成完整回复
应用场景获得基础语言能力垃圾检测/情感分析聊天机器人/智能助手
关键技能温度/Top-k采样冻结层/准确率评估指令掩码/自动评估

第五章:预训练 —— 预测下一个token,生成接龙文本

第六章:分类微调 —— 只关心最后一个token,输出类别标签

第七章:指令微调 —— 只优化Response部分,生成指令回复

四、总结

第五章让模型"会说话"(预训练接龙)
第六章让模型"会判断"(分类打标签)
第七章让模型"会对话"(指令生成回复)
三章连起来,就是从"文盲"到"专家"再到"助手"的完整成长路径。

更多推荐