5

私は機械学習の初心者です。コンピューターにチェッカーを教えることで基本を学びたいです。実際、私が学びたいゲームはDomineeringHexです。私が選んだ言語はPythonです

これらのゲームは保存が非常に簡単で、ルールはチェスよりもはるかに単純ですが、プレイする人はそれほど多くありません。このアイデアを実現できれば、組み合わせゲーム理論を実験して、コンピューターかどうかを確認し、最適な動きを見つけることができれば素晴らしいと思います。

私はIBMの男による1960年代のチェッカーに関するこの古い論文を見つけました。もともとニューラルネットワークについて聞いていたのですが、間違ったツールだと言われています。

編集:機械学習が適切な戦略ではない可能性があります。その場合、何が問題になりますか?そして、より良い方法は何ですか?

4

3 に答える 3

3

以下をご覧になることをお勧めします: チヌーク、上位信頼ツリー、強化学習、およびアルファ-ベータ剪定。私は個人的に、各プレーヤーが 10 未満の合理的な手を持つ完全な情報ゲームのために、Alpha-Beta Pruning と Upper Confidence Trees (UCT) を組み合わせるのが好きです。時間差分学習を使用して、位置評価関数を作成できます。ゲーム AI はおそらく、機械学習を学ぶ最も楽しい方法です。

これらすべてのトピックへのリンクについては、

http://artent.net/blog/2012/09/26/checkers-and-machine-learning/

(スタックオーバーフローソフトウェアは私を初心者と見なすため、これ以上リンクを含めることができませんでした!)

于 2012-09-26T13:15:31.887 に答える
1

McGraw Hillによる「機械学習」という本を入手して、最初の章を読んでください。それは非常によく書かれていて、最初の章はチェッカーを再生するプログラムを作るのに十分なことをあなたに教えます。個人的には、miniclip.comで5行連続で再生するプログラムをPythonで作成しました。

http://www.amazon.com/Learning-McGraw-Hill-International-Editions-Computer/dp/0071154671

于 2012-09-26T02:42:39.533 に答える
0

チェッカーをプレイするとき、あなたは相手の駒を取り、自分の駒を戴冠させることによって、相手よりも有利になるように努めます。自分の駒を失い、対戦相手に自分の駒を戴冠させることは望ましくないので、そうすることは避けてください。

ボードゲームエンジンは通常、位置評価機能を中心に展開します。チェッカーの場合、私の最初の推測は次のようになります。

score =       number of allies         -     number of opponents
        + 3 * number of crowned allies - 3 * number of crowned opponents

ボードが与えられると、この関数はボードのスコアを返します。スコアが高いほど、あなたのポジションは良くなります。スコアが低いほど、ポジションは悪くなります。

素朴なチェッカーを「エンジン」にするために必要なのは、ボードの位置を指定して最適な動きを見つけることです。これは、すべての即時の法的な動きを検索し、スコアを最大化する動きを見つけることです。

あなたのエンジンは1つ以上の動きを先取りすることはありませんが、ある程度あなたと対戦することはできます。

次のステップは、エンジンに事前に計画を立てる機能を与えることです。これは、基本的に、対戦相手の反応を予測することです。これを行うには、対戦相手の最良の動き(ここでは再帰が発生します)を見つけて、スコアから差し引きます。

于 2012-09-26T03:12:01.287 に答える