2017-04-17 14 views
1

私はKerasを使って深いqの学習を実験しています。私はタスクを実行するエージェントを教えたいと思います。深いqの学習が収束していない

私の問題で、私はそれにオブジェクトを打つ避けるために、エージェントを教えるためにwan'tは、エージェントが水平移動され、回避するためのオブジェクトが上下動し、私されているスピード(加速または減速)

です変更することにより、パスですそれを打つことを避けるためにスピードを変える方法を学ぶことをやめてください。 私はこの上に自分のコードベース:Keras-FlappyBird

iが400出力ノード

と、シグモイド活性化関数10緻密隠れ層と

  1. モデル(iは畳み込みネットワークを使用していない)3つの異なるモデルを試しReLu活性化機能10緻密隠れ層とLeaky ReLU活性化関数

  2. モデル10緻密隠れ層と
  3. モデル400の出力ノードで

と私はネットワークに私の言葉のすべてのオブジェクトの座標と速度をネットワークにフィードします。

と100万のフレームのためにそれを訓練し、まだここに結果 は3つのモデルのための私のq値のプロットで見ることができない、

モデル1:q値 enter image description here モデル2 :q値

enter image description hereモデル3:Q値

enter image description here モデル3:あなたは報酬あちこちと全て同じで改善されていないのq値を見ることができるようにQ値が

enter image description here

をズーム...私を助けてください私は私だものを間違っています。

答えて

0

あなたの環境によって少し混乱します。私は、あなたの問題は鳥が羽ばたく鳥ではないと仮定しています。あなたは自分の環境にフラッフィー鳥のコードを移植しようとしています。だから私はあなたの環境やコードを知らないにもかかわらず、私はまだ正しい軌道に乗るためにいくつかの潜在的な問題に答えるだけで十分だと思う。

まず、あなたが試した3つのモデルについて言及します。もちろん、適切な関数近似を選ぶことは、一般化された強化学習では非常に重要ですが、問題を解決する上で重要なことができるような多くのハイパーパラメータが存在します。例えば、ガンマ、学習率、探査と探査の減衰率、特定のケースではリプレイメモリの長さ、トレーニングのバッチサイズなどがあります。実際に変更すべきだと思う状態でQ値が変化しない場合、リード限られた探査がモデル1と2で行われていると私は信じています。コード例では、イプシロンは.1から始まり、おそらく1まで異なる値を試してみることもできます。また、探査速度の減衰率を混乱させる必要もあります。あなたのq値がエピソード全体に大きく跳ね上がっている場合は、学習率も見ていきます(コードサンプルではかなり小さく見えます)。同じことに、ガンマは非常に重要なことです。それが小さすぎると、学習者は近視眼となります。

また、400個の出力ノードがあると言います。あなたの環境には400のアクションがありますか?大規模なアクションスペースには、独自の課題があります。実際にあなたが400の行動を持っているかどうかを調べるための良い白紙ですhttps://arxiv.org/pdf/1512.07679.pdf。 400アクションがない場合は、ネットワーク構造に問題があります。選択するアクションの確率として出力ノードのそれぞれを扱う必要があります。たとえば、投稿したコード例では、2つのアクションがあり、reluを使用します。

深いq学習のパラメータを取得することは非常に困難です。特に、トレーニングの遅さを考慮する場合は特にそうです。

+0

あなたの答えは、1:400ノードに感謝します。私は隠されたノードを意味し、出力ノードには私は3つしかありません。 2:はいあなたは正しいです私は自分の環境のコードを移植しています。 3:私の環境を説明する。私は基本的に移動するターゲットとの衝突を避けるためにネットワークを訓練しようとしています、私は入力としてターゲットの位置を入力し、出力は3つの可能なアクションです –

+0

と私はあなたが正しいと思う、私はイプシロンのパラメータとガンマと私はいくつかの改善を参照してくださいしかし、私は期待した結果ではまだ –

+0

私はまた、学習率を含む他のパラメータも見ていきます。あなたの環境にターミナル状態がない場合は、0.1以上の最小探査速度を持つことを検討する必要があるかもしれません。 –

関連する問題