読者です 読者をやめる 読者になる 読者になる

Itsukaraの日記

最新IT技術を勉強・実践中。最近はDeep Learningに注力。

OpenAI GymでのMontezuma's Revenge評価の影響要因

Montezuma's Revenge 機械学習 Python ITのお勉強

OpenAI Gymで得点に特に影響した要素について記載します。

\betaの値

Pseudo-count(擬似的な出現回数)から計算されるReward計算式(下記)での\betaは特に影響が大きかったです。

  • R=\beta(N+0.01)^{-1/2}

Azure*1Google Cloud Platform*2の無料枠で得られる計算資源しか使えないため、余り包括的なパラメーター探索はできていませんが、\betaに関しては、0.015や0.01では殆ど点数が取れず、0.02がベストでした。0.03も上手く行きませんでした。

学習歴長

On-Highsocore-Learningでの学習履歴長もかなり影響が大きく、長ければ良いというわけではないようです。下記に\betaの値が0.02で学習履歴長を変えた時のTraining Curveを載せます。30の時は乱高下するものの、0.2M step毎に平均点をチェックし、ベストな状態の学習データを残すようにプログラムしているので、生成した学習データを元に評価すると良い点数が取れます。学習歴長=30のときが、今回OpenAI Gymにアップした評価に用いた学習データです。

学習履歴長=25

f:id:Itsukara:20161015000236p:plain

学習履歴長=30

f:id:Itsukara:20161015000241p:plain

学習履歴長=35

f:id:Itsukara:20161015000248p:plain

学習履歴長=40

f:id:Itsukara:20161015000254p:plain

フレームスキップ数

上記に加え、ゲーム画面(frame)のスキップの仕方も影響しています。ゲームの操作(action)をOpenAI Gymに渡すと、OpenAI Gymは勝手に2〜4 frameスキップした後のframeを返す仕様になっており、スキップするフレーム数は一様乱数で求めています。これは、ゲームをできるだけ非決定的にするためです。

今回の評価では、学習する側で、OpenAI Gymを同じactionで2回呼び出し、その結果得られたframeをDeepLearningに使っています。これにより、スキップするフレーム数は、6を中心とした正規分布となり、少し決定性が増すので学習しやすくなっている、考えています。ちなみに、この処理をしない場合は、点数がほとんど上がりませんでした。

あとがき

豊富な計算資源があれば、一度に数十〜数百の評価ができるので、すぐに最適なパラメーターが求まるのですが、これができず残念です。計算資源を提供頂ける方がいれば、非常に助かります。

*1:数日前に無料枠を使い切りました

*2:新たに無料枠を申請しました