問題タブ [temporal-difference]
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.
reinforcement-learning - 強化学習における損失関数 (MSVE) の実装
オセロの時間差分学習エージェントを構築しようとしています。私の実装の残りの部分は意図したとおりに動作しているように見えますが、ネットワークのトレーニングに使用される損失関数について疑問に思っています。サットンの著書「強化学習: 入門」では、平均二乗値誤差 (MSVE は標準損失関数として示されています。これは基本的に、平均二乗誤差にポリシー分布を掛けたものです。(すべての状態の合計 s ( onPolicyDistribution(s ) * [V(s) - V'(s,w)]² ) )
私の質問は次のとおりです。ポリシーが学習値関数の e-greedy 関数である場合、ポリシーの配布でこれを取得するにはどうすればよいですか? 代わりに MSELoss を使用する場合、それは必要ですか?
私はこれらすべてをpytorchで実装しているので、簡単に実装できるボーナスポイントです:)
machine-learning - TD(0) と TD(λ) の更新用途の違いを理解するのに行き詰まった
この投稿から時間差学習を勉強しています。ここで、TD(0) の更新規則は明らかですが、TD(λ) では、以前のすべての状態の効用値が 1 回の更新でどのように更新されるかがわかりません。
ボットの更新を比較するための図を次に示します。
上図は次のように説明されています。
TD(λ) では、適格性トレースのおかげで、結果が以前のすべての状態に伝播されます。
私の質問は、資格トレースで次の更新ルールを使用している場合でも、1 回の更新で以前のすべての状態に情報がどのように伝達されるかです。
ここでの単一の更新では、単一の状態のユーティリティのみを更新しUt(s)
ていますが、以前のすべての状態のユーティリティはどのように更新されているのでしょうか?
編集
回答によると、この更新がすべてのステップに適用されることは明らかであり、それが情報が伝播される理由です。これが事実である場合、更新ルール間の唯一の違いは資格トレースであるため、再び混乱します。
そのため、以前の状態で適格性トレースの値がゼロでない場合でも、上記の場合、デルタの値はゼロになります (最初は報酬と効用関数が 0 に初期化されるため)。では、以前の状態が最初の更新でゼロ以外の効用値を得ることができるのはどうしてでしょうか?
また、指定された python 実装では、1 回の反復後に次の出力が得られます。
ここでは、図に示すように、以前の 5 つの状態すべてではなく、2 つの値のみが更新されます。ここで何が欠けていますか?