icoxfog417 / baby-steps-of-rl-ja

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

p34 式の誤植 #4

Closed takushi-m closed 5 years ago

takushi-m commented 5 years ago

指摘事項

p34下から二つ目の式では、「価値」が最大になる行動を選択した結果得られる価値をV(s)としていると思うのですが、その場合右辺のVにはπは必要でしょうか?

指摘箇所

ページ番号: p34

実行環境

エラー内容

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

icoxfog417 commented 5 years ago

これは誤植ではなく、意図的なものです。このような表記をした理由について説明します。

文献では、V(s)が表記される文脈が大きく分けて2パターンあります。1つ目はBellman Equationを説明する文脈、2つ目はValue Iterationのアルゴリズムを説明する文脈です。前者では「「価値」が最大になる行動を常に選択するケース」をπ*として、V∗(s)で表記されることが多いです。

(なお、「「価値」が最大になる行動を常に選択するケース」(方針)をPrinciple of Optimality、この前提に基づいた式をBellman optimality equationなどと呼びます。

後者の文脈では、単にV(s)で表記されることが多いです。

参考文献中の式は、表記の違いが多少ありますが意味的には掲載した式と同じです(Reinforcement Learning: An Introduction 2ndは、遷移関数と報酬関数をまとめたようなちょっと特殊な形をしていますが)。

さて、本書の式はBellman Equationを説明する文脈なので、V∗(s)とするのがセオリーです。ただDay3以後のモデルフリーの式定義では*が省略されることが多いです(Reinforcement Learning: An Introduction 2ndの6.5 Q-learning: O↵-policy TD Controlなど)。書籍全体の一貫性を考えた場合、戦略に基づく場合(Policyベース)の場合πを明示、戦略に基づかない場合πをつけない(=最初から*は省略)、というルールにした方がわかりやすい、と判断しとっています。

ただ、「価値」が最大になる行動を常に選択する=Optimalを示す記号として*は良く用いられるため、コラム的にどこかで説明を入れても良かったかなとは思います。

takushi-m commented 5 years ago

丁寧にご説明いただきありがとうございます。πをつける/つけないのルール、経緯について理解できました。

一方で、うまく疑問を伝えられていないと感じたので説明させてください。 Valueベースの場合でも価値の定義は再帰的である必要がある為、左右で同じVが入る必要があるのではないかと思いました。つまり image とはならないでしょうか?

icoxfog417 commented 5 years ago

おっと、すみません。これはご指摘の通りです。手元の原稿ではご指摘の式の通りになっていたのですが、組版時にミスがあったようです(元原稿を見て回答していました・・・すみません)。

書籍では以下のようになっていますが、

実際はご指摘の通り+上で述べた通り、下式となります(πはありません)。

takushi-m commented 5 years ago

ご確認ありがとうございました。 issueはこのままにしておけば良いでしょうか?

icoxfog417 commented 5 years ago

このままでOKです!次版で修正されたらCloseします(次版が出せれば)。