【DL.A3C】Montezuma' RevengeでScore=100の動画
相変わらず、Deep LearningのA3C論文再現コードを改造して遊んでいます。
以前に書きましたように、Montezuma's Revengeでは、殆どのエピソード(1回のゲーム)で得点が0です。しかし、得点が得られた時にプレイ動画を見たいと思いました。そこで、プログラムを少し改造して、最高得点が得られる度に、プレイ画像(プレイ開始時からの全スクリーン)をファイルに出力する処理を追加しました。
下記が、この機能を使って撮った動画です(動画への変換は後から行いました)。なお、実際のプレイ画面ではなく、学習に用いた内部情報を出力したものなので画質がかなり悪い点は、ご容赦ください。
無駄な動きが余りにも多い事が良く分かります。やはり、Montezuma's Revengeでは、ランダムな動きだけで高得点を取れるように学習するのは難しい気がします。
A3C論文再現コードを書いたmiyosudaさんから、Montezuma' Revengeで高得点を取った論文を教えて頂いたので、現在読んでいるところですが、非常にわかりにくく、時間がかかっています。論文のポイントとしては、ゲーム内でこれまでに行ったことがない場所に行くと得点が得られるようにし、学習が進むようにしたようです。
これにより、冗長な動き(同じ所に何度も戻ったりする動き)が抑止されると共に、得点(Reward)が与えられることで学習が進むのだと思います。常に得点を与えるBASIC INCOMEと異なり、新たな場所に行かないと得点が得られないので、新しい場所を探索しようというモチベーションが高まるということと思います。人間の行動に例えると分かりやすい。
最高得点のプレイ画像出力用に改造したソースは、下記に置きましたので、興味のある方は、最新のものをクローンしてご利用ください。
github.com
使い方
下記コマンドで、最高得点のプレイ画像(プレイ開始時からの全スクリーン)が、new-recordというディレクトリの下に保管されます。具体的には、new-recordというディレクトリの下に、s000105358-th5-r100といった名称のディレクトリが作られ、そこにプレイ画像が保管されます。「s」の次の数字はSTEPSで、「th」の次の数字は得点を出したthread番号、「r」の次の数字は得点です。
run-option latest
また、次のコマンドで、new-record直下にある各ディレクトリに含まれる画像を動画に変換します(avconvをインストール済であることが前提です)。
run-avconv-new-record-all