2017-02-10 4 views
-2

私は単純なゲームをPythonで簡単に実装しています。小さなゲームでのニューラルネットワークの基礎の理解

ゲームは単純なルールがあります。

  • 2選手が
  • 互いに対戦する全てのプレイヤーは、プレイヤーのラウンド10枚のカード
  • 各同時にカードをプレイ
  • 高を果たしたプレーヤーを持っていますカードがラウンドに勝つ
  • 残っているカードがなければ、最も勝ったラウンドのプレーヤーが勝利する

は、今私は、init-機能、chooseMove-機能(ここであなたは敵が最後のカードを果たした見ることができます)とゲームオーバー-機能(ここではあなたが見ることができますがありニューラルネットワーク

を使用してAIを構築したいですゲームの結果は)

今私の質問は:

- >どのように私はこれに近づいていますか?私は、さまざまな動き(1つの動き、2つの動き、...)、またはすべてのための異なるネットワークを構築していますか?私は入力と出力として何を定義し、どのように勝利と何が失われたのかをネットワークに伝えますか?

私はすでにネットワークを考えていますか? (あなたのラウンドに勝利したときなど、あなたのカードと敵のカードの差は非常に小さいが、ラウンドが緩んだ場合、その差は非常に大きくなるはずです)

これらはすべて非常に基本的な質問ですNNの私の理解は本当に良いものではないが、これがNNの基本を理解するのに役立つと思った。

答えて

1

ニューラルネットワークは分類に使用でき、そのうちのいくつかは回帰のために使用できます。 NNを試したい場合は、上記の説明に合った形式で問題を提示する必要があります。さらに、NNは通常固定長ベクトルを入力として使用するため、ゲームのさまざまなラウンドを処理することが問題になります。実際にあなたのシンプルなゲームはNNにとって非常に複雑です。先に進むことを希望する場合は、次のようにする必要があります。

  1. 問題を分類または選択方法として定義します。例えばプログラムは、特定のハンドからどのカードを再生するかを選択する必要があります。
  2. データを固定長ベクトルに正規化します。
  3. トレーニングデータを取得します。データベース形式
  4. ゲームでの録音は、上記の各点を再コーディングゲームに

を使用してNNを訓練するあなたのNN

  • を作成し、複雑なトピックとページの数百は、それらのそれぞれについて書くことができます。

    何か簡単なことをしたい場合は、別のオプションを提案してもいいですか?ポーカープレイヤーが最初にフォールドするかゲームに参加するかを決定するNNを書くことは、典型的なNN問題に非常に近いものです。あなたの入力は2つのカードとポーカーテーブル(6または10)のサイズは、それを簡単に保つためです。 NNは、出力としてイエス・ノーの決定を下すことが期待されている。これは、パラメータ数が少ない分類問題です。あなたは、人間が演奏するゲームのレコーディングでなければならないトレーニングデータを入手する必要があります。基本的なロジックは、プレイヤーのスタートハンドが何だったかを確認し、最初にゲームをフォールドするか参加するかの予想される決定を定義する、そのゲームでプレイヤーが獲得した金額を確認することです。 RBFネットワークを選択することができます。学習アルゴリズムを定義し、トレーニングデータを提示すると、あなたのNNが鍛えられるでしょう。あなたは最初のトレーニング方法としてランダムウォークを選ぶことができます。トレーニングの後、あなたのNNは、あなたが与えられた手で遊ぶべきかどうかを決めることができます。ポーカーのデータベースには、トレーニングデータを作成するために使用することができますアルバータ大学から提供されています:
    http://poker.cs.ualberta.ca/irc_poker_database.html

  • +0

    私は本当に正しい答えとして、それを選択することはできませんが、私は私の質問に対する正しい答えがないと思いますので、... しかし、説明とあなたの提案したアイデアにも非常に感謝しています!私は私の問題についてもう少し考えをしてから、もっと簡単に変更するかもしれません:) – greece57