让模型学会什么回答更美
Level 2 | 对齐篇
chosen = 鸡你太美的回答,rejected = 小黑子的回答。
- 什么是偏好对齐?为什么 SFT 后还需要对齐?
- RLHF 太复杂 → DPO 的简化思路
- DPO 损失函数原理(不需要奖励模型!)
- 如何构造 chosen/rejected 偏好数据
- 训练前后效果对比
基于 MiniMind 的 trainer/train_dpo.py
cd trainer && python train_dpo.py \
--from_weight full_sft --beta 0.1 \
--hidden_size 512 --epochs 2传统 RLHF: 训练奖励模型 → PPO 强化学习 → 复杂!
DPO: 直接从偏好数据学 → 一步到位 → 简单!
核心思想: 好的回答概率 ↑,差的回答概率 ↓
Loss = -log(σ(β * (好的log概率 - 差的log概率)))
{
"chosen": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!我是ikun,练习时长两年半!鸡你太美~"}
],
"rejected": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好。"}
]
}| Level | Repo | 学什么 |
|---|---|---|
| 1 | ikun-tokenizer | 分词器原理 |
| 1 | ikun-pretrain | 从零预训练 |
| 1 | ikun-2.5B | SFT + LoRA 微调 |
| 2 | ikun-DPO <-- 你在这里 | 偏好对齐 |
| 2 | ikun-GRPO | 强化学习 |
| 2 | ikun-Reason | 推理模型 |
| 3 | ikun-MoE | 混合专家 |
| 3 | ikun-Distill | 知识蒸馏 |
| 3 | ikun-V | 多模态 |
| 4 | ikun-deploy | 部署 |