ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

笔记十六:在线DPO

笔记十六:在线DPO

大模型偏好优化算法完全指南

从 PPO 到 Best-of-N,一文搞懂所有"XXO"

目录

  • 第一部分:基础概念篇
    • 1.1 什么是"对齐"(Alignment)?
    • 1.2 什么是"偏好优化"(Preference Optimization)?
    • 1.3 TRL 是什么?
    • 1.4 一个贯穿全文的核心理解
  • 第二部分:算法详解篇
    • 2.1 PPO —— 鼻祖级算法
    • 2.2 DPO —— 去掉奖励模型的简化版
    • 2.3 Online DPO —— 解决数据过时问题
    • 2.4 KTO —— 不需要配对数据的DPO
    • 2.5 IPO —— 防止过拟合的DPO
    • 2.6 ORPO —— 省掉参考模型的DPO
    • 2.7 GRPO —— DeepSeek的选择
    • 2.8 Best-of-N / RFT —— 最简单粗暴的方法
  • 第三部分:总结与选型篇
    • 3.1 全算法对比一览表
    • 3.2 决策树:到底该选哪个?
    • 3.3 黄金法则
    • 写在最后

第一部分:基础概念篇

1.1 什么是对齐(Alignment)?

大语言模型(LLM)在预训练阶段学到的只是"预测下一个词"的能力。比如你问它"1+1等于几?“,它可能会老老实实回答"2”,也可能因为训练数据里的某些毒舌文本,回答"这都算不出来?是2啊笨蛋!"。

对齐(Alignment)的目标就是:让模型的输出符合人类的偏好——回答要准确、有用、无害、符合人类价值观。

简单说:教模型"好好说话"

1.2 什么是偏好优化(Preference Optimization)?

偏好优化是一类专门用于"对齐"的训练方法。它们的共同特点是:

  • 不是教模型"抄答案"(那是SFT,监督微调)
  • 而是教模型"知道什么好、什么坏"(学会偏好)

就像教一个孩子:

  • SFT:你写一遍标准答案,让孩子照着抄。
  • 偏好优化:你给孩子的几份作业打分,好的表扬、坏的批评,让他自己悟出"怎么写才对"。

1.3 TRL 是什么?

TRL的全称是Transformer Reinforcement Learning(变压器强化学习),是由Hugging Face官方维护的一个专门针对大语言模型后训练(Post-Training)的Python库。

用一句话概括:它是把强化学习和偏好学习(如DPO、PPO)塞进大模型训练的最主流的"工业级工具箱"。

如果你用过 Hugging Face 的transformers库,TRL 就是它的"强化学习扩展包"。它提供了各种现成的 Trainer:

Trainer 名称用途
SFTTrainer监督微调(指令微调)
DPOTrainer标准DPO训练
OnlineDPOTrainer在线DPO训练
KTOTrainerKTO训练
ORPOTrainerORPO训练
PPOTrainerPPO强化学习训练
GRPOTrainerGRPO训练

你不需要手写复杂的训练循环,几行配置就能跑起来。

1.4 一个贯穿全文的核心理解

⚠️这是全文最重要的理解,请务必记住!

在SFT(监督微调)中,训练方式是:

  1. 给模型看[问题 + 标准答案]
  2. 模型预测每个词的概率
  3. 计算交叉熵损失:让模型预测的每个词越来越接近标准答案
  4. 目标:让模型学会"抄写"标准答案

所有偏好优化算法(PPO、DPO、KTO、IPO、ORPO、GRPO、Best-of-N)中,训练方式是:

  1. 给模型看[问题 + 某个回答](这个回答可能是模型自己生成的,也可能是数据集中已有的)
  2. 模型只做一次前向传播,计算出这个回答中每个Token的生成概率
  3. 把这些概率加起来(或取对数求和),得到一个句子级别的总概率
  4. 根据这个回答的"好坏标签"或"相对排名",决定把这个总概率拉高还是拉低
  5. 反向传播更新整个模型的全部参数(或通过LoRA更新部分参数)

关键区别:偏好优化不是让模型去"抄写"某个答案,而是调整模型参数,使得"好回答"被生成的概率变高,"坏回答"被生成的概率变低

训练时,模型并没有"重新生成"一遍回答。它只是对已经存在的回答文本计算概率,然后用这个概率去算损失。

💡打个比方

  • SFT= 老师给标准答案,学生照着抄(逐字逐句模仿)。
  • 偏好优化= 老师看了学生的作业,说"这份不错,以后多这么写;那份不行,以后别那么写"。学生并没有重写一遍,只是记住了这个评价,以后写作业时会调整。

第二部分:算法详解篇

2.1 PPO —— 鼻祖级算法

2.1.1 它是什么?

PPO(Proximal Policy Optimization,近端策略优化)是最早被成功应用于大模型对齐的强化学习算法。OpenAI 用它训练了 InstructGPT,Anthropic 用它训练了 Claude。

2.1.2 它怎么做?

PPO 的训练分三步走:

  1. 收集样本:让当前模型生成一堆回答,用奖励模型(Reward Model)给每个回答打分。
  2. 计算优势值:用 GAE(广义优势估计)算出每个动作(生成的词或句子)的"优势"——这个动作是"好"还是"坏",好多少、坏多少。
  3. 更新策略:用"裁剪目标函数"微调模型——只保留"优势值高且和旧策略差异小"的更新,确保模型每次只进步一点点,不"跑偏"。

2.1.3 它要几个模型?

4个模型

  1. 策略模型(Policy,正在训练的模型)
  2. 参考模型(Reference,
返回列表