関数近似としてニューラルネットワークを使用したQ学習


11

ニューラルネットワークを使用したQラーニングに関する質問のように、QラーニングのQ値を概算するためにニューラルネットワークを使用しようとしています。最初の回答で提案したように、私は出力層に線形活性化関数を使用していますが、非表示層ではまだシグモイド活性化関数を使用しています(2、後で変更できます)。また、アドバイスどおり各アクション出力を返す単一のNNを使用しています。Q(a)

ただし、アルゴリズムは、単純なカートポールバランス問題についてはまだ分岐しています。だから、私のQアップデートが間違っているのを恐れています。初期化後、各ステップで行ったのは次のとおりです。

  • すべてのアクションのNNの順方向伝搬を使用してを計算します。Qt(st)
  • 新しいアクション選択し、新しい状態ます。atst
  • すべてのアクションに対してNNのフォワードプロパゲーションを使用してを計算します。Qt(st+1)
  • 目標Q値を次のように設定します: だけ現在のアクションのために、A_tと、設定しながらQ_ {T + 1}(S、A_tと)= Q_ {T}(S、A_tとの)他の状態のために。これは問題だと思います。Qt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)Qt(st,at)]atQt+1(s,at)=Qt(s,at)
  • エラーベクトルをe=QtargetQt=Qt+1Qt
  • 重み行列を更新するために、NNを介してエラーを逆伝播します。

誰かが私が間違ったことを私に指摘してくれませんか?

さらに、入力層と最初の非表示層(つまり、シグモイド関数)にもバイアス項を含める必要があると思いますか?違いはありますか?

よろしくお願いします。質問を明確にしたり、必要に応じてコードを共有したりできます。

回答:


9

あなたの目標は

rt+1+γmaxaQ(st+1,a)

エラー項(これは正しい)は、書き換えられることに注意してください。 rt+1+γmaxaQ(st+1,a)Qt

これは、更新式の括弧内の用語です。これは、学習中にNN学習率と他の逆伝搬項を乗算し、更新式と同じように以前の重みに追加されます。Q


先端をありがとう!そうすれば、ターゲット値の数値エラーを回避できます。あなたが言うように、を加算してから減算するのは無意味。Qt
Enrico Anderlini

しかし、私のNN + Q学習はまだ収束していません。したがって、方法が正しい場合は、学習率と、隠れ層のニューロン数を
いじってみます

1
はい、そうする必要があります(ReLU転送機能も使用してみてください)。ただし、Qラーニングには関数近似による収束の保証がないことに注意してください。次の試みがうまくいかない場合は、Advantage Learningを試してみてください。そして最後に、問題はデータがiidではないことです。したがって、エクスペリエンスリプレイを実装する必要があります。
rcpinto

私は質問に拡張があります。質問で述べたアルゴリズムを理解しましたが、と用語について混乱しています。ゲームの報酬がゲームの終わり(勝利または敗北の状態)でのみわかっている場合、中間のステップに報酬を提供するにはどうすればよいですか?Qt+1rt+1
Kanishka Ganguly 2016年

1
そうではありません、それはゼロです。ただし、Q値は将来の累積報酬の推定値であるため、Q値によって以前の状態にゆっくりと伝搬されます。
rcpinto
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.