プロ棋士の谷合廣紀四段がBERTを使った将棋ソフトを作られました

東大の博士課程の学生でありながらプロ棋士である谷合廣紀四段が、BERT+MCTSを使った将棋ソフトを作られました。ソースコードも公開されています。盤面を言語(95文字の文章)と捉えて、それをBERTに入力しているようです。

ソースコード : BERT-MCTS-YOUTUBE https://github.com/nyoki-mtl/bert-mcts-youtube

本プログラムには、cshogiというdlshogiの山岡さんが作られた、将棋の盤面操作や合法手生成などを行うPythonのライブラリを使用されていて、このソースコード自体はかなり短いです。機械学習のコードも含まれています。今回のYouTubeの動画のために、機械学習はGCTの教師データを用いて2日ほど学習されたそうです。たぶん↓のデータのことだと思います。

// GCTの学習に使用したデータセットを公開 : https://tadaoyamaoka.hatenablog.com/entry/2021/05/06/223701

YouTubeの放送を見た感じ、棋力はたぶんアマ初段ぐらいはありそうな感じです。

歴史上、現役プロ棋士が作った2番目の将棋ソフトであると同時に、機械学習部まで実装されていて、ソースコードはPythonで書かれているのですが、かなり綺麗に書かれています。お手本のようなコードです。ちなみに、谷合四段は、『Pythonで理解する統計解析の基礎』の著者でもあります。

// 歴史上、現役プロ棋士が作った最初の将棋ソフトは飯田弘之先生(2005年以降、北陸先端科学技術大学院大学教授をされています)の将棋ソフト「TACOS」です。

MCTS(探索部)と組み合わせているものの、BERTを使って盤面評価ってこの精度で出来るのかという驚きと、BERTがこのレベルで言語を処理できるなら、言語として入力に放り込んだら、作曲でも物語生成でも創作活動でもなんでもできるやん?もう人間の情報処理能力完全に超えてるやん?みたいな感動が込み上げてきて、BERTに対して畏敬の念すら抱かざるを得ません。BERTの可能性を垣間見た気がしました。

12 thoughts on “プロ棋士の谷合廣紀四段がBERTを使った将棋ソフトを作られました

  1. 「プロ棋士が作った初めての将棋ソフト」は、飯田弘之先生が作られたTACOSではないでしょうか。

    • あー、そうですね。飯田先生は、プロ棋士を引退されてからTACOSを作っているイメージだったのですが、TACOSを作っている段階ではフリークラスとして在籍されていたんですね。失礼しました。(本文修正しました)

  2. お相手のヨビノリたくみさんは将棋ウォーズ四段だそうで、その方に勝っていますが、やねさん的には「アマ初段ぐらいはありそう」の評価ですか?

    • たくみさん将棋ウォーズ四段なんですか?!わりとおつよいですね。
      // 私もクエスト四段ではあります。将棋ウォーズはやってないです。

      ソフトのほうは、わりと危なかっしいところがあったので、あの一局だけでは強さはよくわからないです。
      このあとfloodgateに放流すると言ってる人がいるので、それを見てからまた記事書きます。

  3. pytorch_lightningとhuggingface使っていて、2日でお手軽に作るならこれ!っていう構成ですね。OmegaConfも使っていて研究者のコードだーーー!!!ってなりましたw

    TransformerだとConvolutionと違って遠距離の関係を考慮しやすいと言われているので飛角の利きなどを上手く扱えないかな?とか思ったり……

    • // 飛び利きはTransformer系のほうが良いのではという意見をちょくちょくもらうのですが、都度↓を回答してます。(コピペ)

      飛び利きは、途中に駒があると隣の升には伝播しませんから、利いているかどうかを正しく伝達するためには、ResNetのような構造で1ブロックで1升ずつ伝播していくほうが効率的ではないでしょうか。

      例えば、adder(加算器)を(電子回路の)NAND回路で構成しようとするとき、1桁ずつ足していくほうが少ない回路で済みますし。(高速化するために、回路の段数を減らそうとするとNAND回路たくさん必要になる。)

  4. 縦優先配列と横優先配列、斜め優先配列、桂馬飛び優先配列(騎士巡回問題順)で強さが変わるんでしょうか?

    駒の効きは縦方向多いので縦優先が効率よさそうですかね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です