模倣学習と逆強化学習 — お手本から学ぶ、意図を推定する
報酬関数を書けないタスクは山ほどあります。「上手な運転」「丁寧な皿洗い」を数式で定義できるでしょうか。代わりに専門家のお手本(デモンストレーション)から学ぶのが模倣学習。行動をそのまま写す行動クローニングと、行動の裏にある意図(報酬)を推定する逆強化学習、2つの流儀を動かして比べます。
1. 報酬が書けないなら、お手本を見せればいい
ここまでの章では報酬関数は「環境が与えてくれるもの」でした。ゲームのスコア、ゴール到達の +1。しかし現実のタスクでは、報酬関数を書くことこそが最難関です。運転の報酬を「車線中央からのずれ −α、急ブレーキ −β、…」と書き始めると、項を足すたびに新しい抜け穴が生まれます(この問題は次章の報酬ハッキングで正面から扱います)。
一方で、上手にやってみせることなら人間は得意です。運転のログ、ロボットの遠隔操作記録、囲碁の棋譜 — これらは (状態, 専門家の行動) のペアの列、つまりデモ軌跡です。デモから方策を得るアプローチは大きく2つに分かれます。
- 行動クローニング(BC) — 「この状態ではこの行動」という写像そのものを教師あり学習で写し取る。
- 逆強化学習(IRL) — 専門家が何を最大化しているのか(報酬関数)を推定し、その報酬で改めてRLを解く。
2. 行動クローニング — 模倣を教師あり学習にする
BC は拍子抜けするほど単純です。デモの各時点を訓練データ (si, ai) とみなし、状態を入力、専門家の行動を正解ラベルとして回帰・分類するだけ。RL特有の道具は一切使いません。
問題は実行時に起きます。学習した方策で走り出すと小さな誤差が必ず出る。誤差の分だけデモから少し外れた状態に入る。そこはデモになかった状態なので方策の出力はさらに不正確になり、誤差が誤差を呼んで軌道が発散します。下のデモで、お手本の近く(青い帯の中)では上手に走るのに、帯から一歩出た途端に迷子になる様子を確かめてください。
3. 逆強化学習 — 行動ではなく「意図」を学ぶ
BC の弱点への一つ目の処方箋は、視点を一段上げることです。専門家の行動を写すのではなく、「この人は何を大事にして動いているのか」— つまり報酬関数を推定する。これが逆強化学習(Inverse RL)です。通常のRLが「報酬 → 最適方策」を解くのに対し、IRL は「専門家の軌跡 → 報酬」という逆問題を解きます。
下のデモでは、専門家が3本の軌跡を残しています。全員わざわざ遠回りして上を通っている。なぜか? 候補となる報酬仮説を3つ用意し、それぞれの仮説のもとでこのデモがどれくらい「ありそうか」(尤度)を計算して比べます。
「デモがどれくらいありそうか」は、最大エントロピーIRL では次の形で定式化されます。報酬の高い軌跡ほど指数的に選ばれやすい、という確率モデルです。
ただし IRL は計算が重いのが難点です。報酬の候補を1つ評価するたびに、内側で「その報酬での最適方策」を解く必要がある(RLを何百回も解き直す)。また「デモを説明できる報酬は無数にある」という不良設定性(すべての状態に同じ定数を足しても尤度は変わらない等)があり、最大エントロピー原理などの追加の仮定で一意化します。
4. DAgger — 失敗したら専門家に聞き直す
BC の弱点への二つ目の処方箋は、もっと現場的です。分布シフトが問題なら、シフト先の状態のデータを集めればいい。DAgger(Dataset Aggregation)は次のループを回します。
- 現在の方策で走らせる(失敗してもよい)。
- 方策が実際に訪れた状態を集め、そこで取るべき行動を専門家にラベル付けしてもらう。
- 新データを訓練集合に追加(aggregate)して再学習。1に戻る。
訓練分布が「専門家の分布」から「自分の方策の分布」へ近づいていくため、複利誤差の理論保証が O(T²) から O(T) に改善します。下のデモで反復ボタンを押すたびに、失敗地点に専門家ラベルが追加され、守備範囲(帯)が広がって成功率が上がる様子を見てください。
5. 手法の見取り図 — BC・DAgger・IRL・GAIL
もう一つ、現代的な合流点が GAIL(敵対的模倣学習)です。報酬関数を明示的に復元する代わりに、GAN と同じ発想で「専門家の軌跡か、エージェントの軌跡かを見分ける判別器」を育て、判別器を騙せた度合いを報酬代わりにして方策を鍛えます。IRL の「意図に基づく汎化」の恩恵の一部を、報酬の明示的な復元なしで手に入れる折衷案です。
| 手法 | 学ぶもの | 必要な計算・前提 | 分布シフト耐性 | 新しい状況への汎化 |
|---|---|---|---|---|
| BC 行動クローニング | 状態→行動の写像 | 教師あり学習のみ。最も軽い | 弱い(複利誤差 O(T²)) | 弱い — デモの近傍のみ |
| DAgger | 同上+失敗状態のラベル | ループ中に専門家へ反復質問できること | 改善(O(T)) | 訓練で訪れた範囲まで |
| IRL 逆強化学習 | 報酬関数(意図) | 内側でRLを何度も解く。重い | 強い — 報酬から再計画 | 強い — 報酬は移植できる |
| GAIL 敵対的模倣 | 判別器+方策(報酬は暗黙的) | GAN型の敵対的学習+RL。環境との追加対話が必要 | 中〜強 | 中 — 報酬は取り出せない |
6. まとめ
- 行動クローニング:模倣を教師あり学習に落とす最速の方法。ただし実行時の分布シフトで誤差が複利的に膨らむ。
- DAgger:失敗した状態を専門家にラベル付けしてもらいデータに追加。訓練分布を実行分布に近づけて複利誤差を抑える。
- 逆強化学習:行動の裏の報酬(意図)を尤度最大化で推定。計算は重いが、新しい状況へ汎化できる。
- GAIL:判別器を報酬の代理にする敵対的模倣。明示的な報酬復元を省く折衷案。