問題タブ [sarsa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
56467 参照

artificial-intelligence - QラーニングとSARSAの違いは何ですか?

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)

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

0 投票する
1 に答える
3434 参照

machine-learning - SARSA-Lambda 実装でのエピソード間の適格性トレースの再初期化

私はこの SARSA-Lambda 実装 (つまり、適格性トレースを含む SARSA) を見ていますが、まだ取得していない詳細があります。

ここに画像の説明を入力

(画像はhttp://webdocs.cs.ualberta.ca/~sutton/book/ebook/node77.htmlから)

したがって、エージェントが特定の時間ステップで選択したものだけではなく、すべての Q(s,a) が更新されることを理解しています。また、各エピソードの開始時に E マトリックスがリセットされないことも理解しています。

図 7.12 のパネル 3 がエピソード 1 の最終状態であったとしましょう。

エピソード 2 の開始時に、エージェントは東ではなく北に移動し、これが -500 の報酬を与えると仮定しましょう。これは、前のエピソードで訪れたすべての州にも影響しませんか?

現在のエピソードで訪れた状態に報酬を与えることが目的である場合、各エピソードの開始時にすべての e(s,a) 値を含む行列がリセットされないのはなぜですか? この実装では、前のエピソードで訪れた状態が、この新しいエピソードでエージェントによって行われたアクションに対して「罰せられる」または「報われる」ように見えます。

0 投票する
1 に答える
1216 参照

machine-learning - 勾配離散を使用した SARSA の実装

テーブル ルックアップを使用して、SARSA アルゴリズム (ワンステップと適格性トレースの両方を使用) を正常に実装しました。本質的に、各行が状態に対応し、各列がアクションに対応する q 値マトリックスがあります。

何かのようなもの:

各時間ステップで、行列から行が選択され、ポリシーに応じてアクションが選択され、SARSA ルールに従って更新されます。

現在、勾配降下法を使用してニューラル ネットワークとして実装しようとしています。

私の最初の仮説は、2 層ネットワークを作成することでした。入力層には状態と同じ数の入力ニューロンがあり、出力層にはアクションと同じ数の出力ニューロンがあります。各入力は各出力に完全に接続されます。(したがって、実際には、上記のマトリックスのようになります)

私の入力ベクトルは 1xn 行ベクトルで、n は入力ニューロンの数です。現在の状態に対応するインデックスが 1 になることを除いて、入力ベクトルのすべての値は 0 になります。

状態 4 のエージェントの入力ベクトルになります。

したがって、プロセスは次のようになります。

ランダムなサンプルの重み行列を作成した場所。

結果は次のようになります。

つまり、貪欲なポリシーが選択された場合、アクション 1 が選択され、4 番目の入力ニューロンと最初の出力ニューロンの間の接続が次のように強化されます。

(SARSA アルゴリズムから取得した式)

ただし、この実装は私を納得させません。私が読んだことによると、ネットワークの重みを使用して状態とアクションのペアの Q 値を計算する必要がありますが、そのような値を表す必要があるかどうかはわかりません。(特に、重みの値が 0 から 1 の間にしか含まれていないことがよくあるためです。)

何かアドバイス?

0 投票する
0 に答える
815 参照

algorithm - SARSA での適格性トレースの実装

私は SARSA アルゴリズムの MATLAB 実装を作成しており、1 ステップの実装を作成することに成功しました。

現在、適格性トレースを使用するように拡張しようとしていますが、得られる結果はワンステップよりも悪いものです。(つまり、アルゴリズムはより遅い速度で収束し、エージェントがたどる最終パスはより長くなります。)

基本的に、q 値は nXm 重み行列に格納されます。ここで、n = アクションの数、m = 状態の数です。適格性トレース値は、e_trace マトリックスに保管されます。ワンステップと ET のどちらを使用するかによって、dw の 2 つの定義のいずれかを使用します。どこが間違っているのかわかりません。アルゴリズムは、次のように実装されています: http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node77.html

ネットワーク内のすべての重みの重みの変化 (つまり、すべての Q(s,a) ペアの値の変化) を定義し、学習率によって調整されたネットワークに供給されます。

最初は重みと e 値が 0 に設定されていることを付け加えておきます。

何かアドバイス?

0 投票する
1 に答える
851 参照

deep-learning - qlearning と組み合わせたディープ ニューラル ネットワーク

状態空間として Kinect カメラからのジョイント位置を使用していますが、SARSA または Qlearning にフィードするには大きすぎる (1 秒あたり 25 ジョイント x 30) と思います。

現在、教師あり学習を使用してユーザーの動きを特定のジェスチャーに関連付ける Kinect Gesture Builder プログラムを使用しています。しかし、それには監視されたトレーニングが必要であり、私はそこから離れたい. アルゴリズムは、私が自分でデータを分類するときに、関節間の特定の関連性を検出する可能性があると考えています (たとえば、手を挙げて、左に一歩、右に一歩)。

そのデータをディープ ニューラル ネットワークにフィードし、それを強化学習アルゴリズムに渡すと、より良い結果が得られると思います。

最近、これに関する論文がありました。https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf

Accord.net にはディープ ニューラル ネットワークと RL の両方があることは知っていますが、それらを組み合わせた人はいますか? 洞察はありますか?

0 投票する
1 に答える
1059 参照

python - Sarsa アルゴリズム、Q 値がゼロになる傾向があるのはなぜですか?

OpenAI ジムから Frozen Lake 環境を解決するための Sarsa アルゴリズムを実装しようとしています。私はすぐにこれに取り組み始めましたが、私はそれを理解していると思います.

また、Sarsa アルゴリズムがどのように機能するかを理解しています。疑似コードを見つけるサイトはたくさんあります。すべての手順に従って問題にこのアルゴリズムを実装しましたが、すべてのエピソードの後に​​最終的な Q 関数を確認すると、すべての値がゼロになる傾向があり、その理由がわかりません。

これが私のコードです。誰かがなぜそれが起こるのか教えてくれることを願っています。