目录

一、SFT

1. SFT 的核心思想

2. SFT根据更新参数量不同可以分为以下两种

2.1 LORA

2.2 QLoRA(Quantized  LoRA)

2.3  Adapter Tuning

2.3.1  核心概念:什么是 Adapter?

2.3.2 工作原理详解

2.4 Prefix Tuning

2.4.1 核心概念

2.4.2 核心机制详解

2.5 Prompt Tuning

2.5.1 核心概念:什么是 Prompt Tuning?

2.5.2 与prefix tuning图解对比

二、PPO(Proximal Policy Optimization)

1. PPO的核心思想

2. PPO 在 RLHF (Reinforcement Learning from Human Feedback)中的应用流程

三、DPO

四、DPO与PPO对比


一、SFT

监督微调(Supervised Fine-Tuning, SFT)是大语言模型(LLM)对齐技术中的基础且关键的一步。它是在预训练模型的基础上,使用人工标注的 (prompt, response) 数据对模型进行有监督训练,使其学会遵循指令、生成高质量的回答。

1. SFT 的核心思想

  • 输入:一个指令(prompt),如“写一首关于春天的诗”

  • 输出:一个高质量的回答(response),由人工撰写

  • 目标:让模型学会“给定一个指令,生成一个符合人类期望的回复”

🔑 本质:从“能生成文本” → “生成有用的、有帮助的文本”

2. SFT根据更新参数量不同可以分为以下两种

  • 全量参数更新 FFT(Full Fine-tuning):即对预训练模型的所有参数进⾏更新,训练速度较慢,消耗机器资源较多。

  • 参数⾼效微调 PEFT(Parameter-Efficient Fine-Tuning):只对部分参数做调整,训练速度快,消耗机器资源少。常见的如LoRA微调、QLoRA微调。

2.1 LORA

它通过冻结原始大模型的权重,仅训练一小部分新增的低秩矩阵,来实现对模型的高效微调,从而大幅降低显存占用和计算成本.

LoRA 的核心创新在于:它不直接更新原始权重矩阵 W ,而是学习一个低秩的增量 ΔW

具体来说,对于模型中的某个权重层 W=R^{d\times k},LoRA 将其更新表示为:

