【論文読み】Curiosity-driven Exploration by Self-supervised Prediction

次の論文を読んだので内容をまとめます。

pathak22.github.io

Summary

強化学習においてはエージェントに目的を認識させ、正しく学習を進めさせるために報酬(reward)が必要になる。この報酬は通常人間が手動で与える必要があるが、好奇心(curiosity)という形で自発的な報酬を導入することで、人間が報酬を与えることなくエージェントが正しく学習を進め、ロバストなプレイスキルを習得することができることを確認した。

Background

強化学習では与えられる報酬を元に、得られる報酬の合計(行動価値)が最大になるような行動の指針(方策, policy)を探索することが学習の目的になる。ここでの報酬について、大規模な問題を扱う上で次のような問題点が発生する。

  • 通常報酬は非常に疎(sparse)なものになる。例えば多くのゲームではゴールに到達する、敵を倒す、ブロックを破壊するなど特定の達成条件に応じて報酬が設定されるが、それ以外の行動については良い行動なのかどうかが判定しづらく、通常0になる。
  • 人間が手動で与える必要があり、エージェントを正しく目的に導くような密(dense)な報酬を与えるのは自明ではない。

エージェントが内的な報酬によって能動的に探索を行うことが可能になれば、人間が明示的に報酬を与える必要がなくなり(もしくは、主要な達成条件に対する疎な報酬だけで済む)、大規模な問題に対しても強化学習的なアプローチを適応することが可能になる。

Proposed Method

人間にとって行動のモチベーションの一つになるのが好奇心である。この好奇心を強化学習のタスク上で定式化し、うまくエージェントに組み込んだのが今回の論文のポイント。

鍵となるのは、好奇心を「エージェントにとっての結果の予測のしづらさ」と定義したところ。具体的には、状態 s_tにおける行動 a_tに対する報酬を、その結果としての遷移先 s_{t+1}の予測と実際の遷移先との誤差によって定義する。

ただし、素の状態そのものを予測し、その誤差を用いるのはいい方法とは言えない。例えば最新の強化学習ではゲーム画面そのものの数フレームを状態として用いてCNNに突っ込むことが多いが、木が風に揺られている時の1つ1つの葉っぱの動きを人間が予測することが難しいように、ゲーム内のピクセルそれぞれを予測することは難しく、またそれを予測することに大きな意味はない。そこでエージェントが注目すべき要素を

  • エージェントがコントロール可能な要因
  • エージェントに影響を与えうる要因

の2つに絞り、この要素のみを素の状態から特徴量として抽出する。この論文では、エージェントの行動に関係する要素のみを状態から抽出する方法として、状態 s _ t , s _ {t+1}を入力として、その差分の行動 a_tを予測するような逆推定(inverse)モデルを訓練することで、その中間層に本質的な特徴が学習されるとしている。この特徴 \phi (s_t) a_tを元に \phi (s_{t+1})を正予測(forward)モデルで予測し、その誤差を報酬 r^ i_tとする(iはintrinsic、内的報酬であることを表している)。

まとめると、報酬としての好奇心を計算する手順は次のようになる。

  1. 探索により状態 s_tと行動 a_t、その結果としての状態 s_{t+1}の組を得る。
  2.  s_t s _ {t+1}から a_tを予測するinverse modelを訓練し、その中間ベクトル \phi (s_t), \phi (s_{t+1})を状態の特徴として用いる。
  3.  \phi (s_t), a_tを入力としてforward modelに与え、遷移先の状態の特徴量の予測値 \hat{\phi} (s_{t+1})を得る。
  4.  \hat{\phi} (s _ {t+1}) \phi (s_{t+1})の二乗誤差を報酬 r^ i_tとして計算する。
  5. 内的報酬 r^ i_tと通常の外的報酬 r^ e_tを合計した r_t = r^ i_t + r^ e_tを最終的な報酬とし、従来の手法(DQN, A2C/A3C, PPOなど)を用いて方策決定を行う。

これを表したのが次の図。本論文では好奇心を計算する一連のモジュールをICM(Intrinsic Curiosity Module)と呼んでいる。

f:id:ey_nosukeru:20190502133719p:plain
報酬計算と行動決定を含む全体の構成図

Evaluation

性能比較

f:id:ey_nosukeru:20190502134441p:plain
迷路ゲームでの性能比較。右に行くほどゴールが遠く、外的報酬がより疎になるが、提案手法はそのような条件でも正しく学習できている。
f:id:ey_nosukeru:20190502134747p:plain
ホワイトノイズを入れた画面状態に対する頑健性の検証

汎化性能(generalization)の比較

f:id:ey_nosukeru:20190502135020p:plain
マリオを用いた検証で別のステージにおいてもfine-tuningを行うことで1から学習するよりも早く高い性能を発揮できている。
f:id:ey_nosukeru:20190502135336p:plain
一部fine-tuningが失敗しているが、一般的なゲームスキルを習得できていることが確認できる。

Discussion

curiosityによって自発的に学習するエージェントを構成できることを確認した。今回の検証のようにステージを変えて汎化性能を調べることは重要。 Future workとしてゲームで習得した一般的なスキル(壁にぶつからず歩くなど)を他のタスクに応用することなどが考えられる。環境とのインタラクションが限定されているような場合(環境の変化の少ない場合?)の調査は今後の課題。

感想

多くの報酬を与えることなく自発的に学習できるエージェントということで、いよいよ人間に近いAIの開発が現実味を帯びてきたように感じて非常にワクワクする論文でした。提案手法についてもなぜ今までなかったのかと思うほどシンプルで、洗練されている印象を受けました。

一点、せっかくICMで学習した状態の特徴を行動決定で使わず、わざわざ別のモデルを用いて素の状態から計算を行なっている点が気になりました。今後ICMの状態特徴量を方策に用いるようなモデルも出てくるかも?

今後の展開として、報酬の定義が難しい会話エージェントのような分野でも、Curiosity-Basedな手法は広く用いられていくのではないでしょうか。人間の赤ちゃんと同じように会話を繰り返しながら少しずつ会話できるようになっていくエージェントを作るのも夢ではないように思います。今後ともぜひ注目していきたいホットな分野になりそうです。

最後に

こういう記事を書くのは初めてなので何か疑問点・ご指摘などあればぜひお願いします。最後までお読み頂きありがとうございました。