囲碁のGUI

f:id:the48:20200418140306j:plain

 

世間的にLizzieが流行っているんだと思うが,色々遊んだ結果LizGobanを常用しようかと思っている。

機能不足は作ればいいという考えではあるのだが,そもそも囲碁の経験が浅くてどこから何をすればいいかよくわからない。

ゲームボーイアドバンスヒカルの碁をやった程度と言えばどんなものか分かって頂ける人も多いかもしれない。海外出張とか多かった時期なので何度もトライすることで一応完クリしている。

囲碁やる上で一般の王道を進んでは面白くないので完全に邪道から学ぶことにする。囲碁AIを参考に独自に自作しつつ並行して人間として囲碁を学ぶという手筋が私の立場で適当ではないかと考えている。

 

github.com

 

囲碁AIの書籍は多く出ているのでアルゴリズム的なざっくりとした理解はそれほど大変でもない。ところが具体的な実装となると一気に難易度が飛躍する。特に性能を出そうとすると多くの問題をクリアするために非常に特殊な処理が多く施されており個々の技術を知らずにそのソースを読むのは難儀である。また,囲碁AIも種類が増えるにつれ差別化として追加機能やアルゴリズムの変更などが施されており基本アルゴリズムが同じであることすら疑いたくなるくらいである。

エンジン部も基本はLeela Zeroで良いのだろうけど,ここはKataGoから入ってみようとする。理由は後述。

 

で,インストールはLizGobanのドキュメントにあるようにややこしいことが苦手な一般ユーザは一括インストールされるパッケージで問題ない。

最新GPUで最高のパフォーマンスを求める人とエンジンやGUIを改造してみようとする人は手動でマニュアル通りインストールすればいい。実に的確で丁寧であるように思うので好感持てる。ちなみにKataGoも良かれとCUDA版も入れてみたがGPUが最新でないとOpenCL版に劣るパフォーマンスになることがある。とにかくまずは一括パッケージで入れてみることをお勧めしておく。

 

手動で入れるにはElectronが何物か分かる人ならNode.jsをインストールしてnpmでパッケージ管理されていると言えばわかるだろうし,設定はjsonファイルで対応できるだろう。

分からん人はそれぞれ調べて勉強して下さいな。

 

LizGobanのGUIで左の盤がmainである。現状況に候補手の順位・期待勝率・MCTSでの探索数が表示されている。手が進むと地になりそうなところにほんのり色がついてきて,地の期待値が数字で出る。KataGoの機能で出力される情報の大半が一目で見えるところが良い。

 

右の盤がPVと呼ばれる最善手の読み筋である。もちろん探索が進むにつれ変わっていく。最善手以外の読み筋はと言えば左の盤でマウスカーソルを候補手に乗せるだけで表示される。邪魔になるので普段は外しておこう。

 

左下がwinrate barと呼ばれるグラフである。黒白の勝率が数字で期待目数が横軸で探索数が縦軸で数手の候補手がプロット表示されるようである。扇形の意味はあまり分からないが探索が進むにすれ候補が上下する方向などを示しているように思う。

AlphaGoでは探索数が最大の手を最善手としていたように思うがKataGoなどではLCB等のアルゴリズムのため最大探索数が最善手候補となるわけではないことが分かる。

また,実際に使えば分かるのだが迷う局面と全く迷わない局面がある。

 

右下横長のグラフは手が進むに連れての局面評価である。まだちょっと分からない指標もある。

右下隅がMCTSアルゴリズムを理解した人ならすんなり入ってくると思うが各候補手の探索数が縦軸,総探索数が横軸のグラフである。探索が進んで候補手の入れ替わる様子が見えて楽しい。

 

と,情報量が多いことでLizGobanで遊んでみようということである。

ちなみに地の期待値と予測目数はKataGoでしか出ないらしいのでこちらもKataGoがおすすめとなる。

---

19日のNHKトーナメント,先週に続いて大逆転があったようです。

いやぁ争点が全然分かりません。

f:id:the48:20200419142919p:plain