YutaroOgawa / Deep-Reinforcement-Learning-Book

書籍「つくりながら学ぶ!深層強化学習」のサポートリポジトリです
MIT License
343 stars 157 forks source link

7_breakout_learning.ipynbでエラー #13

Open Ishihara-Masabumi opened 3 years ago

Ishihara-Masabumi commented 3 years ago

「7_breakout_learning.ipynb」の実行中に次のエラーが発生しました。 なんとなくmultiprocessingに関するエラーかなと思っています。

ちなみにライブラリのバージョンは次のとおりです。 gym==0.17.1 matplotlib==2.2.5 JSAnimation==0.1 pyglet==1.5.0 torch==0.4.1

---------------------------------------------------------------------------
ConnectionResetError                      Traceback (most recent call last)
<ipython-input-15-ed82eff94473> in <module>()
      1 # 実行
      2 breakout_env = Environment()
----> 3 breakout_env.run()

4 frames
/usr/lib/python3.7/multiprocessing/connection.py in _recv(self, size, read)
    377         remaining = size
    378         while remaining > 0:
--> 379             chunk = read(handle, remaining)
    380             n = len(chunk)
    381             if n == 0:

ConnectionResetError: [Errno 104] Connection reset by peer
YutaroOgawa commented 3 years ago

@Ishihara-Masabumi さま

情報提供ならびにバグレポートを丁寧にありがとうございます。 ライブラリのバージョンを本書が出版されたころのものに落としていただけているので、 Pythonのバージョンが気になりました。

3.6ではなく、3.8以上である可能性などはございますでしょうか?

こうした技術書の宿命ではありますが、そろそろ本書も古くなりすぎ、限界感を感じます。

読者のみなさまにはご苦労をおかけして申し訳ございません。

Ishihara-Masabumi commented 3 years ago

Yutaro Ogawa様

いつもお世話になっております。石原です。

さて、ご質問にお答えします。 pythonのバージョンは3.7のようです。

ちょっと微妙なところですね。 ところで、pythonのバージョンが3.6だとうまくいきますか?

よろしくお願いします。

2021年10月21日(木) 15:23 Yutaro Ogawa @.***>:

@Ishihara-Masabumi https://github.com/Ishihara-Masabumi さま

情報提供ならびにバグレポートを丁寧にありがとうございます。 ライブラリのバージョンを本書が出版されたころのものに落としていただけているので、 Pythonのバージョンが気になりました。

3.6ではなく、3.8以上である可能性などはございますでしょうか?

こうした技術書の宿命ではありますが、そろそろ本書も古くなりすぎ、限界感を感じます。

読者のみなさまにはご苦労をおかけして申し訳ございません。

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/YutaroOgawa/Deep-Reinforcement-Learning-Book/issues/13#issuecomment-948295703, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFRY5ESR267M6ZDWU4ZEPF3UH6WXLANCNFSM5GNGY54Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

YutaroOgawa commented 3 years ago

@Ishihara-Masabumi さま

バージョン情報ありがとうございます。 3.6(Ubuntu18の標準)を境に、その上との互換性は、ときおり崩れることがライブラリによっては発生するのを、 私はよく体験します。。。

大変申し訳ございません、すぐに3.6で確認するためのまとまった時間をとることができず (最近は隙間時間しかなく、、、大変申し訳ございません)

他の読者の皆様は、本該当部分、いかがでしょうか?

Ishihara-Masabumi commented 3 years ago

Yutaro Ogawa様

いえいえとんでもありません。 古いプログラムのメンテナンス、ご苦労を察します。

さて、ついでに質問したいことがありまして、ご連絡致しました。 普通のActor-Criticの目的関数(期待収益の最大化)に,方策のエントロピー最大化項を加えたものにSoft Actor-Critic(SAC)があるようです。 貴殿のプログラムでは、P176に方策のエントロピー項を追加されています。 ということは、 Actor-Criticではなく Soft Actor-Critic(SAC)であるという認識でよろしいでしょうか。

深層強化学習初心者のため、よろしくお願いします。

2021年10月21日(木) 15:47 Yutaro Ogawa @.***>:

@Ishihara-Masabumi https://github.com/Ishihara-Masabumi さま

バージョン情報ありがとうございます。 3.6(Ubuntu18の標準)を境に、その上との互換性は、ときおり崩れることがライブラリによっては発生するのを、 私はよく体験します。。。

大変申し訳ございません、すぐに3.6で確認するためのまとまった時間をとることができず (最近は隙間時間しかなく、、、大変申し訳ございません)

他の読者の皆様は、本該当部分、いかがでしょうか?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/YutaroOgawa/Deep-Reinforcement-Learning-Book/issues/13#issuecomment-948307494, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFRY5EQZWPCEMQLSHILZKS3UH6ZQZANCNFSM5GNGY54Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

YutaroOgawa commented 3 years ago

@Ishihara-Masabumi さま

寛容なお言葉ありがとうございます。

上記ご質問は、A3CやA2C(そして、その他の深層強化学習アルゴリズム)の方策ネットワークの更新式に入っているエントロピー項と、

SAC(Soft Actor-Critic:Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor) のエントロピー項は、狙いと機能にどのような違いがあるのですか?

という質問と理解しました。


非常に重要かつ、面白い視点の質問をありがとうございます。

A3C論文 https://arxiv.org/pdf/1602.01783.pdf

では、

The gradient of the full objective function including the entropy regularization term with respect to the policy parameters takes the form <数式>, where H is the entropy. The hyperparameter β controls the strength of the entropy regularization term.

という文が、4. Asynchronous RL Framework の章の最後に掲載されています。

