122

SARSAがポリシーに準拠しているのに対し、Q ラーニングはポリシーに準拠していないことはわかっていますが、それらの式を見ると、これら 2 つのアルゴリズムの違いを理解するのは (私には) 困難です。

著書Reinforcement Learning: An Introduction (Sutton と Barto 著) によると。SARSA アルゴリズムでは、ポリシーが与えられると、対応するアクション値関数 Q (状態 s およびアクション a、タイムステップ t で)、つまり Q(s t , a t ) は次のように更新できます。

Q(s t , a t ) = Q(s t , a t ) + α*(r t + γ*Q(s t+1 , a t+1 ) - Q(s t , a t ))

一方、Q 学習アルゴリズムの更新手順は次のとおりです。

Q(s t , a t ) = Q(s t , a t ) + α*(r t + γ*max a Q(s t+1 , a) - Q(s t , a t ))

次のように書くこともできます

Q(s t , a t ) = (1 - α) * Q(s t , a t ) + α * (r t + γ*max a Q(s t+1 , a))

ここで、γ (ガンマ) は割引係数で、r tはタイムステップ t で環境から受け取った報酬です。

これら 2 つのアルゴリズムの違いは、Q ラーニングが次の最大ポリシー値を検索するのに対し、SARSA は次のポリシー値のみを検索するという事実ですか?

TLDR(および私自身の答え)

私が最初に質問して以来、この質問に答えてくれたすべての人に感謝します。Q-Learning で遊んでいるgithub リポジトリを作成し、経験的に違いを理解しました。それはすべて、次善のアクションをどのように選択するかにかかっています。これは、アルゴリズムの観点からは、実装方法に応じて、平均最大、または最良のアクションになる可能性があります。

もう 1 つの主な違いはこの選択がいつ行われるか (オンラインとオフラインなど) と、それが学習にどのように/なぜ影響するかです。2019 年にこれを読んでいて、より実践的な人であれば、RL のおもちゃの問題で遊ぶことが、おそらく違いを理解するための最良の方法です。

最後の重要な注意点として、Suton & Barto とウィキペディアの両方が、次の状態の最高/最大アクションと報酬に関して、混合、混乱、または間違った公式表現を頻繁に使用していることです。

r(t+1)

実際には

r(t)

これが、これで行き詰まった人に役立つことを願っています。

4

7 に答える 7

68

はい、これが唯一の違いです。オンポリシーの SARSA は、それが従うポリシーに関連してアクション値を学習しますが、オフポリシーの Q-Learning は貪欲なポリシーに関連して学習します。いくつかの一般的な条件下では、どちらも実数値関数に収束しますが、その割合は異なります。Q-Learning は収束がやや遅くなる傾向がありますが、ポリシーを変更しながら学習を継続する機能があります。また、線形近似と組み合わせた場合、Q-Learning は収束するとは限りません。

実際には、ε-貪欲なポリシーの下で、Q-Learning は Q(s,a) と最大アクション値の差を計算し、SARSA は Q(s,a) と平均アクションの加重和との差を計算します。値と最大値:

Q学習: Q(s t+1 ,a t+1 ) = max a Q(s t+1 ,a)

SARSA: Q(s t+1 ,a t+1 ) = ε・平均a Q(s t+1 ,a) + (1-ε)・max a Q(s t+1 ,a)

于 2011-07-28T00:39:51.623 に答える
5

Q-Learning の数式にインデックスの誤りがあります。サットンとバルトの 148 ページ。

Q(st,at) <-- Q(st,at) + アルファ * [r(t+1) + ガンマ * 最大 Q(st+1,a) - Q(st,at) ]

タイプミスは max の引数にあります:

インデックスは st+1 と a ですが、質問では st+1 と at+1 です (これらは SARSA では正しいです)。

これが少し役立つことを願っています。

于 2013-10-22T11:03:35.763 に答える
1

Qラーニングでは

これがあなたの Q-Learning: Q(St,At) = Q(St,At) + a [ R(t+1) + 割引 * 最大 Q(St+1, At ) - Q(St,At) ]

Q-Learning に変更する必要があります: Q(St,At) = Q(St,At) + a [ R(t+1) + 割引 * 最大 Q(St+1, a ) - Q(St,At) ]

あなたが言ったように、更新式の最大 Q 値を見つける必要があります。aを変更すると、新しい Q(St,At) が得られます。注意してください、最大の Q 値を与えるaは次のアクションではありません。この段階では、次の状態 (St+1) しかわかりません。次のラウンドに進む前に、St を St+1 で更新します (St <-- St+1)。

ループごとに。

  • Q 値を使用して St から At を選択します

  • At をとり、Rt+1 と St+1 を観測する

  • 式を使用して Q 値を更新します。

  • St <-- St+1

Stが終点になるまで

于 2014-03-11T17:43:03.877 に答える