ニューラルネットワークにカードゲームを教える


10

このゲームにはまだエンジンがないため、現在カードゲームをプレイするためのエンジンを作成しています。

後でゲームにニューラルネットを導入して、ゲームのプレイ方法を習得してもらいたいと思っています。

私はAIプレイヤーにとって役立つような方法でエンジンを書いています。選択ポイントがあり、それらのポイントで、有効なオプションのリストが表示されます。ランダム選択でゲームをプレイできます(ただし、うまくいきません)。

ニューラルネットワーク(主にNEATとHyperNEAT)について多くを学び、独自の実装を構築しました。これらのタイプのゲームの1つですべての変数を考慮に入れることができるAIをどのように作成するのが最善かわからない。一般的なアプローチはありますか?KeldonがRftG向けに優れたAIを書いたことは知っていますが、かなり複雑で、彼がどのようにしてこのようなAIを構築できたかはわかりません。

何かアドバイス?実現可能ですか?この良い例はありますか?入力はどのようにマッピングされましたか?

編集:私はオンラインで調べて、ニューラルネットワークがどのように機能するか、そして通常それらが画像認識や単純なエージェントの操作にどのように関係するかを学びました。複雑な相乗効果を持つカードでの選択にそれを適用するかどうか、またはどのように適用するかわかりません。私が調査しなければならない方向へのどんな方向でも大歓迎です。

ゲームについて:ゲームはMagic:The Gatheringに似ています。健康と能力を持つ指揮官がいます。プレイヤーはボードにミニオンとスペルを置くために使用するエネルギープールを持っています。ミニオンにはヘルス、攻撃値、コストなどがあります。カードにも能力があります。これらは簡単に列挙できません。カードは手札からプレイされ、新しいカードはデッキから引き出されます。これらはすべて、ニューラルネットワークで検討するのに役立つ側面です。


こんにちは、AI.SEへようこそ!これは現在のところ、私たちが適切に答えることができないように少し広すぎるように見えます。編集して少し絞り込むことができると思いますか?ありがとう!
Mithical、2017

質問は幅広いものですが、この分野に不慣れな人にとっては明白で一般的な質問です。また、Googleを使用して答えを見つけるのが難しいもの(NNに関するほとんどのチュートリアルは、画像認識と言語の例に焦点を当てているようです)。私は、NNを使用してゲーム(この場合は特定のカードゲーム)をプレイするためのアプローチとテクニックに関する優れたリソースを指す回答に値すると思います。
user12889 2017

フィードバックをお寄せいただきありがとうございます。質問を少し編集しました。教材を学習する方向性があれば役立ちます。あなたが言ったように私はほとんど画像認識を見つけます。私は学びたいと思っており、単純な答えではなく、推奨される読み取りの大規模なセットを用意して満足しています。
pcaston2 2017

回答:


3

私はあなたが良い質問、特にNNの入力と出力がMtGのようなカードゲームのメカニズムにどのようにマッピングされるかについての質問を提起すると思います。

私は申し出に対して本当に満足のいく答えはありませんが、私はギャラクシーNNベースのAIのためのケルドンのレースをプレイしました。

KeldonのAIの最新コードがgithubで検索および閲覧できるようになりました。

AIコードは1つのファイルにあります。2つの異なるNNを使用します。1つは「手札とアクティブカードの評価」用で、もう1つは「役割選択の予測」用です。

NN以外のコードでかなりの量を使用してゲームのメカニズムをモデル化していることに気づくでしょう。非常にハイブリッドなソリューションです。

ゲームの状態の評価NNへのマッピングは、ここで行われます。ターンに販売できる商品の数など、さまざまな関連機能がワンホットエンコードされます。


複雑なゲームをNNにマッピングするもう1つの優れたケーススタディは、DeepmindがBlizzard Entertainmentと共同で作成したStarcraft II Learning Environmentです。このペーパーでは、StarcraftのゲームがNNが解釈できる一連の機能にマップされる方法と、NNエージェントがゲームシミュレーションにアクションを発行する方法の概要を示します。


2

これは完全に実現可能ですが、入力がマップされる方法は、カードゲームのタイプとそれがどのようにプレイされるかに大きく依存します。

私はいくつかの可能性を考慮に入れます:

  1. このゲームでは時間が重要ですか?過去の動きは将来の動きに影響を与えますか?この場合、リカレントニューラルネットワーク(LSTM、GRUなど)を使用したほうがよいでしょう。
  2. 収集したデータからニューラルネットワークを学習しますか、それとも独自に学習しますか?それだけの場合、どうですか?ゲームを数十回または数百回プレイした自分のデータを収集し、それをニューラルネットにフィードして、それを学習させれば、「行動クローン」と呼ばれることを実行していることになります。ただし、NNが独自に学習する場合は、次の2つの方法で行うことができます。

    a)強化学習 -RLを使用すると、ニューラルネットはそれ自体とたくさん対戦して学習できます回のを。

    b)NEAT /遺伝的アルゴリズム -NEATにより、ニューラルネットは遺伝的アルゴリズムを使用して学習できます。

