OpenAIから強化学習をtensorflowで簡単にお試しできるソースコードが公開されたようなのでWindows環境(WinPython)で試してみました。(とりあえず殴り書き)
##WinPythonを以下からダウンロード
http://winpython.sourceforge.net/
以下、WinPython-64bit-3.5.3.1Qt5を利用した場合です。
##GPU関連とtensorflowを以下を参考にインストール
https://www.tensorflow.org/install/install_windows
##OpenAI Baselinesを以下を参考にインストール
https://github.com/openai/baselines
Winpythonのコンソールで
pip install baselines
pip install gym
##CartPoleのトレーニング&テスト
Winpythonのコンソールで以下を実行するとcart pole(台車の棒が倒れないようにするゲーム)のトレーニングとテストができます。
python -m baselines.deepq.experiments.train_cartpole
python -m baselines.deepq.experiments.enjoy_cartpole
#ここからが本題
ここまでは順調ですが、Pong(ポン)のサンプルを試そうと以下を実行するとエラーが出ます。
python -m baselines.deepq.experiments.train_pong
以下のようにatariを入れろとヒントがでるので、実行すると
pip install gym[atari]
→make がないので、エラーとなります。
以下のスレッドの途中あたりを参考にatariを頑張ってコンパイルします。(bash on ubuntu on windowsを使う方じゃないやつ)
https://github.com/openai/gym/issues/11
msys2を以下を参考にインストールして、makeできるようにします。
http://www.msys2.org/
msys2のコンソールで以下を打ってアップデートします。
pacman -Syu
コンソールを立ち上げなおして
pacman -Su
開発環境もインストールします
pacman -S base-devel mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake
msys2のコンソールで以下を実行するとmakeができるはずですが
pip install -U git+https://github.com/Kojoley/atari-py.git
pipがないというエラーが出ます。
winpythonにパスを通しておく必要があるので
windowsの環境変数のpathに以下を追加します。
C:\WinPython-64bit-3.5.3.1Qt5
C:\WinPython-64bit-3.5.3.1Qt5\python-3.5.3.amd64\Scripts
C:\WinPython-64bit-3.5.3.1Qt5\python-3.5.3.amd64
そのままだとmsysのコンソールにpathが引き継がれないようなので環境変数のMSYS2_PATH_TYPEにinheritを追加します。
http://chirimenmonster.github.io/2016/05/09/msys2-path.html
gitコマンドにもパスが通ってないといけないのでgit for windowsを入れておきます。
https://git-for-windows.github.io/
再度、msys2のコンソールで以下のコマンドを打ちます。
pip install -U git+https://github.com/Kojoley/atari-py.git
できたっぽい。
winpythonのコンソールでpip listを実行してatariがインストールされているのを確認します。
やっとこさで目的のサンプルを実行します。
python -m baselines.deepq.experiments.train_pong
v3がないというエラーがでるので
C:\WinPython-64bit-3.5.3.1Qt5\python-3.5.3.amd64\Lib\site-packages\baselines\deepq\experiments\train_pong.py
の"PongNoFrameskip-v3"を"PongNoFrameskip-v4"に変更します。
enjoy_pong.pyも同じくv4変更しておきます。
で、もう一回、以下のコマンドを実行します。
python -m baselines.deepq.experiments.train_pong
トレーニングが始まりました!が、まだ終わらないので、今日はここまで。(学習終わったら結果の画像を載せたい)
追記:
学習終わりました。上手くなってる!(右側がプレーヤー)
学習前
Pong 学習前 pic.twitter.com/0xAdAr1X7b
— tmizu23 (@tmizu23) 2017年5月26日
学習後
Pong 学習後 pic.twitter.com/EzmCrIv6lj
— tmizu23 (@tmizu23) 2017年5月26日