ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

ゼロから作るDeep Learning④

ゼロから作るDeep Learning④が良かったので紹介します。

www.oreilly.co.jp

本の紹介文に「読者はコードを通してハッとする気づきを数多く得られるでしょう。」とある通り、Pythonのコードを見ながらなるほどと思うところが沢山ありました。

内容

①~③はほぼDeep Learningでしたが、今回のテーマは強化学習です。全体としてはDeep Learningの部分は少なく、③で作ったDeZeroもさらっと使いこなす感じです。DQNから始まるDeep Learning系列の強化学習の解説に期待すると、なかなか最後まで読み切れないかもしれません。

この本の良いところはDQNに行くまでの従来の強化学習について、分かりやすいコード付きで解説されていることです。特に6章は素晴らしく、僕にとっては6章だけでもこの本を読んで良かったと思っています。

強化学習について書かれた本は数式がいっぱいでてきて良く分からない本か、Python使ってOpenAI Gymを動かしてみましょう的な本が多く、DQNに至るまでの所をPythonでやさしく説明している本はこの本が初めてだと思います。

6章までの内容

1章でバンディット問題を題材に強化学習の用語の整理をします。マルコフ過程、ベルマン方程式と理解を深めたていきます。その後Pythonで3x4のグリッドを使った環境を用意します。

ちょっと雰囲気だけ紹介。この盤面で左上から右に行くための方策を計算しています。

4章の動的計画法、5章のモンテカルロ法、6章のTD法と環境側は全く変えずに、いろいろなAgentを作りながら違いを見ていきます。強化学習の学習の肝は、何をどのタイミングで更新するかです。各手法の構成が同じソースコードを比較することで、各手法の更新のタイミングや、それに使う変数が比べられて、本文の説明と合わせると理解がしやすくなっています。ここにハッとする気づきがいっぱいありました。

7章以降

7章からはDeep Learningに入って、DQNから、Double DQN、REINFORCE、Actor-Critic等、最近の強化学習がどのように進化したのかがソースコード付きで分かる構成になっています。経験再生は知識として知っていましたが、実際にコードを見てみるとちょっと間違って理解していたところもあり、やっぱり動くコードで理解しないと駄目だなと感じました。

こんな人にお勧め

  • Deep Learning以前の強化学習もちゃんと動かして理解したい人
  • 強化学習の論文をちゃんと読めるようになりたい人
  • 自分で強化学習の環境を作りたい人

数式と解説とソースコードがバランス良く出てくるので、上の条件に当てはまる人にお勧めします。