ただし、ここでも、ニューラルネットの入力と出力をどのようにエンコードするかについてより具体的に説明するために、カードゲーム自体について詳しく知る必要があります。


こんにちは、答えてくれてありがとう!これらの領域を調査して、何が当てはまるかを確認します。私はこれがあなたのためにそれを狭めることを望んでゲームの短い説明を追加しました。私のエンジンは取り消しをサポートしているため、NNと組み合わせて使用​​すると便利です。エンジンが完成していないので、サンプルセットはありませんが、ホスティングサーバーからのすべてのゲーム履歴を2人のプレイヤー間で保持することを計画しています。プロセスを加速するために、バックプロパゲーションの使用を検討していました。
pcaston2 2017

ゲームの状態が重要であるが、どのようにしてその状態に到達したかではない場合、時間は重要であると言えますか?時間の問題と時間の問題のないゲームの例を挙げていただけますか?現時点では、現在の状態が重要である状況(誰であるか、既知のカードまたはゲームのピースがどこにあるか)のみを考えることができますが、どのようにしてそこに到達したか(重要なことは、それらが現在どこにあるかではなく、どこにあるかではありません) 2ターン前だった)
Simon Forsberg 2017年

2

AIエージェントが持っているカード(その値とタイプ)、マナプール、テーブル上のカードの数とその値、ターン数など、ゲームに関する重要な情報をネットワークに確実に知らせたいと思います。自分で考えなければならないこれらのことは、「この値を追加して、システムを改善する方法と理由を入力する場合」ということです。しかし、最初に理解する必要があるのは、ほとんどのNNは一定の入力サイズを持つように設計されており、プレイヤーは手札やテーブルにさまざまな量のカードを置くことができるため、これはこのゲームでは問題だと思います。たとえば、NNにカードの種類を知らせたい場合、プレーヤーは最大5枚のカードを手に持つことができ、各カードは3つの値(マナ、攻撃、ヘルス)を持つことができるので、これを5としてエンコードできます。 * 3ベクトル、最初の3つの値はカード番号1などを表します。しかし、プレーヤーが現在3枚のカードを持っている場合、単純なアプローチは最後の6つの入力にゼロを割り当てることですが、一部のカードは0マナコストまたは0攻撃を持つことができるため、これは問題を引き起こす可能性があります。したがって、この問題を解決する方法を理解する必要があります。可変入力サイズを処理できるNNモデルを探すか、一定サイズのベクトルとして入力をエンコードする方法を理解することができます。

第二に、出力も一定サイズのベクトルです。このタイプのゲームの場合、エージェントが実行できるアクションをエンコードするベクトルにすることができます。それでは、3つのアクションがあるとします:カードを置く、ターンをスキップする、そして譲る。したがって、1つのホットエンコーダーにすることができます。たとえば、1 0 0出力がある場合、これはエージェントがカードを置く必要があることを意味します。それが置くべきカードを知るために、1から5の範囲の数を生成する別の要素を出力に追加できます(5は手札の最大数です)。

しかし、ニューラルネットワークのトレーニングの最も重要な部分は、自分のタスクに適した損失関数を考え出す必要があることです。多分、平均二乗損失やL2のような標準的な損失関数は適切でしょう。おそらく、ニーズに合うようにそれらを変更する必要があります。これは、研究を行う必要がある部分です。私はこれまでNEATを使用したことがありませんが、正しく理解したことから、遺伝的アルゴリズムを使用してNNを作成およびトレーニングし、GAはいくつかのフィットネス関数を使用して個人を選択します。したがって、基本的には、モデルのパフォーマンスを評価するために使用するメトリックを知る必要があり、このメトリックに基づいてモデルのパラメーターを変更します。

PS。ニューラルネットワークでこの問題を解決することは可能ですが、ニューラルネットワークは魔法ではなく、すべての問題に対する普遍的な解決策ではありません。あなたの目標がこの特定の問題を解決することである場合、ゲーム理論とAIでのそのアプリケーションを掘り下げることもお勧めします。この問題を解決するには、AIのさまざまな分野の複雑な知識が必要になると思います。

ただし、ニューラルネットワークについて学ぶことが目的の場合は、もっと簡単なタスクを実行することをお勧めします。たとえば、ベンチマークデータセットで機能するNNを実装できます。たとえば、MNISTデータセットの数字を分類するNNなどです。その理由は、このデータセットで分類を行う方法について多くの記事が書かれており、多くのことを学び、単純なものを実装することでより速く学ぶことができるからです。


