AlphaGoの論文を元に作成されたRocAlphaGoというものがありますが、それをUbuntu14.04、Anacondaの環境で動作させる手順をまとめました。
gitで公開されています。→ https://github.com/Rochester-NRT/RocAlphaGo.git
※追記 (2017−07−18) https://github.com/Rochester-NRT/RocAlphaGo/wiki/00.-Installation こちらのwikiにインストール手順が追加されていますね。 本家を参考にした方が確実かと思います。
まずは環境構築です。
## 必要なパッケージのインストール
$ sudo apt-get -y install git wget
## Anaconda インストール
$ wget https://repo.continuum.io/archive/Anaconda2-4.3.1-Linux-x86_64.shbash Anaconda2-4.3.1-Linux-x86_64.sh
$ source ~/.bashrc
## RocAlphaGo をgitからダウンロード
$ git clone https://github.com/Rochester-NRT/RocAlphaGo.git
$ cd RocAlphaGo
## 実行環境構築
$ conda create --name AlphaGo python=2.7
$ source activate AlphaGo
$ pip install --user Cython==0.24 h5py==2.6.0 numpy==1.11.2 scipy==0.18.1 PyYAML==3.12 matplotlib==2.0.0 pandas==0.19.2 pytest==3.0.6
$ pip install --user --no-deps Theano==0.8.2 sgf==0.5 keras==1.2.0 pygtp==0.3
$ pip install --user flake8==3.3.0 tensorflow==1.0.0
これで、RocAlphaGoを実行できる環境が整いました。
ちなみに実際に動かすには以下のような手順となります。
学習させる前の前処理を実行
このコマンドで、sgf(棋譜データ)をニューラルネットのINPUTに適用できる形に変換します。
$ find tests -iname "*.sgf" | python -m AlphaGo.preprocessing.game_converter --features all -o debug_feature_planes.hdf5
これで、hdf5ファイル(ニューラルネットの学習用ファイル)が作成されました。
その後モデルが定義されたjsonファイルを作成します。
$ vi create_model.py
$ python create_model.py
create_model.pyの中身は以下のように入力します。
from AlphaGo.models.policy import CNNPolicy
arch = {'filters_per_layer': 128, 'layers': 48} # args to CNNPolicy.create_network()
features = ["board",
"ones",
"turns_since",
"liberties",
"capture_size",
"self_atari_size",
"liberties_after",
"ladder_capture",
"ladder_escape",
"sensibleness",
"zeros"] # must match args to game_converter
policy = CNNPolicy(features, **arch)
policy.save_model('my_model.json')
これで、学習させるための準備が整いました。
最後にこのコマンドで、学習をさせてみましょう!
$ python -m AlphaGo.training.supervised_policy_trainer my_model.json debug_feature_planes.hdf5 training_results/ --epochs 5 --minibatch 32 --learning-rate 0.01