Skip to content

Latest commit

 

History

History
101 lines (71 loc) · 3.57 KB

README.md

File metadata and controls

101 lines (71 loc) · 3.57 KB

BERT-MCTS-YOUTUBE

YouTubeにてヨビノリたくみさんと対戦した将棋ソフトです。 自然言語モデルであるBERTとモンテカルロ木探索(MCTS)の組み合わせで出来ています。
すべてpythonで書いてあるため、探索の速度は遅いです。

BERT以外の大部分は『将棋AIで学ぶディープラーニング』を参考に書いています。

環境

Colab

テストするだけならgoogle colab が簡単です。

以下はローカルで試す場合。CPUだと遅いのでCUDA環境が望ましいです。
重みファイルはここ にアップしてあり、 たくみさんと戦った重みファイルがyoutube_version.ckpt、追加で数日間学習させた重みファイルがlatest.ckptになります。
ダウンロード先のパスはengine/***_player.sh内で指定してください。 デフォルトではwork_dirs以下にダウンロードすることを想定しています。

Docker

cuda10.2以上のnvidia-dockerが整っているなら次のコマンドで環境に入れます。

$ make docker-start-interactive

Ubuntu18.04

cuda10.2でanacondaが入っていれば次のコマンドで仮想環境を作れます。

$ conda env create -f env_name.yml
$ conda activate bert-mcts-youtube
$ python setup.py develop

Windows10

未検証

将棋エンジンのテスト

エンジンはengineディレクトリに用意しています。これらはShogiGUIなどから呼び出すことができます。

  • policy_player.shはBERTの出力する方策のみを頼りに指すモデル(弱い)
  • mcts_player.shはBERTの出力をもとにMCTSで探索するモデル

学習

学習には互角局面集とGCTの自己対戦棋譜を用いました。
モデルはMasked Language Modelで事前学習してから、Policy Value Networkの学習という手順を踏みます。
ただし、将棋は良質な教師データが大量にあるため事前学習の効果はあまりない気がします。

データの準備

互角局面集のダウンロード

$ cd data
$ git clone https://github.com/tttak/ShogiGokakuKyokumen.git

GCTの自己対戦棋譜

$ cd data
$ mkdir hcpe

GCTの自己対戦棋譜は開発者の加納さんがリンク に公開してくださっていまし。 ここからselfplay-***となっているファイルをいくつかdata/hcpe以下にダウンロードしてください。
サイズが大きいので一個でも十分な量あります。

これらを準備できたら以下のコマンドでデータセットを作ります。

$ python tools/make_dataset.py

Masked Language Modelの学習

$ python tools/train.py configs/mlm_base.yaml

重みファイルの変換

Masked Language Modelのチェックポイントをtransformers形式に変換しておきます。 これによって転移学習のコードが多少書きやすくなります。

$ python tools/pl_to_transformers.py work_dirs/mlm_base/version_0/checkpoints/last.ckpt

Policy Value Modelの学習

最後にこれらを使ってPolicy Valueを学習させます。

$ python tools/train.py configs/policy_value.yaml