kobanium / TamaGo

Computer go engine using Monte-Carlo Tree Search written in Python3.
Apache License 2.0
54 stars 10 forks source link

MCTSの可視化 #91

Open kaorahi opened 8 months ago

kaorahi commented 8 months ago

TamaGo を少し改造して MCTS の可視化を試しています. 現状のやっつけ実装からいくらか体裁を整えたら, マージの可能性はございますでしょうか?

教育やデモには良さそうに思われますが, プロジェクトの趣旨に合わなければご遠慮なく却下ください. 概念図ではない「現物」は見たことがなかったので, 個人的にはおもしろいです.

アニメーション

https://github.com/kaorahi/TamaGo/tree/mcts_step

https://github.com/kobanium/TamaGo/assets/38910552/cef351d2-1bdb-4ab5-9967-48cb1927e234

(kaorahi/lizgoban#100 を参考にしました)

ツリー表示

https://github.com/kaorahi/TamaGo/tree/treeviz

100visits

tree100

1000 visits

tree1000

10000 visits (principal variation 周辺のみ)

tree10000

kobanium commented 8 months ago

どちらも非常に興味深い機能だと思います。
探索部や学習部の可読性が著しく低下したり、破壊的変更になるようなものでなければ基本的にPRは受け付けているので、本機能郡についてPRを出していただけるのであればマージして、次バージョンとしようと考えています。
コードについても細かい体裁やコメント等はこちらで理解しながら追記するので、気軽にPRを出していただければ幸いです。

kaorahi commented 8 months ago

ありがとうございます. 理解・改造しやすいことが TamaGo の魅力だと思いますから, 機能を欲ばってコードを肥大化させないようにと気にかけています.

アニメーションのほうがやっつけ度が高いので後回しにして, ツリー表示について, まずは実装の方針をご相談願えないでしょうか. 以下の方針に何かコメントがあればお聞かせください.

また, ツリー表示を作っていたら下記がほしくなりました. こちらは別 PR にします. 本体の PR が形になるまで採否保留でも結構です.

kobanium commented 8 months ago

実装方針確認しました。ツリー表示についてはその方針で良いと思います。 ツリーのダンプ機能についてはmcts/tree.pyに挿入して、ダンプからのグラフ表示機能は適当なディレクトリ(graphあたり?)を切って、その中に対応するスクリプトを入れるイメージですかね。

指定した回数探索するオプションについては、探索打ち切り機能を入れたタイミングで--visitsオプションの機能が微妙に変わってしまっているので確かにそのようなオプションは必要ですね。
もしかしたら既に実装済みかもしれませんが、まだコマンドラインオプションの追加対応に着手されていないのであれば、こちらで実装してdevelopブランチにpushしようと思います。

tamago-read_sgfコマンドについても特別探索部やNN部に影響はありませんし、純粋に機能が拡張されるだけなのでPRが来たらマージする方向で考えています。
置碁のサポートは多分そんなに難しくないですが、分岐のあるSGFを扱うとなると結構大変かもしれません。分岐のサポートの有無含め、どのように実装するかはタイミングを見て議論しましょう。

あと1点お手数をお掛けしますが、下記機能それぞれでissueを分けて作成していただけないでしょうか。

複数機能に絡むディスカッションは本issueで行いますが、個別機能の議論は各issueで行いたいという狙いがあります。
またPRの際にどの機能かをマッピングできるようにしたいというものあります。

kobanium commented 8 months ago

issueの作成、確認しました。 ありがとうございます。