グリッドベースのゲームを学習するためのニューラルネットワークの入出力エンコーディング


13

シンプルなおもちゃのゲームを書いていますが、その上にディープニューラルネットワークをトレーニングするつもりです。ゲームのルールはおおよそ次のとおりです。

  • ゲームには、六角形のセルで構成されるボードがあります。
  • 両方のプレイヤーは、ボード上で自由に配置することを選択できるピースの同じコレクションを持っています。
  • 互いに位置と構成に応じて、異なるタイプのピースを配置するとポイントが与えられます(または相手のポイントが減ります)。
  • より多くのポイントを獲得した人が勝ちます。

追加のルール(ターン、ピースの数、タイプなど)がありますが、この質問の文脈では重要ではありません。自分自身と対戦することで繰り返し学習できるディープニューラルネットワークを考案したいと思います。私の質問は、入力と出力の表現についてです。特に:

  • ピースのパターンが重要なので、少なくともいくつかの畳み込み層があると考えていました。ボードはさまざまなサイズにすることができますが、原則として非常に小さいです(テストでは6x10、数個のセルで拡張するため)。それは理にかなっていますか?どのようなプーリングを使用できますか?
  • 両側を表現するには?で、この論文、外出先について、著者は、2つの入力行列、白の石と黒の石のための1のための1つを使用します。この場合でも機能しますか?しかし、A、B、C、Dなど、さまざまなタイプのピースがあることを思い出してください。2x4の入力行列を使用する必要がありますか?それは非常にまばらで、私にはほとんど効率的ではないようです。たたみ込み層が機能するにはあまりにもまばらになると思います。
  • 出力は、ボードの位置を表すマトリックス上の確率の分布に加えて、プレイするピースを示す確率の別の配列になると考えました。ただし、ターンを渡す能力も表現する必要があります。これは非常に重要です。他の確率の中でその重要性を薄めることなくそれを行うにはどうすればよいですか?
  • そして最も重要なことは、勝ち手のみを強制するのか、それとも負け手を強制するのか?希望する確率を1に設定しただけなので、勝ちの動きを強制するのは簡単です。その移動確率を0に設定し、他のすべてを同じ値に設定しますか?また、最終的なスコアの差によって動きを強制することは意味がありますが、これはおおよそ確率である出力の意味に反しますか?

また、フレームワークとしてSynapticを使用することを考えてnode.jsでゲームエンジンを開発しましたが、畳み込みネットワークで動作するかどうかはわかりません(ローカルの知覚フィールドに関連付けられた重みを修正する方法があるとは思いません)。ノードと互換性のある他のライブラリに関するアドバイスはありますか?


マシンが未知のゲームを学び、それから勝つ方法を学ぶことを望んでいると仮定しますか?(機械学習ソフトウェアを書く前にプログラマーがルールを利用できるゲームに勝つ方法を学ぶのとは対照的に)
-FauChristian

回答:


1
  • ピースを表すには、単一の入力マトリックスを使用できる必要があります。ピースの種類ごとに整数を指定するだけです。白い石は正の整数、黒い石は負の整数にすることができます。

  • ボード位置の信頼性にシグモイドを使用し、ピース識別子の線形アクティベーションを使用できます。passは別のシグモイド出力になります。パスが希釈されることを心配する必要はないと思います。これは非常に価値のあるアクションであるため、スコアはパスの出力に大きく依存し、勾配が大きくなります。強化学習のために高頻度でパスアクションを選択する必要がある場合は、ランダム選択関数でパスアクションに高い確率を割り当てるだけです。

  • 最終的な得点の差は、動きの望ましさに大きく影響します。スコアの差が大きいと、機能に大きな影響を与えるはずです。したがって、損失関数にスコアの差の大きさを含めることができます。

これは、Deep Q Learningが行うジョブのタイプです。おそらくあなたもそれを調べたいと思うでしょう。


1

入力として画像をフィードしないため、convレイヤーは必要ありません(以下を参照)。または、ボードの写真を使用してみることができます(異なる形状の異なるピースを使用)。これも機能します。次に、2つのconvレイヤー、ストライド1、半分のサイズに等しいカーネルサイズに進みます。単一の最大プーリングで試してみます。

他の答えとは異なり、入力として3Dテンソルを使用することをお勧めします。チャネルの数は異なる部分に等しくなります。等しい他の2つの寸法は、ボード上のセルの数に対応します。NNのさまざまな変換では、複数の整数をうまく区別できません。そのため、ピースのタイプのワンホットエンコーディングを使用することをお勧めします。

出力にはn + 1個の成分を持つベクトルのみを使用します。nはすべての可能な動き、1はパスです。それは確率ではなく、各動きに期待される報酬をエンコードします。

動きを強制することの意味がわかりません。しかし、Qラーニングなどでトレーニングする場合、一定の確率(10%の確率で)で完全にランダムな動きをすることが理にかなっています。ルックアップhttps://en.wikipedia.org/wiki/Reinforcement_learning


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