私は、Q関数にニューラルネットワークを利用するQ学習アルゴリズムの2次元グリッドワールドの状態をよりよく表現しようとしています。ニューラルネットワークのグリッドワールド表現
チュートリアルQ-learning with Neural Networksでは、グリッドは3次元の整数(0または1)の配列として表されます。第1および第2の次元は、グリッド世界におけるオブジェクトの位置を表す。 3番目の次元は、それがどのオブジェクトであるかをエンコードします。
4つのオブジェクトがある4x4グリッドの場合、その中に64個の要素がある3次元配列(4x4x4)で状態を表現します。これは、入力ネットワークには入力層に64個のノードがあるため、入力としてグリッドワールドの状態を受け入れることができることを意味します。
ニューラルネットワークのノード数を減らして、トレーニングに時間がかかりません。ですから、グリッドの世界を二次元の2次元配列として表現することはできますか?
2倍の2次元配列として4x4グリッドワールドを表現しようとしましたが、異なるオブジェクトを表現するために異なる値を使用しました。たとえば、プレーヤーを表すには0.1を使用し、目標を表すには0.4を使用しました。しかし、私がこれを実装すると、アルゴリズムはまったく学習を止めました。
私の問題は、私が自分のレイヤーでどのアクティベーション機能を使用しているかを変更する必要があることだと思います。私は現在、双曲線接線活性化関数を使用しています。私の入力値の範囲は(0 - 1)です。私の出力値の範囲は(-1から1)です。私はシグモイド関数も試みました。
私はこれが複雑な問題であることを理解しています。ネットワークのアーキテクチャに関する提案があれば歓迎されます。
UPDATEゲームには3つのバリエーションがあります
: 1.世界は静的です。すべてのオブジェクトは同じ場所で開始されます。 2.プレイヤーの開始位置はランダムです。他のすべてのオブジェクトは同じままです。 3.各グリッドは完全にランダムです。
2次元配列表現で最初の2つのバリアントを完成させることができました。だから、私のネットワークアーキテクチャはうまくいくと思います。私の発見したことは、私のネットワークが壊滅的な忘却に対して非常に敏感であることです(私が3dアレイを使用していたときよりもはるかにそうです)。私はそれを学ぶために "体験リプレイ"を使用しなければならないが、それでも私はまだ第3の変形を完了することができない。私は試し続けます。私は、グリッド世界の表現を変えていく違いのどれがどれほどのショックを受けたのかというと、パフォーマンスはまったく改善されていません。
はい、環境は変わります。私は私の質問を更新しました。 – Galen
@Galen私は自分の答えも編集しています。私はこれを再度強調します: 'tanh'の代わりに' ReLU'を使ってみてください。そして、グラデーション降下オプティマイザを使用しましたか? AdamまたはRMSpropを試してください。 – Simon
私は現在、2000回のunqiueエクスペリエンスのプールからランダムに取り出した500のミニバッチサイズを使用してテストしています。どのように探索的であるかについては、私は1.0でイプシロンを開始し、0.1までゆっくりと減衰する。私は通常約30Kのエピソードまで待つ。それまでに改善がなければ、私はそれをやめます。 GPUを使用していない場合は500kになる日数です。 – Galen