0

最近、私は、ニューラルネットワークがすべてのゲームにアクセスできるように、データ)。私は、神経回路網、遺伝的アルゴリズム、およびNEATの実装を強く理解しています。しかし、私が遭遇した問題は、プレイヤーが見ているものの入力を正規化することです。敵オブジェクト、medkitオブジェクト、および武器オブジェクトがある場合は、入力と処理を別々に行う必要があります。私はSethBling hereのビデオを見ました。そこでは、彼がそのニューラルネットワークをどのように設定しているかを簡単に説明しています。彼は値1,0、および-1のみを使用しました。しかし、もっと複雑なゲームでは、うまくいかないでしょう。入力が.25 < x <.75の場合にtrueを返すように小さなシミュレーションを取得しようとしましたが、そうでない場合はfalseですが、解決策が見つかりませんでした。したがって、私はオブジェクトのIDをニューラルネットワークに投げることはできないようです。どんな助けでも大歓迎です!ビデオゲームの機械学習(ニューラルネットワーキング)の入力を正規化する方法

答えて

1

私はコメントを残そうとしていましたが、残念ながら十分な評判ポイントがありません。だから、あなたにいくつかのアイデアを与えるための提案がいくつかあります。私はあなたのゲーム演奏アルゴリズムとしてNEATアルゴリズムを使用していると仮定します。さて、私があなたの問題を集めているのは、あなたがゲームでやりとりするさまざまな数の実際のオブジェクトを持っているため、すべてのフレームにすべてのラベルを付けることは事実上不可能です。したがって、あなたは、オブジェクトの非整数領域を提供する必要があるかどうか、検出されたクラスIDをクラスの総数で正規化するか、その他の方法であるかどうかを判断したように見えます。

1:ある種の画像操作(セグメンテーションであろうと閾値処理であろうと)、オブジェクトの検出と画像モーメントを使用するために、私は3つの命題を持っています。あなたが興味を持っているオブジェクトのデータベースを作成し、ゲームのプレイ中に実際のゲーム環境の簡単なバージョンを再作成することができます

2:セマンティックセグメンテーションニューラルネットワークを訓練して、 〜1

3:高度な特徴を抽出するために、訓練を受けた(または事前にトレーニングされた)深い畳み込みニューラルネットワークをトレーニングする(または使用する)。次に、NEATアルゴリズムの入力として、これらの機能(および場合によってはある種の位置符号化方式)を使用します。あなたのNEATアルゴリズムは、決定を下すために見たいフィルターの組み合わせを選択します。

最初に設定するには、手作業を最小限に抑えるため、私は個人的にオプション番号3を試してみます。

私はこれがあなたにいくつかのアイデアを与えることを願っています。

+0

私は既に、オプション1で述べたように、より単純なバージョンになっていますが、主な問題はオブジェクトIDを取得して意味のある入力にすることです。例えば、Enemyオブジェクトは1のIDを持ち、Coinオブジェクトは2などのIDを持ち、ニューラルネットワークが読み取るためにはデータに正規化する必要があります。あなたに気をつけてください。たとえ環境内に20のIDがあっても、ALL CoinsのIDは2です。 –

+0

私が触れたように、あなたはデータをあなたのアクティベーション機能の範囲に正規化することができます。たとえば、10種類のオブジェクト(つまり10種類のID)がある場合、そのオブジェクトのIDを取得し、10で割るだけです。この例では、敵の正規化IDは0.1で、コインには0.2の正規化されたid。これにより、IDをネットワークの飽和を防ぐアクティベーション機能の範囲にエンコードすることができます。 – Adam

0

ニューラルネットワークを扱う場合、良いアプローチはそれらを人間と考えることです。人間は何を知る必要がありますか? 私がいつもやっていることは、ネットワークにさまざまな種類のものに対して異なるセンサーを付けることです。私のセンサーはほぼ常に一定の長さの光線です。 あなたの状況では、コインのセンサーを3つ、メディスコットのセンサーを3つなど、より良い選択肢があると信じています。 ブールセンサーを使用するかどうかを決める必要があります(どれくらい近接していても)、またはセンサーを二重にすると(ネットワークにイベントがどれほど近いかを伝える値を返します)、または両方を組み合わせたい場合に使用します。

関連する問題