Tic Tac Toeのようなゲームのニューラルネットワークと遺伝的アルゴリズム


9

現在、私は五目並べゲームをプレイするためのAIを作成することを目的としたプロジェクトを行っています(これはtic tac toeに似ていますが、15 * 15のボードでプレイし、勝つためには5つ続けて必要です)。私はすでにQラーニングを使用してゲームの状態/アクションをテーブルに保存して、完全な三目並べAIを正常に実装しましたが、15 * 15ボードの場合、ゲーム状態が大きくなりすぎて、このプロジェクトを実装できません。

私の質問は、この問題にはニューラルネットワークまたは遺伝的アルゴリズムを使用する必要があるかということです。より具体的には、これをどのように実装すればよいですか?


2
AIへようこそ!すばらしい質問です。
DukeZhou

回答:


7

gomokuの場合、ニューラルネットワークや遺伝的アルゴリズムを使用するのは少しやり過ぎのようです。どちらも時間がかかり、たいていの場合、思い通りに行かないためです。五目並べゲームツリーはかなり大きいですが、マッピングとは対照的に、ミニマックス、ゲームツリーの剪定、および優れたヒューリスティック関数(2および3、4、2の半分をカウントするなど)から適切なAIを取得できます。完全なスペース。

アルファベータプルーニングとミニマックスに慣れていない場合は、https: //www.cs.cornell.edu/courses/cs312/2002sp/lectures/rec21.htmを参照してください。

ニューラルネットワークや遺伝的アルゴリズムを本当に使用したい場合は、学習体験をすることができます。ニューラルネットワークに関して、それを行う1つの方法は次のとおりです。

  • ボード状態入力(空、黒、白の場合は0、1、2のシーケンス)を受け取り、ボード状態の「良さ」の値を出力するヒューリスティック関数を定義します。ニューラルネットワークはヒューリスティック関数です。
  • これらのゲームの動きが最適であると想定して、現在の最高の動き(現在のパラメーターによる)とデータが言う動きが最高であるという違いのトレーニングを行います。これがエラー関数の定義方法です!したがって、この違いを最小限に抑え、ニューラルネットワークの動きが最強であることが理想的であり、ゲームデータが最強であることが理想的です(このエラー関数の最適化は、逆伝播または遺伝的アルゴリズムによって行うことができます)。
  • 理想的には、この時点で、ハードコードされたヒューリスティックの代わりに、ゲームツリーの移動評価に(「強い」)ニューラルネットワークベースの評価関数を使用できます。

もちろん、これは1つの方法にすぎず、最初にゲームデータを見つける必要があります。

余談ですが、遺伝的アルゴリズムの適用は、上記のニューラルネットワークでのパラメーターの最適化やゲームツリーの検索など、いくつかの方法で発生する可能性があるため、問題の設定をどのように定義するかを明確にしてください!ニューラルネットワークを適用する別の方法についても同様です。

最後に、ゴムクが解決されたことを知ることは役に立ちます。他の人の考えやアイデアについては、https://stackoverflow.com/questions/6952607/ai-strategy-for-gomoku-a-variation-of-tic-tac-toeを参照して ください


2
gomokuを解決済みゲームとして使用することの良い点。これにより、簡単に(。つまり、それはゲームを解決し、完璧なプレーを表現する、またはそれだけでAlphaGoの場合のように、相手よりも、より最適に遊んでん)AIの強さを検証することができます
DukeZhou
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.