Chuyển đến nội dung chính

レッスン 13: DPO と GRPO — 直接優先の最適化

DPO: 報酬モデルをスキップし、設定から直接トレーニングします。 RLHFとDPOの比較。 GRPO (ディープシーク)。 KTO、IPO のバリエーション。 TRL による完全な実装。

🧠 AI と ML — レッスン 12 レッスン 13: DPO と GRPO — 直接優先 最適化

強化学習: 基礎から高度まで

パート 4: RLHF、LLM の調整と生産

xdev.asia

はじめに

DPO (直接優先最適化) は RLHF を簡素化し、個別の報酬モデルや PPO を必要とせずに、優先データから直接トレーニングします。


1. DPO 対 RLHF

側面RLHFDPO
ステップSFT → RM → PPO (3ステップ)SFT → DPO (2ステップ)
報酬モデル明示的、個別ポリシーに暗黙的に含まれる
トレーニング複合施設 (PPO)シンプル (教師付きのような)
安定性調整が難しい安定
パフォーマンス最先端比較可能な

2. DPO の目的

$$\mathcal{L}{DPO}(\pi\theta; \pi_{ref}) = -\mathbb{E}\left[\log \sigma\left(\beta \log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \beta \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right)\right]$$


3. TRL を使用した DPO の実装

from trl import DPOTrainer, DPOConfig
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("./sft_model")
ref_model = AutoModelForCausalLM.from_pretrained("./sft_model")
tokenizer = AutoTokenizer.from_pretrained("./sft_model")

config = DPOConfig(
    beta=0.1,
    learning_rate=5e-7,
    per_device_train_batch_size=4,
    num_train_epochs=3,
    output_dir="./dpo_model",
)

trainer = DPOTrainer(
    model=model,
    ref_model=ref_model,
    train_dataset=preference_dataset,
    # Dataset format: {"prompt": str, "chosen": str, "rejected": str}
    tokenizer=tokenizer,
    args=config,
)
trainer.train()

4. GRPO — グループ相対ポリシーの最適化

DeepSeek-R1 で使用される:

  • 批判や価値観のネットワークは必要ありません
  • グループベースの優位性の推定
  • 効率的な報酬計算
from trl import GRPOTrainer, GRPOConfig

config = GRPOConfig(
    num_generations=4,  # Generate multiple responses per prompt
    learning_rate=1e-6,
)

trainer = GRPOTrainer(
    model=model,
    reward_funcs=[reward_function],
    train_dataset=prompt_dataset,
    args=config,
)
trainer.train()

5. その他のバリエーション

方法必要なデータ主要なアイデア
DPOペアごとの設定ポリシーにおける暗黙の報酬
GRPOプロンプト + 報酬 fnグループならではのメリット
KTOバイナリ (良い/悪い)ペアなしで動作します
IPOペアごとの設定正規化された DPO
オルポペアごとの設定参照モデルは必要ありません

概要

方法複雑さデータパフォーマンス
RLHF高比較 + RMベスト
DPO低い比較のみすばらしい
GRPO中プロンプト + 報酬 fnすばらしい
KTO低いバイナリフィードバック良い