0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

勉強したばかりのLLMについて発信する with ChatGPT

Posted at

去年の8月ころから、東大松尾研のLLM講座に関連する行事に参加しはじめました。
初年度は、右も左もわからない状態でした。
AIについては、前職で1976年頃に1度、2020年頃に1度招待講演をしたことがあります。
深層学習と量子計算機の勉強会にも補助講師、講師として企画してきました。
LLMの流れには、一歩出遅れた感じです。

ChatGPTを使うのも、四歩遅く、ChatGPT5になってからです。
利用しはじめたのは、愛知県立名古屋高等専門校で、構造化プログラミングとUMLの講義を担当するようになり、生徒がAIを利用しているとのことで、利用上の注意をウナが目的もあり、講義で利用しはじめたのが出発点です。

主な注意事項は、次の4点
著作権、特許などの知財もしらべてもらう。
参考文献はWikipediaを除外してもらう。
自分の作品、意見を出発点にしてもらう。
HAZOPの11のGuideWordごとに調べてもら。

Calendarの開催

東大松尾研のLLM勉強会に参加した課題ごとに、Calendarを開催することにしました。

ChattGPT

ChatGPTを十分に活用することにしました。

強化学習のPPOを説明してください。

以下では、**PPO(Proximal Policy Optimization)**を「なぜ生まれたか → 何を解決するか → どう動くか → 数式の意味 → 実装の勘所」まで、段階的にわかりやすく説明します。

🔵 1. PPOとは?

**PPO(Proximal Policy Optimization)は、強化学習の代表的な方策勾配(Policy Gradient)**アルゴリズムです。
DeepMind が 2017 年に提案し、OpenAI Gym の多くのタスクで基準となっています。
特徴:

  • 安定して学習する
  • チューニングしやすい
  • TRPOのような複雑な制約最適化を必要としない
  • 多くのロボット制御・ゲームAI・対話モデルで使用

🔵 2. なぜPPOが必要だったか?

従来の方策勾配法(REINFORCE)やActor-Criticは、

● 大きく方策(policy)が更新されると性能が悪化

→ “壊れた”方策になり、学習が不安定に。

● TRPOは安定だが実装が複雑

Trust Region Policy Optimization(TRPO) は更新幅をKL制約で抑えるが、

  • 2階微分、
  • 共役勾配法、
  • 制約付き最適化…
    と複雑。

🔵 3. PPOの基本発想

「方策更新が“大きく行きすぎないように”罰を与える」
つまり、

“Too much change is bad”
を数学的に表したアルゴリズム。
PPOは2つの方法を提案したが、一般に使われるのは:

PPO-Clip(クリッピング方式)

🔵 4. PPO-Clip の中心式

PPOの目的関数(loss)は次:

[
L^{CLIP}(\theta)
================

\mathbb{E}_t
\Big[
\min\big(
r_t(\theta) A_t,
,
\text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon),A_t
\big)
\Big]
]

● 各記号の意味

  • ( r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} )
     → 新しい方策/古い方策 の比(importance ratio)
  • ( A_t )
     → アドバンテージ(良い行動か悪い行動か)
  • clip(…, 1−ε, 1+ε)
     → 更新幅が ε の外に出ないように切る

🔵 5. クリッピングの効果(直感)

■ アドバンテージ > 0(良い行動を増やしたい)

  • 新しい方策確率が増えすぎると r が 1+ε を超える
    → **増やしすぎ禁止!**でクリップして損失が増えない

■ アドバンテージ < 0(悪い行動を減らしたい)

  • 確率が減りすぎると r が 1−ε 未満になる
    減らしすぎ禁止!
    → 結果として、
    「少しずつ着実に良くなる」方策更新が保証される

🔵 6. PPOの学習ループ(全体像)

  1. 現在の方策 θ_old で環境を一定ステップ走らせる(rollout)
  2. 状態・行動・報酬をメモリに貯める
  3. アドバンテージ A_t を GAE などで計算
  4. PPO-Clip 損失で θ を更新(複数回)
  5. θ_old ← θ に更新
  6. 繰り返す

🔵 7. PPO が好まれる理由

アルゴリズム 安定性 実装の簡単さ 収束速度
REINFORCE ×
Actor-Critic
TRPO ×
PPO
  • TRPOの安定性をほぼそのまま再現
  • コードが短い(PyTorchで50行程度)
  • Hyperparameter tuning が少ない
    深層強化学習のデフォルト手法とされることが多い。

🔵 8. PPO の実装の勘所

  • GAE(Generalized Advantage Estimation) を使うと安定する
  • (\epsilon=0.1 \sim 0.3) が一般的
  • 複数エポックで同じデータを反復して学習できる点が強い
  • バッチサイズを大きくすると性能が良い

