Open ghost opened 2 years ago
code2-6 遷移先の価値の計算について、
https://github.com/icoxfog417/baby-steps-of-rl-ja/blob/1dadc208d6e9f50e010e6b5d2dcc5d9fc11eb51d/DP/planner.py#L59
上記箇所において、V を更新してしまうと、同じ iteration 内の後続の V(s) の計算に影響がでてしまうと思います。 (V_{i+1}(s_k) の算出に、すでに計算済の sj の価値 V{i+1}(s_j) が反映される場合がある)
P.44 の式の通りの計算をするならば、 next_V[s] = max_reward として、iteration の最後で V を更新(V=next_V) のようにするなど、同一 iteration 内で V を更新しないようにすべきだと思いました。
next_V[s] = max_reward
V=next_V
ページ番号: p45
pip freeze
(例外のメッセージ、ログ、画面ショットなどを添付)
@tanakanotarou2 さん、ご指摘ありがとうございます。V[s]を修正しているとV[next_state]の値が更新途中で変更されてしまうということですね。ご指摘の通り、更新後のVを別途変数として作成しておき最後に入れ替えるのが適切ですね。
V[s]
V[next_state]
V
ご確認いただきありがとうございました。認識が合っていたようで安心しました。
指摘事項
code2-6 遷移先の価値の計算について、
https://github.com/icoxfog417/baby-steps-of-rl-ja/blob/1dadc208d6e9f50e010e6b5d2dcc5d9fc11eb51d/DP/planner.py#L59
上記箇所において、V を更新してしまうと、同じ iteration 内の後続の V(s) の計算に影響がでてしまうと思います。 (V_{i+1}(s_k) の算出に、すでに計算済の sj の価値 V{i+1}(s_j) が反映される場合がある)
P.44 の式の通りの計算をするならば、
next_V[s] = max_reward
として、iteration の最後で V を更新(V=next_V
) のようにするなど、同一 iteration 内で V を更新しないようにすべきだと思いました。指摘箇所
ページ番号: p45
実行環境
pip freeze
の実行結果 (下に添付)エラー内容
(例外のメッセージ、ログ、画面ショットなどを添付)