問題タブ [monte-carlo-tree-search]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - マルチプロセッシングでオブジェクトを共有する方法、python
これを読んでくれてありがとう。AlphaGo Lee や AlphaGo Zero のようなチェス AI を開発しました。Python と tensorflow を使用しました。チェス AI は、モンテカルロ ツリー検索、ポリシー ネットワーク、および値ネットワークで構成されます。
モンテカルロ木探索のポリシーとバリューネットワークの学習を行いました。問題はない。しかし、モンテカルロ木探索の各シミュレーションは遅すぎます。そのため、各シミュレーションの速度を上げたいと考えています。
私は、Python が GIL のためにオブジェクトを共有しないことを知っていました。私は本当にそれを助ける必要があります。Python マルチプロセッシングでオブジェクトを共有する経験がある場合は、経験を共有してください。
このページの下に要約コードを投稿します。
ps : 私は英語が苦手です。ですから、このページを読んで不快に思うなら、それは私のせいです。それを理解してください。
artificial-intelligence - モンテカルロ木探索 - ゲーム終了ノードの処理
うまく機能している 4 プレイヤー ゲームに MCTS を実装しましたが、ゲーム終了の動きがロールアウトではなく実際のツリーにある場合の拡張を理解できません。
最初は、ゲームの勝ち/負けの位置はロールアウトでのみ見つかり、これらをスコアリングしてツリーに反映させる方法を理解しています。しかし、ゲームが進行するにつれて、UCB1 によって選択されたリーフ ノードが最終的に見つかります。これは移動が許可されていない負けポジションであるため、展開することはできず、「展開」するゲームもありません。現時点では、これを最後に残ったプレーヤーの「勝利」として記録し、彼らの勝利を逆伝播します。
ただし、訪問統計を見ると、このノードは何千回も再訪問されるため、明らかに UCB1 はこのノードを何度も訪問することを「選択」しますが、実際にはこれは少し無駄です。これらの「常に勝つ」ノードで勝つ?
これについてGoogleでよく検索しましたが、実際にはあまり言及されていません。何かを誤解しているのか、明らかな何かが欠けているのでしょうか。「標準の」MCTSチュートリアル/アルゴリズムのいずれも、ツリー内のゲーム終了ノードを特別なケースとして言及していません、基本的なことを誤解しているのではないかと心配しています。