🔵 9. まとめ(最重要点だけ)

  • PPOは「更新しすぎると壊れる問題」を改善する
  • クリッピングにより「変更しすぎ禁止!」の安全領域を作る
  • TRPOより簡単で強力
  • 現代の強化学習では標準的なアルゴリズム
    必要なら、以下もできます:
  • PPO の数式だけ
  • PyTorch最小コード(50行)
  • PPO と SAC / TD3 の比較
  • Actor–Critic を前提にしたより初学者向け説明
    どれを見たいですか?

DPOとの違いはなんですか。

以下では、**PPO(Proximal Policy Optimization)**と
**DPO(Direct Preference Optimization)**の違いを、
目的・使用場面・数式レベルでわかりやすく比較します。

🔵 結論:PPO と DPO は用途がほぼ別物

項目 PPO DPO
分野 強化学習(RL) 生成AIモデルの preference learning(RLHFの一種)
目的 環境からの報酬を最大化 好ましい応答(人間の選好)に直接近づける
使用データ 状態・行動・報酬(オンライン) 人間の「良い/悪い」回答ペア(オフライン)
代表式 クリッピングした policy gradient 好ましい応答が勝つように分類損失
主な課題 方策が壊れないように更新を制限 参照モデルとの KL 拡散を自然に抑制
主な用途 ロボット制御、ゲームAI LLMの微調整(RLHFの軽量版)

🔵 1. PPOは「環境の報酬を最大化」

PPOは、
環境から報酬を得ながら、方策(policy)を更新する強化学習

損失関数(PPO-Clip)

[
L(\theta)
=========

\mathbb{E}
\left[
\min
\left(
r_t(\theta) A_t,
;
\text{clip}(r_t(\theta),1-\epsilon,1+\epsilon)A_t
\right)
\right]
]

PPOのポイント:

  • 古い方策と新しい方策の確率比 (r_t) を使う
  • 更新幅(KL divergence)をclipで制限
  • ロールアウト(環境との相互作用)が必須 → オンライン

🔵 2. DPOは「人間の好みを直接最適化」

DPO は RLHF の簡易版で、
報酬モデルを作らずに「好ましい回答」が勝つようにモデルを更新する。
使うデータは:

  • 好ましい回答:( y^{+} )
  • 好ましくない回答:( y^{-} )
  • 同じプロンプト:( x )

DPO 損失関数

[
L(\theta)
=========

-\log
\frac{
\exp\left(\beta \log \pi_\theta(y^+|x) - \log \pi_{\text{ref}}(y^+|x)\right)
}{
\exp\left(\beta \log \pi_\theta(y^+|x)-\log \pi_{\text{ref}}(y^+|x)\right)
+
\exp\left(\beta \log \pi_\theta(y^-|x)-\log \pi_{\text{ref}}(y^-|x)\right)
}
]

特徴:

  • **分類問題(勝ち/負け)**として扱う
  • 参照モデル(ref)との差分が KL 制約と等価に効く
  • 追加の報酬モデルを不要にする
  • すべて オフラインで学習できる(LLM向き)

🔵 3. 役割の違い(超重点)

■ PPO

  • 行動をとる → 報酬をもらう → 改善する
  • ロボット、ゲーム、制御、RLHFの最終ステップ

■ DPO

  • LLMに 選好(preference)データを食わせて、
  • 「好ましい回答を出す確率を上げる」だけ
  • 環境も報酬も不要(LLM特化)

🔵 4. TRL(LLM世界)での扱い

現代の LLM RLHF では:

  • PPO = 使用されるが 実装が重い
  • DPO = 軽量で強く、主流になりつつある
    なぜか?
  • DPOは報酬モデル不要 → 簡単
  • KL制御が自動で生まれる(refとの比較で)

🔵 5. 数式上の比較(本質)

✔ PPO

「古い policy から離れすぎないようにしつつ、
報酬に比例して policy を改善する」

[
\max_\theta ;
\mathbb{E}[r_t A_t]
\text{ with clipping}
]

✔ DPO

人間が選んだ y+ が勝つ確率を最大化しつつ、
refモデルへの KL が自然と効く」

[
\max_\theta \Pr_\theta(y^+ \succ y^-)
]

🔵 6. もっと短い要約(最重要ポイント)

● PPO

強化学習の手法(オンライン)
報酬を最大化する
古い policy から離れすぎないように clip

● DPO

LLM微調整の手法(オフライン)
好ましい回答が勝つように分類
refモデルとの差が KL と同等の役割

