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