【DQfD】デモンストレーションから事前学習するDQNの論文を読む

 スパースな報酬環境(たとえばMontezuma Revenge)での強化学習は学習が難しく,さまざまなアプローチがこころみられています.今回はデモンストレーションを用いることでこの問題に取り組んだ,論文(2017,Deepmind)

[1704.03732] Deep Q-learning from Demonstrations

を読んだのでそのメモを残してみます.

ざっくりいうとDQfDとは

 この論文の目的は,深層強化学習において現実世界への応用の観点から少ない試行回数でよい成績を出すことにあります.大まかにまとめるとDQfDは

  1. Agentが実際行動する前に,デモンストレーションの動作からQ関数を事前学習
  2. Q関数をもとに探索,デモンストレーションと実際の経験の混ざったリプレイデータを作成
  3. 混合リプレイデータで優先的経験再生(Prioritized experience replay)を用いて学習

新規性としては,デモンストレーションをもちいた事前学習をしていることと,損失関数にデモンストレーションを模倣するような項を加えていることになります.

強化学習の枠組みの中で学習初期の足掛かりとしてデモを用いているため,最終的にデモを超えるようなスコアを達成している点が通常の模倣学習とは異なります.

本文要約

イントロ

 さまざまなRLで,以前の経験を利用する手法が大きな成果を挙げている. RLを実世界で使うには学習に必要な試行回数が多く危険. それらの操作には,人であったり何らかのもともとの手法があり,sub-optimalなデモンストレーションは作成可能であるので,それを利用する手法DQfDを提案する. 

背景

 マルコフ決定過程での変数の定義,ベルマン方程式とQ learningの説明などなど.

Double DQN(2016)では次の状態の価値計算と,現在の行動の価値計算に使うQネットワークを分けることで,通常のQlearningの更新によるバイアスを軽減する.

Prioritized experience replay(2016)ではTDエラーが大きかった経験を優先的に重点サンプリングで経験再生することで学習を早める. 

関連研究

imitationとしてDAGGERとその改良版,GAILがあるがデモ以上の性能は出ない.
転移学習としてHATアルゴリズム,デモとエージェントの経験を混ぜる方法としてHERが挙げられていた.
もっとも近い手法としてAccelerated DWN with Expert Trajectories(ADET)があり,これではクロスエントロピーlossをもちいておりその部分がDQfNで改良する.

Deep Q-Learning from Demonstrations本文

目的としてはpre-train段階でベルマン方程式を満たしながらデモを学ぶこと.
ネットワークの学習には4つの損失関数(loss)を用いる.
1. 1step double Qlearning loss
2. n-step double Qlearning loss
3. supervised large margin classification loss
4. L2 regularization loss
デモはデータ数が少ないく,多くの状態行動対(s,a)は取られない.そのため,通常のQ-learningでの更新だと実際の価値関数とは大きく異なったものになる.そのため3のlarge margin classification loss(2014,https://link.springer.com/chapter/10.1007/978-3-662-44851-9_35)
を導入する.

この損失関数Jは,ある状態sにおいてagentとexpert(demo)の行動aが同じでJ=0,異なる場合J=(その時の2つの行動の価値Qの差+定数l)となる.つまりagentとexpertの行動が異なる場合,少なくともl分は損失関数Jが大きくなる
もちろんこれだけだとベルマン方程式を満たさないので損失関数1と2を導入する(普通のQ-learning的考え).
4はDemoデータへのオーバーフィット防止にもちいている.

全体としての損失関数Jはこの4つの重み付け和としている.(結構シンプル)

流れとしてはD-replayにエキスパートの状態行動対でQネットを学習→実際に行動してその経験もDに記憶

DemoとAgentの行動の優先経験再生の割合はイプシロンを用いて調整

実験

atariで実験.
CNNとしてDueling state-advantage convolutional network architecture(wang et al.2016)を使用.
人とデモを近づけるためreward clipをなくし報酬を対数関数とした(報酬の大小含めて学習させた).
結果は本稿を参照ください.

Discussion

DemoデータによってQ関数を事前学習することで環境とのインタラクション初期からよいスコアをだした.特にスパースな報酬を持つゲームではSOTAを達成.またDemoデータよりも良い成績を出すことも確認された.
4つの損失関数の組み合わせを用いることで事前学習と本学習の切り替えに問題なく対応できると考えられる.

まとめ

ざっくりいうと

  1. 損失関数にラージマージン分類誤差の導入
  2. Demoデータでoff plicy学習
  3. ReplayデータにDemoと実際の経験の混在

を行うことで模倣強化学習(Demoを有用(情報量の多い)経験と考える+デモに似せるような損失関数の追加)しましたよっていう話だと思われます.デモを手本に強化学習的にデモを超えるような方策を獲得するのが一番の売りといえると思います.

毎度のことですが,勘違い等多々あると思いますのでご指摘よろしくお願いします.