Itsukaraの日記

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

【DL、RL、A3C+】Montezumaで2500点出ました!

直前の記事記載のように、A3c+でMontezuma's Revenge学習中にi-node不足で途中終了したので、終了前のpseudo-countデータ無しで途中再開して試しています。学習曲線は以下のようになってます。
f:id:Itsukara:20160830094108p:plain

平均得点が元のレベル元に戻るまで5M STEPS弱掛かってしまいました。なお、論文と比べると学習が遅いですが、pseudo-countを入れる前のA3Cコード自体が論文よりも学習が遅いので、仕方ないです(原因は不明)。

今のところ、訪問済みの部屋は以前と同じで0,1,2,5,6,7だけですが、最高点数は2500点が出ました。下記が、最高得点を出したプレイ動画です。
youtu.be

500点のプレイ動画(下記)とあまり変わりませんが、右下の部屋の左上で取得したSWORDで、その上の階のSKULLを退治することで、2000点入っています。無駄な動きが多いですが、SKULLを飛び越えたり、避けたりするところは、少し賢くなった気がします。
youtu.be

SWORDの表示

500点の動画ではSWORDが写っていませんでしたが、これは、実行オプションが不適切だったためでした。Atari2600のゲームは、ハードウェアの制限により、奇数フレームと偶数フレームを合わせることで正しい画面になります。これは、人間が目で見る上では問題ありませんが、学習データとしては不適切です。そのため、学習データとしては、2つのフレームの画像のmaxを取る必要があります。実行オプションとして「--color-maximizing-in-gs=True --color-averaging-in-ale=False」を指定すればそのような処理が行われます。

なお、上記、Atariのゲーム特性は論文で承知しており「color-maximizing-in-gs」というオプション+機能も作成済みでしたが、ALEにcolor-averagingという機能があり、Breakoutでは、両者に違いがなかったので使ってませんでした。Montezuma's Revengeでは、この違いを初めて実感しました。

ソースコード

ソースコードは以下にあります。ご参考まで。
github.com