🔵 7. さらに理解したい方向けに

必要なら以下も続けられます:

  • PPOとDPOのKLの違い(TRPOとの関係を含む)
  • DPOとPPOを同じ枠組み(RL as Inference)で統一的に説明
  • LLM RLHF で PPO が使われる部分(最終stage)
  • DPO の PyTorch 最小実装(30行)
    どれを見たいですか?

GRPOはなんですか。

良い質問です。「GRPO(Group Relative Policy Optimization)」は最近注目されている強化学習 (RL) 手法で、特に大規模言語モデル(LLM)の「思考力(Chain-of-Thought)付き応答」の強化に使われています。以下で GRPO とは何か、どういう特徴があるかを解説します。


GRPO(Group Relative Policy Optimization)とは

GRPO は、LLM を強化学習で微調整するための手法の一種で、次のようなポイントがあります。

  1. グループ相対評価 (Group-relative)

    • ミニバッチ (あるいは “グループ”) 内の複数の応答 (トラジェクトリ) を比較し、どの応答が「より良かったか」を相対評価 (順位や分位など) によって扱う。 (株式会社一創 |)
    • 絶対的な報酬 (たとえば「正答かどうか」) の値そのものに強く依存せず、相対指標を使って方策を更新する。 (株式会社一創 |)
  2. Critic(価値関数)を使わない / 削減

    • 一部の議論・実装では、GRPO は学習されたクリティック(値関数)を持たず、グループ単位の比較からアドバンテージを推定する。 (arXiv)
    • これにより、従来の方策勾配 + 値関数 (Actor-Critic) スキームよりもシンプルな構造になる。
  3. KL 正則化

    • 新しいポリシー (ファインチューニング中の LLM) と参照ポリシー (リファレンスモデル) 間の差 (KL divergence) をペナルティ (正則化) として入れる。これにより、過度な破壊 (ポリシーの暴走) を防ぐ。 (Reddit)
    • トークン単位で重みを調整するバリアント (例: Token-Regulated GRPO) も提案されている。 (arXiv)
  4. LLM に対する効率性

    • LLM(特に推論モデル)への強化学習適用に最適化されており、学習コスト (GPU、VRAM) を抑えられるアプローチが実証されている。 (Reddit)
    • DeepSeek-R1 などで採用され、複雑な推論 (数学、コーディング、科学) 能力を強化するのに用いられている。 (TechTarget Japan)

GRPO の利点・課題

利点

  • 報酬スケールやノイズに強い
    グループ内相対評価を使うので、報酬の絶対値がスパースだったりノイズが大きかったりしても比較的ロバスト。 (株式会社一創 |)
  • モデルが持つ既存知識を活かせる
    クリティックを使わない分、事前学習モデルの知識 (LLM がすでに持っている “価値” や確率分布) をうまく活用できる。
  • コスト削減
    従来法 (PPO など) に比べてリソース効率が良いと報告されている。 (Reddit)
  • 安定性
    グループ比較 + KL 正則化によって、方策の更新が安定しやすい。

課題・限界

  • 全負サンプル問題
    − グループ内で「どの応答も不正確 (=全負サンプル)」というケースでは、GRPO の更新がうまく働かないという指摘がある。 (J-GLOBAL)
  • 構造的異種性
    − LLM の応答 (例: 複数ステップ推論) において、異なるトラジェクトリの構造 (長さ・形・複雑さ) の違いをどう扱うかが難しい。これに対処する「層化 GRPO (Stratified GRPO)」などの研究がある。 (J-GLOBAL)
  • トークンレベル勾配の不均衡
    − 低確率トークンが勾配を支配しすぎる可能性がある → Token-Regulated GRPO といった改良が出てきている。 (arXiv)
  • 従来 RL タスクとの適用性
    − 古典的な制御タスク (Atari, MuJoCo など) に対して GRPO を使うと、PPO など既存手法より劣るという報告がある。 (arXiv)

PPO や DPO との比較(簡単)

  • PPO:従来の方策最適化。クリティック (値関数) を使う。更新はクリッピングなどで安定化。
  • DPO:好み (preference) データを使ってオフラインで方策を微調整。主に LLM の応答質 (人間の選好) を改善。
  • GRPO:LLM の複数応答 (軌跡) を同時に比較 (グループ相対) して、最も “良い応答” を選好して強化。PPO よりシンプルな構造 (クリティックを省く)、DPO とは異なる “強化学習+推論能力” の強化。

もしよければ、GRPO の数学的な目的関数 (ロス関数) を式で説明できます。また、GRPO の PyTorch 実装例PPO や DPO とのベンチマーク比較も紹介できます。やりましょうか?

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?