DQN損失は、ベルマン方程式からどのように導き出されますか(または理論的に動機付けられますか)、Q学習の更新とどのように関連していますか?
私は強化学習に関するプロジェクトを行っています。DDQNを使用するエージェントをプログラムしました。それについてはたくさんのチュートリアルがあるので、コードの実装はそれほど難しくありませんでした。
しかし、ベルマン方程式から始めて、この種のアルゴリズムをどのように考え出すかを理解するのに問題があり、この推論の導出/パスに対処するためのわかりやすい説明が見つかりません。
だから、私の質問は次のとおりです。
- ベルマン方程式から導き出された(または理論的に動機付けられた)DQNを訓練するための損失はどのようになっていますか?
- 通常のQラーニングアップデートとどのように関連していますか?
私の現在のメモによると、ベルマン方程式は次のようになります
$$Q_{\pi} (s,a) = \sum_{s'} P_{ss'}^a (r_{s,a} + \gamma \sum_{a'} \pi(a'|s') Q_{\pi} (s',a')) \label{1}\tag{1} $$
これは、私の理解では、次のような再帰的な表現です。状態とアクションのペアは、考えられるすべての状態の合計に等しい報酬を提供します。 $s'$ 行動を起こした後にこの状態に達する確率で $a$ (として示される $P_{ss'}^a$、これは、環境がエージェントに作用することを意味します)エージェントがアクションを実行することから得た報酬を掛けます $a$ 状態で $s$ +さまざまな可能なアクションの確率の割引合計 $a'$ 状態の報酬の倍、アクションペア $s',a'$。
Q学習の反復(中間ステップ)は、多くの場合、次のように表されます。
$$Q^{new}(s,a) \leftarrow Q(s,a) + \alpha (r + \gamma \max_a Q(s',a') - Q(s,a)) \label{2}\tag{2}$$
つまり、新しい状態のアクション報酬は、古いQ値+学習率であり、 $\alpha$、時間差を掛けたもの、 $(r + \gamma \max_a Q(s',a') - Q(s,a))$、これは、エージェントが受け取った実際の報酬+割引係数にこの新しい状態とアクションのペアのQ関数を掛けたものから古いQ関数を引いたもので構成されます。
この回答が示すように、ベルマン方程式は、その更新ルールを使用するアルゴリズムが収束するため、更新ルールに変換できます。
(D)DQNの場合、 $Q(s,a)$ アクションにつながる私たちのNNによって推定されます $a$ そして私たちは受け取ります $r$ そして $s'$。
次に、フィードします $s$ 及び $s'$NNに(ダブルDQNを使用して、それらを異なるNNにフィードします)。ザ・$\max_a Q(s',a')$ターゲットネットワークの出力に対して実行されます。次に、このq値に次の値を掛けます。$\gamma$ そして $r$製品に追加されます。次に、この合計が他のNNのq値を置き換えます。この基本的なNNが出力されたので$Q(s,a)$ しかし、出力する必要があります $r + \gamma \max_a Q(s',a')$ 基本的なNNをトレーニングして重みを変更し、この時間的なターゲットの差により近く出力されるようにします。
回答
RLのベルマン方程式は通常定義されます $$v_\pi(s) = \sum_a \pi(a|s) \sum_{s', r} p(s', r|s, a)\left[r + v_\pi(s')\right] = \mathbb{E}_{s' \sim p, a \sim \pi}\left[r(s, a) + v_\pi(s')\right] \; .$$あなたの書き方は正しいですが、私はこれを指摘したいと思いました。とにかく、あなたの直感は、あなたの現在の状態の値が次のように再帰的な関係を表現するという点で正しいです$s$ この状態から期待される報酬と、移行する状態の期待値の合計に等しくなります。
実際、DeepQ-LearningでQ-learningの更新を実装します。DQNで最小化する損失関数は次のとおりです。$$ L(\theta) = \mathbb{E}_{(s,a,r,s')\sim U(D)}\left[\left( r + \gamma \max_{a'}Q(s', a'; \theta^-) - Q(s, a; \theta)\right)^2 \right]\;$$ どこ $U(D)$ リプレイバッファからランダムに均一に示す $D$ そして $\theta$ はネットワークパラメータ(ネットワークはQ関数をパラメータ化する)であり、 $\theta^-$ 毎回更新されるパラメータの前の反復です $c$ ネットワークの収束に役立つエピソード。
ご覧のとおり、損失関数は式2の「ベルマンエラー」エラーを最小化しています。これがなぜであるかを考えてみましょう。
あなたが提供するTDアップデートはQ値を徐々にシフトしています $(s, a)$ に向かって $r + \max_a Q(s', a)$ -これは、最終的に最適なQ関数に収束するため、結局のところ必要なものです。
次に、DeepQ学習のケースについて考えてみましょう。ネットワークを概算したい$Q(s, a)$ したがって、MSE損失を使用してネットワークをトレーニングすると、 $r + \max_a Q(s', a)$ 私たちのターゲットとして、私たちのネットワークは徐々に予測に向かってシフトします $r + \max_aQ(s', a)$ (これも、状態とアクションのペアに最適なQ値を提供します)、TDの更新と同じです。
これは、ニューラルネットワークのトレーニングがどのように機能するかを知っていることを前提としているため、そうでない場合は、これを説明する関連する質問をする/検索することをお勧めします。