覚え書きブログ

OpenAI GymのインストールとQ学習の実装(Windows)

windows subsystem for Linuxubuntu環境に、OpenAI Gymをインストールし、Q学習してみた。以下は、手順のメモである。

準備

1) windows subsystem for Linuxの設定とUbuntuのインストール
Qiitaのページhttps://qiita.com/Aruneko/items/c79810b0b015bebf30bbを参考にして、windows subsystem for Linuxの設定を行い、Ubuntuをインストールした。

2)Anacondaのインストール
hirotaka-hachiya.hatenablog.com
を参考にし、wgetでAnacondaのLinux版「Anaconda3-5.0.1-Linux-x86_64.sh」をwgetでダウンロードし、実行してインストール。

~/.bashrcにAnaconda3のパスを設定し、「source ~/.bashrc」を実行。

export PATH=/mnt/c/Users/hachiya/Documents/works/anaconda3/bin:$PATH


3) WindowsのXサーバXmingのインストール
windowsUbuntuがインストールできると言っても、GUI無しの状態でインストールされるので、自前でXserverを用意する必要がある。幸い、Windowsにはフリーでも優れたXserver「Xming」があるので、それをインストールする。具体的には、Xming-6-9-0-31-setup.exeを、
https://ja.osdn.net/projects/sfnet_xming/releases/
からダウンロードし実行してインストールした。

~/.bashrcにDISPLAYの設定をし、「source ~/.bashrc」を実行。

export DISPLAY=localhost:0.0

OpenAI Gymのインストール

Qiitaのページhttps://qiita.com/ishizakiiii/items/75bc2176a1e0b65bdd16を参考にインストールする。

1) 基本パッケージのインストール

> pip install gym

2) 基本パッケージのインストール

> sudo apt-get install -y cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev libboost-all-dev libsdl2-dev swig

これらのパッケージは基本的な開発環境に関するものなので、ある程度開発用途で使っている環境であれば必要ないかもしれない。今回のwindow上のubuntuは使い始めたばかりだったので、インストールが必要だった。なお、pythonまわりのパッケージはAnaconda3を用いているため一切インストールしていない。インストールするとpython環境が2つ存在してややこしいことになるので、注意。

3) Atari社のGameおよびその他の環境ライブラリのインストール

> pip install 'gym[atari]'
> pip install 'gym[all]'


4) 動作確認
以下のように、pythonインタラクティブモードで、mountaincarの環境を読み込み、render()を実行しxmingでmountaincarが表示されるかどうか確認。

> python
>>> import gym
>>> env = gym.make('MountainCar-v0')
>>> env.reset()
array([-0.44697984,  0.        ])
>>> env.render()

f:id:hirotaka_hachiya:20180528184959p:plain

pythonを用いたQ学習の実装

Qiitaのページhttps://qiita.com/ishizakiiii/items/75bc2176a1e0b65bdd16を参考にし、mountainCarタスクを学習するQ学習のアルゴリズムオブジェクト指向で実装してみた。
github.com

コードは以下の通り(GitHubGistでも公開中)。
128行目のisDemoが「Flase」の時は158行目以降の学習が始まり、100エピソードごとにmodelsディレクトのpklファイルにQテーブルが保存される。一方、学習後にisDemoを「True」にして実行すると、136行目からのデモが始まり、保存したpklを所定のエピソード間隔(100エピソードごと)で読み込んで、各エピソードでの方策を再現してくれるようになっている。