Giter Site home page Giter Site logo

bert-mcts-youtube's Introduction

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

bert-mcts-youtube's People

Contributors

nyoki-mtl avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.