最新機械学習論文再現コードの修正版をGithubに掲載
下記の記事で書いたA3C再現コードの修正版をGithubに載せました(pull request中)。
ご参考まで。
itsukara.hateblo.jp
掲載場所
「Branch」で「breakout」を選択してZIPファイルをダウンロードするか、下記コマンドでcloneしてください。
git clone -b breakout https://github.com/Itsukara/async_deep_reinforce.git
修正内容
- Python3.5対応
- Python2.7でも問題ないはずです
- 不要コードのコメント化
- a3c_display.pyやa3c_visualize.pyでの不要thread作成をコメント化
- 対象ゲームをBreakoutに変更
- constan.pyのACTION_SIZEも4に変更
- a3c_display.pyでのプレイ画面出力機能追加と、動画作成スクリプト新規追加
- ALEの初期設定追加、BreakoutのACTION表示(念の為)
- ALEのドキュメントを見たところ、デフォルト値は好ましくないため変更
- 各種情報表示機能を追加
- ゲームの状態を各thread毎に縦の列で追えるように出力します
- 性能(steps/sec.、steps/hour)を表示
- a3c_visualize.pyのpython3.5対応+不要コードコメント化
- pi=0.0になるケースへの対応
- ログ情報からのデータ抽出、表示ツールを追加
- ログ情報は画面に出力されます。teeコマンドで見ながら表示しても良いですが、バッファリングで出力が間欠的になるため、端末ソフトのスクロールバッファのサイズを大きくするか、無制限にして、画面に出力されたものをファイルにコピー/ペーストするのがお勧めです。
- (8/2 22:35追記)上記よりも"script"コマンドを用いた方が良いです。scriptならば表示が間欠的にならず、ファイルにログを残せます。ただ、AnacondaやVirtualenvの仮想環境に入ってからscriptコマンドを使うとエラーになります。まず"script"を起動しておけば大丈夫です。例えばAnacondaなら、次のようにすれば良いです。
$ script breakout.log スクリプトを開始しました。ファイルは breakout.log です $ . activate tensorflow (tensorflow) $ python a3c.py
100M steps学習曲線
Breakoutを100M stepsまで学習させたので、学習曲線を掲載します。
- 自作ミニプログラム版
残念ながら、80M stepsあたりから、SCOREが上昇しなくなっています。
また、420点あたりにデータの青い点が集中していますが、これは第1面のほぼ最後であり、ブロックが少なくなっているために、残っているブロックに当てるのが難しくなっています。このあたりからは、ちゃんとブロックを狙って返す必要があるのですが、それができていない状況です。
なお、上記、70M steps近辺に大きな谷がありますが、これを拡大したものが下記です。谷底にデータの点が多数あるのがわかります。実際にログを見たところ、SCOREが1桁(0〜3)のプレイが200回以上ありました。なんか、おかしな学習を行ってしまったのでしょうね。
- Tensorboard版
こちらは、大雑把すぎで、何が起きているかわかりません。