2016-04-25 8 views
3

私は、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の変形を完了することができない。私は試し続けます。私は、グリッド世界の表現を変えていく違いのどれがどれほどのショックを受けたのかというと、パフォーマンスはまったく改善されていません。

答えて

2

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

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

  • Radial basis functions(またはtile coding状態空間が離散的であるため):あなたはN x Nベクトルがあるでしょう(Nは環境の大きさである)と、エージェントが対応するセル内にある場合、それぞれの基礎/タイルはあなたを教えてくれます。また、ベース/タイルを少なくして、それぞれが複数のセルをカバーするようにすることもできます。次に、環境内のオブジェクトの多項式を追加できます(場所が変更されている場合)。

とにかく、64次元入力はNNにとって問題ではありません。私は、tanhが使用するのに最良の非線形関数であるとは確信していません。 the famous DeepMind paperを読んだ場合、整流された線形起動(why? read this)が使用されていることがわかります。

また、バックプロパゲーション中にgradient descent optimizerを使用してください。

EDIT

第一と第二バージョンの間に違いは基本的にありません(実際には、ランダムエージェントの初期位置を持つことも、学習をスピードアップするかもしれません)。 3番目のバージョンはもちろん、状況の詳細に環境に関する詳細を含める必要があるため、より難しくなります。

とにかく、示唆している機能は同じです:多項式または放射状の基底関数。

私が上に引用したDeepMindの論文に記載されているように、経験のリプレイはほとんど必須です。また、Qファンクションのターゲットとして2番目のディープ・ネットワークを使用すると有益です。私はこれがチュートリアルで示唆されているとは思わない(私はそれを逃したかもしれない)。基本的にターゲットr + max(a) gamma * Q(s', a)は、お客様のポリシーで使用されているQネットワークとは異なるネットワークによって指定されています。 Cでは、時間差バックアップ中に一貫性のあるターゲットを提供するために、QネットワークのパラメータをQターゲットネットワークにコピーします。 これらの2つのトリック(ミニバッチでのリプレイ経験と別のターゲットネットワークの経験)は、ディープQラーニングを成功させたものです。ここでも、詳細についてはDeepMindの論文を参照してください。

最後に、いくつかの重要な側面は、あなたがチェックすることがあります:あなたのminibatchesはどのように大きな

  • を?
  • あなたのポリシーはどれほど魅力的ですか?
  • 学習を開始する前に、ランダムなポリシーを持つサンプルをいくつ収集しますか?
  • あなたはどれくらい待っていますか? (学習には合計500kサンプルが簡単に必要)
+0

はい、環境は変わります。私は私の質問を更新しました。 – Galen

+0

@Galen私は自分の答えも編集しています。私はこれを再度強調します: 'tanh'の代わりに' ReLU'を使ってみてください。そして、グラデーション降下オプティマイザを使用しましたか? AdamまたはRMSpropを試してください。 – Simon

+0

私は現在、2000回のunqiueエクスペリエンスのプールからランダムに取り出した500のミニバッチサイズを使用してテストしています。どのように探索的であるかについては、私は1.0でイプシロンを開始し、0.1までゆっくりと減衰する。私は通常約30Kのエピソードまで待つ。それまでに改善がなければ、私はそれをやめます。 GPUを使用していない場合は500kになる日数です。 – Galen

関連する問題