要は、A3CやA2Cのエントロピー項は、方策ネットワークπが急速に局所解に収束するのを防ぐための、ただの正則化項です。

一方で、SAC論文 https://arxiv.org/pdf/1801.01290.pdf

では、式1のようにそもそも最大化したい目的関数にエントロピー項Hが入っています。

そのため式(3)のように価値関数V側にもエントロピー項が入り、エントロピー項も含めて価値を計算します。

よって、式(5)のように価値関数をsoft value functionと呼び、価値関数の更新にもエントロピー項が入ってきます。

要は、SACではエントロピー項は強化学習で最大化したい報酬計算の一部であり、アルゴリズム全体に影響しています。

その結果、SACはA2Cに比べて、特定の状態に対して選択する行動のエントロピーが最大のまま、 要は、どの行動をとっても問題ない状態sに対して、ムリにどの行動をせよとは決めず、何でも良いよとしておき、 それでも大きな報酬を得られるようにするので、様々な状態に対してよりロバストであり、計算の収束も早くなります。

両者にはこうした違いがあると、私は認識しております。

どうぞよろしくお願い致します。

Ishihara-Masabumi commented 3 years ago

Yutaro Ogawa様

とても分かり易いご説明、誠にありがとうございます。 ただし、Actor-Critic(A2C)後の技術については、まだキャッチアップできていない状況です。 理解するにはまだ時間がかかるかと思います。

さてそこで、これから深層強化学習をさらに学びたいという人に対して、 「つくりながら学ぶ! 深層強化学習」の次に参考にすべき教科書がありましたら、教えて頂けないでしょうか。

深層強化学習初学者のため、よろしくお願いします。

2021年10月23日(土) 8:58 Yutaro Ogawa @.***>:

@Ishihara-Masabumi https://github.com/Ishihara-Masabumi さま

寛容なお言葉ありがとうございます。

上記ご質問は、A3CやA2C(そして、その他の深層強化学習アルゴリズム)の方策ネットワークの更新式に入っているエントロピー項と、

SAC(Soft Actor-Critic:Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor) のエントロピー項は、狙いと機能にどのような違いがあるのですか?

という質問と理解しました。

非常に重要かつ、面白い視点の質問をありがとうございます。

A3C論文 https://arxiv.org/pdf/1602.01783.pdf

では、

The gradient of the full objective function including the entropy regularization term with respect to the policy parameters takes the form <数式>, where H is the entropy. The hyperparameter β controls the strength of the entropy regularization term.

という文が、4. Asynchronous RL Framework の章の最後に掲載されています。

要は、A3CやA2Cのエントロピー項は、方策ネットワークπが急速に局所解に収束するのを防ぐための、ただの正則化項です。

一方で、SAC論文 https://arxiv.org/pdf/1801.01290.pdf

では、式1のようにそもそも最大化したい目的関数にエントロピー項Hが入っています。

そのため式(3)のように価値関数V側にもエントロピー項が入り、エントロピー項も含めて価値を計算します。

よって、式(5)のように価値関数をsoft value functionと呼び、価値関数の更新にもエントロピー項が入ってきます。

要は、SACではエントロピー項は強化学習で最大化したい報酬計算の一部であり、アルゴリズム全体に影響しています。

その結果、SACはA2Cに比べて、特定の状態に対して選択する行動のエントロピーが最大のまま、 要は、どの行動をとっても問題ない状態sに対して、ムリにどの行動をせよとは決めず、何でも良いよとしておき、 それでも大きな報酬を得られるようにするので、様々な状態に対してよりロバストであり、計算の収束も早くなります。

両者にはこうした違いがあると、私は認識しております。

どうぞよろしくお願い致します。

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/YutaroOgawa/Deep-Reinforcement-Learning-Book/issues/13#issuecomment-950019331, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFRY5EQQQF4Z7YKDEPKUMK3UIH3ARANCNFSM5GNGY54Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

YutaroOgawa commented 3 years ago

@Ishihara-Masabumi さま

ありがとうございます。次の書籍などを考えるうえで重要ポイントは

[1] A2C以降のアルゴリズムで重要なものはSACが一番に挙げられます。 また本書で扱っていないPPOも重要になります。

モデルフリーの強化学習はその2つのアルゴリズムが学べることが重要です

[2] 強化学習の別分野となる、マルチエージェント、逆強化学習、模倣学習も重要です

[3] モデルベーストな強化学習として、World modelの強化学習(オートエンコーダー+強化学習的な)も重要です。

[1] についての書籍としては、

Deep Reinforcement Learning Hands-OnDeep Reinforcement Learning with Python: Master classic RL, deep RL, distributional RL, inverse RL, and more with OpenAI Gym and TensorFlow

[2] の内容を日本語で扱っている書籍としては、

機械学習スタートアップシリーズ Pythonで学ぶ強化学習 [改訂第2版] 入門から実践まで

[3] の書籍としては、

生成 Deep Learning ―絵を描き、物語や音楽を作り、ゲームをプレイする

が挙げられます。

いずれにせよ、A3C以降の強化学習は研究段階に入ってまだ数年の分野で、書籍に頼るのは難しく、原著論文やGitHubでのコードが重要にはなってきます。

また、国際学会の深層強化学習の論文なども重要ですNeurIPS2021 Deep Reinforcement Learning https://nips.cc/Conferences/2021/ScheduleMultitrack?event=21848

A2Cまで本書で取り組んでいただければ、さらに広範に勉強するのも良いですが、 特定のやりたいことにフォーカスして、関連Webサイトや論文、書籍を使用するのが良いのではと思います。

どうぞよろしくお願い致します