3

Q関数にニューラルネットワークを利用するQ学習アルゴリズムの2次元グリッド世界の状態をより適切に表現しようとしています。

チュートリアル「ニューラル ネットワークを使用した Q ラーニング」では、グリッドは整数 (0 または 1) の 3 次元配列として表されます。1 番目と 2 番目の次元は、グリッド ワールド内のオブジェクトの位置を表します。3 番目の次元は、それがどのオブジェクトであるかをエンコードします。

したがって、4 つのオブジェクトを含む 4x4 グリッドの場合、64 要素 (4x4x4) を含む 3 次元配列で状態を表します。これは、Meural ネットワークの入力層に 64 個のノードがあり、グリッド ワールドの状態を入力として受け入れることができることを意味します。

トレーニングに時間がかからないように、ニューラル ネットワークのノード数を減らしたいと考えています。では、グリッドの世界を double の 2 次元配列として表すことはできますか?

4x4 グリッドの世界を double の 2-d 配列として表現しようとし、さまざまなオブジェクトを表すためにさまざまな値を使用しました。たとえば、プレイヤーを表すのに 0.1 を使用し、ゴールを表すのに 0.4 を使用しました。しかし、これを実装すると、アルゴリズムはまったく学習を停止しました。

今、私の問題は、レイヤーで使用しているアクティベーション関数を変更する必要があることだと思います。現在、双曲線正接活性化関数を使用しています。入力値の範囲は (0 - 1) です。出力値の範囲は (-1 から 1) です。シグモイド関数も試しました。

これは質問するのが難しい問題だと思います。ネットワークのアーキテクチャに関する提案をいただければ幸いです。

アップデート

ゲームには 3 つのバリエーションがあります。 1. 世界は静的です。すべてのオブジェクトは同じ場所から始まります。2. プレイヤーの開始位置はランダムです。他のすべてのオブジェクトは同じままです。3. 各グリッドは完全にランダムです。

さらにテストを重ねると、最初の 2 つのバリアントを 2 次元配列表現で完成させることができることがわかりました。したがって、私のネットワーク アーキテクチャは問題ないと思います。私が発見したのは、私のネットワークが壊滅的な忘却の影響を非常に受けやすくなっているということです (3 次元配列を使用していたときよりもはるかに顕著です)。「体験再生」を使って学習させなければなりませんが、それでも3番目の亜種を完成させることはできません。がんばります。グリッドの世界表現を変更することでどれだけの違いが生じたかに、私はかなりショックを受けました。まったくパフォーマンスが向上していません。

4

1 に答える 1

2

いくつかの標準的な表現は次のとおりです。

  • 多項式(通常は 1 次または 2 次): 1 次の場合、3 次元ベクトルが得られます。最初の要素はバイアス (次数 0)、2 番目はx座標、3 番目はy座標です。より高い学位の場合は、x^2, y^2, xy .... 環境が変わると、オブジェクトの位置も同じようにする必要があります。

  • 放射基底関数(または状態空間が離散的であるため、タイル コーディングN x N):ベクトル (Nは環境のサイズ) があり、各基底/タイルは、エージェントが対応するセルにあるかどうかを示します。ベース/タイルを少なくして、それぞれが複数のセルをカバーすることもできます。次に、環境内のオブジェクトに多項式を追加できます (場所が変更された場合)。

とにかく、64 次元の入力は NN にとって問題にはなりません。tanhaが使用するのに最適な非線形関数かどうかはわかりません。有名な DeepMind の論文を読むと、修正された線形アクティベーションを使用していることがわかります (なぜ? この記事を読んでください)。

また、バックプロパゲーション中に必ず勾配降下オプティマイザを使用してください。

編集

基本的に第 1 版と第 2 版に違いはありません (実際、エージェントの初期位置をランダムにすると、学習が高速化される場合もあります)。3 番目のバージョンは、状態表現に環境に関する詳細を含める必要があるため、もちろんより困難です。

とにかく、私が提案する機能は同じです: 多項式または放射基底関数です。

上記で引用した DeepMind の論文で説明されているように、エクスペリエンスの再生はほぼ必須です。また、Q 関数のターゲットとして 2 番目のディープ ネットワークを使用すると有益な場合があります。これはチュートリアルで提案されているとは思いません (見逃した可能性があります)。基本的に、ターゲットr + max(a) gamma * Q(s', a)は、ポリシーで使用される Q-network とは異なるネットワークによって指定されます。一時的な差分バックアップ中に一貫したターゲットを提供するために、すべてCのステップで Q-network のパラメーターを Q-target-network にコピーします。これらの 2 つのトリック (ミニバッチでのリプレイと別のターゲット ネットワークの使用) が、Deep Q ラーニングを成功に導いたものです。詳細については、DeepMind の論文を参照してください。

最後に、確認したい重要な側面をいくつか示します。

  • ミニバッチの大きさは?
  • あなたのポリシーはどの程度探索的ですか?
  • 学習を開始する前に、ランダム ポリシーを使用してサンプルをいくつ収集しますか?
  • どれくらい待っていますか?(学習するために、合計で 500k サンプルが簡単に必要になる可能性があります)
于 2016-04-26T07:52:06.790 に答える