Itsukaraの日記

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

【DL.A3C+pseudo-count】Montezumaで平均400点達成

直前の記事で途中経過を記載した件、途中でエラーとなり終了してしまいました。

「No space left on device ...」と出ていますが、「df -h」でみると容量はまだ余っている様子。よく見ると「os.makedirs」でエラーが出ているので、i-node不足の可能性があり、「df -i」で確認したところ、案の定、残りi-nodeが0でした。プレイ画像を沢山保管しすぎたのが原因です。早速、動画に変換して、画像ファイルは消すことにしました。

いずれにせよ、26.M STEPまでのデータは得られました。1000データ移動平均で400点を超えることが出来ました。これで、pseudo-countの効果は、ほぼ確認できたと考えています。後は、これに更になにか組み合わせることを考えたいと思います。

f:id:Itsukara:20160829213313p:plain

なお、最高得点は500点止まりです。もっと学習されれば、得点が上がると思うのですが、pseudo-countに必要なメモリ上のデータが失われたので、継続実行して得点が上がるか、不明です。ともかく、トライしてみようと思います。

また、録画した動画を見て、得点を上げるための対策を考えてみようと思います。

論文の誤記、論文との差

pseudo-countの確認のために、Montezuma's Revengeで訪れた部屋を記録するコードを入れました。これに際し、pseudo-count論文の誤りに気がついたので、報告します。論文では、RAM領域のアドレス0x83に部屋番号が入っているとのことでした。しかし、試したところ、RAM領域のサイズは128バイトで、領域外アクセスエラーとなりました。もしかして10進数かとも思ったのですが、実際に走らせて確認したところ、0x03が正しいアドレスでした。

また、論文では、最後のページ(p.26)で、pseudo-countを使ったA3C(A3C+)でのMontezuma's Revengeの平均点が142.50、273.70などと書かれています。なんかおかしい気がします。

p.25のFigure8を見ると、A3C+ではMontezuma's Revengeの平均点が20M taining framesで2000点くらい行くようです。これほどの点数は取れていませんが、原因は不明です。当方はALEのstochasticをOFFにして試したので、ONでも試そうと思います。ちなみに、ONにすると、平均25%の確率で、与えたアクションを無視して前回のアクションを繰り返すという試用です。また、25%という数字は変更可能です(ALEのsetFloat(b'repeat_action_probability', value)で設定)。

ご参考まで。