icoxfog417 / baby-steps-of-rl-ja

Pythonで学ぶ強化学習 -入門から実践まで- サンプルコード
Apache License 2.0
429 stars 260 forks source link

code2-6 遷移先の価値の計算について #72

Open ghost opened 2 years ago

ghost commented 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 を更新しないようにすべきだと思いました。

指摘箇所

ページ番号: p45

実行環境

エラー内容

(例外のメッセージ、ログ、画面ショットなどを添付)

icoxfog417 commented 2 years ago

@tanakanotarou2 さん、ご指摘ありがとうございます。V[s]を修正しているとV[next_state]の値が更新途中で変更されてしまうということですね。ご指摘の通り、更新後のVを別途変数として作成しておき最後に入れ替えるのが適切ですね。

ghost commented 2 years ago

ご確認いただきありがとうございました。認識が合っていたようで安心しました。