2016年9月8日木曜日

コンピュータにゲームをさせてみた

「コンピュータにゲームをさせてみる」のいよいよクライマックスです。
今日はコンピュータにゲームを学習させたり、その結果でコンピュータにゲームを
させます。

コンピュータにゲームをさせるにはたくさんのライブラリをいれないといけないので、設定がめんどくさくてなかなかハードルが高いです。なので順を追って説明していきます。

ソースコードは学習することも含めて367行しかないのに。

1. OpenAI GYMをインストール

まずOpenAI GYMをWindowsで動くようにします。
Windows用って書いてますが、実はLinuxでもやることは全部同じです。
なので同じやり方でLinuxでもコンピュータにゲームをさせることができます。

以下のサイトを参考にどんどんいろんなソフトを入れていきます。

Windows 10のLinux/Ubuntu互換環境でbashを使う
http://www.atmarkit.co.jp/ait/articles/1608/08/news039.html

Windows上でOpenAI/gymを実行してみる
http://qiita.com/onelittlenightmusic/items/11eefde5ddad57fd0727



2. いろいろインストール

上記で一応OpanAI GYMだけは動くようになったのですが、Atariのゲームや、機械学習のライブラリのTensorflowとKerasがまだ入っていません。なのでインストールします。


apt-get install python-dev
apt-get install python-opengl
apt-get install python-skimage
apt-get install cmake
apt-get install zlib1g-dev
apt-get install tensorflow
apt-get install git

pip install gym
pip install gym[atari]
pip install keras
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0-cp27-none-linux_x86_64.whl
pip install $TF_BINARY_URL



こんな感じでどんどんインストールします。



3. Kerasのバックエンドを設定

次にKerasはデフォルトではtheanoを使うように設定されているのでtensorflowを使うように設定を変更します。

KerasをTensorFlowバックエンドで試してみた
http://tjo.hatenablog.com/entry/2016/06/09/190000

上記のサイトを参考に
~/.keras/keras.json
を変更します。

変更前
{"epsilon": 1e-07, "floatx": "float32", "backend": "theano"}

変更後
{"epsilon": 1e-07, "floatx": "float32", "backend": "tensorflow"}



4. Atariのゲームをするプログラムと学習結果をとってくる

ゲームをするプログラムと学習データを取ってきます。

DQNをKerasとTensorFlowとOpenAI Gymで実装する
https://elix-tech.github.io/ja/2016/06/29/dqn-ja.html

上記のサイトにコードとデータがあるので取ってきます。

サイトでは
python dqn.py
と入力すればコンピュータがゲームをしてくれると書いてありますが、実際にはデフォルトではゲームの学習を始めてしまいます。
学習はGPUがあるPCでも非常に時間がかかるので今回は省略します。



5. ソースを一部直す

dqn.pyのソースを以下のように変更し、学習結果をテストするモードにします。
学習結果をテストするくらいならばGPUが載っていない普通のPCでもできます。

変更前
LOAD_NETWORK = False
TRAIN = True


変更後
LOAD_NETWORK = True
TRAIN = False


6. コンピュータにゲームをさせる。

python dqn.py
と入力します。



やったーーーーーー。
きちんとゲーム画面が表示されて生意気にもゲームしてるじゃん。
長かったけどついに僕のWindowsマシンでコンピュータにゲームをさせることができました。
冒頭にも書きましたが、ゲームを学習したりプレーする部分のソースコードは367行しかありません。たったそれだけでゲームすることができちゃうんです。深層強化学習って面白いですね。




0 件のコメント:

コメントを投稿