はじめに

前回の続き。前回はなんの戦略もなく、ただ試した。

今回は、CrossEntropy Method(CEM)をつかって、OpenAI gym の CartPole-v0 を試した。

CrossEntropy Method(CEM)について

クロスエントロピー法は、2006 年に登場したモンテカルロ法を応用したアルゴリズム。

レアなイベントについてサンプリングすることで(政策改善)、 エリートのみであらたなポリシーをつくる(政策評価)するところに特徴がある。

自分のイメージでは、ランダムにシミュレーションして、 ラッキーな場合のみを選び出して、ポリシーに反映させていくように考えている。

Berkeley の John Schulman さん曰く、このアルゴリズムは、

  • Evolutionary algorithm
  • Works embarrassingly well

と、激ホメしている。

アルゴリズム

Schulman さんの講義スライドより引用。

この gist の資料も参考になった。以下、アルゴリズムの定義を引用。

平均(mean)とガウシアンの共分散(sigma)を初期化し、n_iter回以下を繰り返す。

  1. batch_size 分の theta を mean と sigma からなるガウス分布から集める
  2. noisy evaluation を実施して、これらの theta からの報酬を得る
  3. top p% のサンプルを選択する(これをエリート集合と呼ぶ)
  4. エリート集合の mean と sigma で 現在の値を更新する。

Lab1

Schulman さんの 2016 年 Deep Reinforcement Learning サマースクールの課題をやる。

クロスエントロピーメソッドで cartpole を攻略するためのスターターコードがある。

Code

スターターコードの穴埋め部分を埋めてみた。nv.monitor.clos のコードを参考にした。

Result

結果は、OpenAI Gym にアップロードした。

132.20 ± 6.42. という結果で、合格ラインの 195 には程遠いが、前回よりはずっと改善した。

embarrassingly だ!

参考リンク