W_new=W+\bigtriangleup W=W+B.A

  • W\in R^{d\times k}:原始冻结权重(如 UNet 中的 to_q, to_v

  • A\in R^{r\times d}:从输入投影到低维空间

  • B\in R^{k\times r}:从低维空间投影回输出空间

  • r :秩(rank),超参数,通常 rd

  • 训练时只更新 A 和 B ,W 保持冻结

LORA参数详解

参数符号说明备注

r

  • 低秩矩阵的隐含维度,控制参数量和表达能力

  • 推荐值:

    • 小任务/风格微调:r=4~8

    • 中等复杂度(如人物、场景):r=16~32

    • 高精度控制(IP角色、UI生成):r=64

  • 调参建议:

    • 数据量少时避免过大 r,防止过拟合;

    • 中文语义理解任务建议 r≥16,以捕捉更丰富的语义映射。

  • 影响:

    • ↑ r → 参数量↑、表达能力↑、显存↑、训练成本↑

    • ↓ r → 更轻量,但可能欠拟合

缩放因子

α

  • 控制 LoRA 输出的缩放比例, \bigtriangleup W=\frac{a}{b}.BA

通常设置为α=2*r

Dropout

dropout

  • 在矩阵 A 的输出上应用 Dropout,防止过拟合,尤其在小数据集上有效

  • ↑ dropout → 正则化增强,训练更稳定,但收敛变慢

浮点数[0.0,1.0]

矩阵初始化方式

init

  • LoRA 矩阵 A 和 B 的初始化策略

A :从正态分布初始化(mean=0, std=0.02)

B :全零初始化(zeros)

  • 保证训练开始时 ΔW=BA=0 ,模型行为与原始模型一致,提升稳定性。

  • 不要将 B 初始化为非零值,否则会破坏预训练知识!

目标模块

target_modules

  • 指定在哪些网络层插入 LoRA,决定微调的粒度和控制能力

字符串列表

  • 推荐策略:

    • 仅关键层:["q_proj", "v_proj"] → 轻量高效,适合风格迁移

    • 全注意力:["q_proj", "k_proj", "v_proj", "out_proj"] → 更强控制力,适合角色绑定

    • 卷积层(LoCon):"conv_in", "conv1" → 提升局部结构感知(如文字排版、边框对齐)

LoRA α/r 比例

alpha/ratio

  • 缩放系数与秩的比值,影响学习强度

2.2 QLoRA(Quantized  LoRA)

2.3  Adapter Tuning

2.3.1  核心概念:什么是 Adapter?

如果把预训练大模型比作一个固定的高速公路网络

  • 传统微调:重新修建整个高速公路(更新所有模型参数),成本高,且容易破坏原有结构。
  • Adapter 微调:在高速公路的每个出入口(每一层 Transformer)加一个小型匝道(Adapter 模块)。车流(数据)经过时,通过匝道进行特定任务的调整,而主路(预训练模型)保持原样不动。

核心定义

  • 位置:嵌入在预训练模型的每一层(或某些层)中。
  • 训练策略:冻结预训练模型主体参数,只训练新增的 Adapter 模块参数。
  • 目的:让大模型适应下游特定任务,同时避免全量微调的高成本和“灾难性遗忘”。
2.3.2 工作原理详解

1. 模型结构如下图所示:

关键参数:

  • d:模型原始隐藏层维度(如 4096)。
  • m:Adapter 中间层维度(瓶颈维度,如 64 或 256)。
  • m≪d:通过控制 m 的大小,极大地限制了参数量(通常只占模型总参数的 0.5% - 5%)

2. 工作流程

  • 前向传播:
    • Transformer 层的输出进入 Adapter。
    • 先压缩到低维空间(提取任务特定特征)。
    • 再还原到高维空间(与原始模型维度对齐)。
    • 结果通常与原始输入相加(残差连接),确保信息不丢失
  • 反向传播
    • 预训练模型的权重梯度为 0(冻结)。
    • 梯度只更新 Adapter 内部的权重。

2.4 Prefix Tuning

2.4.1 核心概念

通俗理解: 想象你要训练一个员工(大模型)做不同的工作(写销售话术、写行程介绍)。

  • 传统微调:重新培训整个员工的大脑(更新所有模型参数),成本高,且学会新技能容易忘掉旧技能。
  • Prefix Tuning:给员工发不同的 “任务手册”(Prefix)。员工的大脑(模型主体)不动,只根据手册的指引来工作。训练时,只优化这本“手册”的内容,不改变员工原有的知识。

核心定义

  • 在输入 token 之前,构造一段 任务相关的虚拟 tokens(Virtual Tokens) 作为 Prefix。
  • 训练时 只更新 Prefix 部分的参数,预训练语言模型(PLM)的其他部分参数 固定(Frozen)。
2.4.2 核心机制详解

1. 虚拟 Tokens(Virtual Tokens)

  • 不是真实词语:这些 Prefix 不是 "请", "写", "生成" 这样的真实词汇,而是 连续的向量(Continuous Vectors)。

  • 可学习参数:它们像模型权重一样,通过反向传播梯度下降来优化。

  • 作用:相当于在模型的注意力机制中注入了一种“软提示(Soft Prompt)”,引导模型进入特定的任务状态。

2. 参数冻结(Parameter Freezing)

  • 基座模型冻结:大模型(如 LLaMA, T5)的原始权重 W 保持不变。

  • 仅训练 Prefix:假设 Prefix 长度为 L,维度为 d,则只训练 L×d 个参数。

  • 参数量极小:通常只占模型总参数的 0.1% - 1%,极大节省显存和存储。

备注:为什么要用“连续向量”?

1 突破词汇限制

  • 问题:有时候,想要引导模型完成特定任务(如“写销售话术”),人类语言中可能没有完美的词能精准触发模型的这种状态。

  • 解决:连续向量可以在高维空间中找到一个人类语言无法表达的位置,这个位置恰好能最大程度激活模型中关于“销售”、“热情”、“转化”相关的神经元。

2 可直接优化(关键!)

  • 问题:如果想优化真实词语,你需要尝试“请写”、“帮我写”、“生成”... 这是组合爆炸,且无法求导。

  • 解决:连续向量是参数,可以直接用梯度下降: Prefix_{new}=Prefix_{old}-LearningRate\times \bigtriangledown Loss
    模型会自动找到那个“最优向量”,而不需要人工试错。

2.5 Prompt Tuning

2.5.1 核心概念:什么是 Prompt Tuning?

通俗理解: 如果把大模型比作一个博学的专家:

  • 传统微调:重新培训专家的大脑(更新所有参数)。
  • Prefix Tuning:在专家工作的每一个环节(每一层网络)都塞一张提示纸条(MLP 生成)。
  • Prompt Tuning:只在专家开始工作前(输入层),给一张最简单的提示纸条,专家就能懂你的意思。

核心定义

  • 输入层添加:只在模型的 Input Embedding 层 拼接可学习的 Prompt Tokens。
  • 无需 MLP:直接优化 Prompt 向量,不需要像 Prefix Tuning 那样通过 MLP 重参数化来稳定训练。
  • 模型冻结:预训练模型(PLM)的主体参数完全固定,只训练 Prompt 参数。
2.5.2 与prefix tuning图解对比
Prompt Tuning:
[Prompt] + [Input] → [Transformer Layer 1] → ... → [Output]
   ↑
 仅此处添加

Prefix Tuning:
[Prompt] + [Input] → [Transformer Layer 1 + Prefix] → ... → [Layer N + Prefix] → [Output]
   ↑                   ↑                               ↑
 输入层添加           每层都添加 (Key/Value 注入)

二、PPO(Proximal Policy Optimization)

1. PPO的核心思想

PPO 是一种策略梯度方法,其目标是通过与环境(在这里是“人类偏好”)的交互来优化模型的策略(即生成文本的方式),使其获得更高的奖励。

  • 策略(Policy):语言模型本身,输入 prompt,输出 response。

  • 奖励(Reward):由一个奖励模型(Reward Model, RM)根据人类偏好打分。

  • 目标:调整策略,使得生成的 response 能获得更高的奖励。

PPO 的核心创新在于引入了 “近端”(Proximal) 概念,通过一个剪裁(clipping)机制来限制策略更新的幅度,防止更新过大导致训练不稳定。

2. PPO 在 RLHF (Reinforcement Learning from Human Feedback)中的应用流程

PPO 是 RLHF 的第三步,完整流程如下:

1.SFT (Supervised Fine-Tuning)

  • 使用 (prompt, response) 数据对预训练模型进行监督微调,得到一个基础的、能遵循指令的模型

2. Reward Modeling (RM)

  • 收集人类对同一 prompt 的多个 response 的偏好数据(chosen vs rejected)
  • 训练一个独立的奖励模型(RM),使其能够预测人类对任意 response 的偏好分数

3.PPO微调:

  • 初始化:将 SFT 模型作为 PPO 的策略模型(Policy Model)。

  • 生成:策略模型为一批 prompt 生成 responses。

  • 打分:奖励模型(RM)为这些 responses 打分。

  • 计算奖励:奖励不仅来自 RM,还包含一个KL 散度惩罚项,用于衡量当前策略模型与初始 SFT 模型的差异,防止模型“跑偏”太远。

  • 更新策略:使用 PPO 算法,根据综合奖励来更新策略模型的参数。

🔁 这个过程会迭代进行,模型生成的 response 越来越符合人类的偏好

三、DPO

DPO 的核心突破在于:它绕过了显式训练奖励模型(Reward Model)和使用强化学习算法(如 PPO)的复杂流程。

  • 传统 RLHF 流程:

    • SFT(监督微调)

    • 训练 Reward Model(基于人类偏好)

    • 使用 PPO 强化学习优化策略

  • DPO 流程:

    • SFT

    • 直接使用偏好数据优化模型

DPO 从数学上证明,可以通过一个巧妙的损失函数,直接将 (prompt, chosen, rejected) 的偏好数据转化为策略优化信号,而无需中间的奖励模型。

四、DPO与PPO对比

步骤

PPO

DPO

1.基础模型

SFT(监督微调)

SFT(监督微调)

2.偏好学习

训练 Reward Model(RM)

无需 Reward Model

3.策略优化

使用 PPO 算法,结合 RM 打分更新策略

直接使用(prompt, chosen, rejected)数据优化模型

4.训练方式

强化学习(RL)

强化学习(RL)

更多推荐