1

はい。実現可能です。

質問の概要

システムの設計目標は、カードゲームプレイングエンジンと組み合わせて1つ以上の人工ネットワークを採用することで、戦略的に有利な利点を得るように思われます。

質問は、モルゲンシュテルンとフォンノイマンのゲーム理論に概説されているように、ゲームプレイの基本に対する一般的な認識を示しています。

  • ゲームプレイ中の特定の時点で、プレーヤーは移動を実行する必要があります。
  • ゲームのルールに従って、移動オプションの最後のセットがあります。
  • 移動を選択するためのいくつかの戦略は、他の戦略よりも複数のゲームプレイで高い勝利記録を生み出します。
  • 人工的なネットワークを使用して、ランダムな移動選択よりも頻繁に勝利するゲームプレイ戦略を作成できます。

ゲームプレイの他の機能は、それほど明白ではない場合があります。

  • 各移動ポイントにはゲームの状態があり、これはゲームプレイの成功の改善に関与するすべてのコンポーネントに必要です。
  • カードゲームでは、対戦相手がいつブラフするかわからないだけでなく、シャッフルされたカードの秘密の順序によって、仮想プレーヤーと同等の動きでランダムに近づくことができます。
  • 3人以上のプレーヤーゲームでは、パートナーまたは潜在的なパートナーのシグナリングにより、いつでも勝つゲーム戦略を決定するのに複雑さの要素を追加できます。編集によると、このゲームにはそのような複雑さがあるように見えません。
  • 脅迫などの心理的要因も、ゲームプレイの勝利に影響を与える可能性があります。エンジンが対戦相手に顔を出すかどうかは不明なので、この回答はスキップします。

一般的なアプローチのヒント

入力と出力の両方をマッピングする一般的な方法がありますが、Stack Exchangeの回答では説明が多すぎます。これらはほんのいくつかの基本的な原則です。

  • 明示的に実行できるすべてのモデリングを実行する必要があります。たとえば、人工的なネットは理論的にカードの数え方(各カードの可能な位置の追跡)を学習できますが、単純な数え上げアルゴリズムがそれを行うことができるので、既知のアルゴリズムを使用してそれらの結果を人工的なネットワークにフィードします。入力。
  • 最適な出力に関連付けられている情報は入力として使用しますが、最適な出力に関連付けられない可能性のある情報は入力として使用しないでください。
  • データをエンコードして、トレーニング中と自動ゲームプレイ中の両方で入力ベクトルの冗長性を減らします。抽象化と一般化は、これを達成するための2つの一般的な方法です。特徴抽出は、抽象化または一般化するためのツールとして使用できます。これは、入力と出力の両方で実行できます。例として、このゲームで、A> K、K> Q、Q> J、10> 9と同じ方法でJ> 10の場合、カードを2〜14または0〜12の整数としてエンコードします。 1を引く。スーツを4つのテキスト文字列ではなく0〜3としてエンコードします。

画像認識作業はリモートでのみ関連しているため、視覚的に画像からカードを認識する必要がない限り、カードゲームプレイとはあまりにも異なります。その場合、他のプレーヤーが移動のために選択したものを確認するためにLSTMが必要になることがあります。勝利戦略を学ぶことは、MLPやRNNの設計、またはそれらの派生的な人工ネットワーク設計の1つから利益を得る可能性が高いでしょう。

人工ネットワークの機能とトレーニングの例

これらのタイプの人工ネットワークの主な役割は、サンプルデータから機能を学習することです。実際のゲームの移動シーケンスがある場合、それはプロジェクトにとって素晴らしい資産です。それらの非常に多数は、トレーニングに非常に役立ちます。

例をどのように配置するか、どのようにラベルを付けるかは検討に値しますが、カードゲームのルールがないと、信頼できる方向性を示すことは困難です。パートナーがいるかどうか、スコアに基づくかどうか、勝利への動きの数かどうか、およびその他の12の要因が、これらの決定を行うために必要なシナリオのパラメーターを提供します。

勉強する

私が与えることができる主なアドバイスは、ウェブ上のそれほど一般的な記事ではなく、上記のトピックについて理解できるいくつかの本といくつかの論文を読むことです。次に、ダウンロードできるコードを見つけて、用語を十分に理解してから、何をダウンロードすればよいかを理解してから試してください。

つまり、本の検索や学術的な検索は、一般的なウェブ検索よりも正しい方向に進む可能性がはるかに高くなります。一般的なWebスペースには何千ものposerがあり、多数のエラーを伴うAIの原則を説明しています。本や学術論文の出版社は、著者に対するデューデリジェンスをより要求しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.