くろたんく雑記帳

日常とか、わんちゃんとか、機械学習とか、競プロとか、

MENU

【書評】ITエンジニアのための強化学習理論入門

中井さんのITエンジニアのための強化学習理論入門を読んだので、感想。中井さんの書籍は数式や文章のストーリー展開がわかりやすくて、その期待も込みで購入。教育用の書籍になると思うので。


本書の概要

第1章

強化学習の考え方についてはじまり、バンディットアルゴリズムの内容である。いつも中井さんの本を見ているとわかりやすいなぁと思うが、定常状態の平均の求め方から、非定常状態の学習率への流れは秀逸だなと思った。

定常状態において、真の平均値{\displaystyle \mu}を点数の平均の計算で推定するので以下の様になる(メモリー対策のために直前の平均を戻して、新しいデータを足すということを行なっている。)

{\displaystyle \bar{r}_n = \frac{1}{n}\lbrace(n-1)\bar{r}_{n-1}+ r_n\rbrace}

これを以下の様に変形する。

{\displaystyle \bar{r}_n = \bar{r}_{n-1} + \frac{1}{n}(r_n - \bar{r}_{n-1})}

ここで、この後に非定常状態について真の平均値{\displaystyle \mu}が変化することを考えると、 上の計算のままでは直近のデータの影響が小さくなる (定常状態の平均値としては正しい)ので {\displaystyle \mu}が変化する様な非定常状態では、その{\displaystyle \mu}の変化を追従する必要があるので以下の様に考える。

{\displaystyle \bar{q}_n = {q}_{n-1} + \alpha(r_n - q_{n-1})}

この様にすると、{\displaystyle \alpha}は新しいデータをどれだけ重み付けるかということになる。 {\displaystyle \alpha = 1}の時、新しいデータを{\displaystyle \mu}の推定値と考える、{\displaystyle \alpha = 0}の時は新しいデータを取り込まず、初期値のままということになる。ここは非常にわかりやすく展開されていた。(書籍はもっと丁寧に書かれている。)

第2章

マルコフ決定過程の説明と具体的な定義をわかりやすく説明されている。条件付き確率で示されたものだけではなく遷移確率を表で示しているので非常にわかりやすい。環境モデルはこれだっていう言い切りではっきりと理解できる。
さらに、バックアップ図を用いて、状態価値関数を示してしていて、一つ先の状態の状態価値関数がわかればその前の状態の状態価値関数がわかるという説明がわかりやすかった。加えて、1次元と2次元のmapを使って動的計画法による状態価値関数の値を描画されており、結構計算過程でイメージをつかむのが大変なこととして、どういう順番でどの様に計算されているのかがよくわかる様になっている。(小数点は第3位くらいまでは表示した方がいいと思うけど)

第3章

「総報酬を最大化する行動ポリシーを発見する」アルゴリズムとしてポリシー反復法・その発展系として価値反復法を紹介しておりその違いがしっかり図解されていてよく理解できた。さらに、よくある例である三目並べのようなゲームっぽいものだけでなくビジネス的な最適化問題として「レンタカー問題」という例題があり、面白かった。

第4章

これまで状態遷移を表す条件付き確率{\displaystyle P(r, s' \mid s, a)}を事前に定義できるものを扱ってきたが、第4章では、現実ではこれらは事前にわからないこともあり、その時にはシミュレーションによりサンプリングを行う。そのサンプリングデータを用いた学習法として、モンテカルロ法とTD法の違いを明確にして説明されており理解が深まった。さらにオンポリシーとオフポリシーの違いが詳しく書かれているので同じTD法でもQ-learningとSARSAの違いがよく理解できた。

第5章

いよいよニューラルネットを使った方法の解説が始まる。DQNの話なので強化学習に興味があれば聞いたことがあるだろう。これまでやってきたこととニューラルネットを結びつける内容で、特にExperience Replayについて詳しく書かれている印象だった。モンテカルロ・ツリーリサーチの言及はあったものの、実装はなかったのは少し残念だったが、「1手先読み」の実装がありそれによって壁にぶち当たるという動きがなくなるというところまでが内容になっている。モンテカルロ・ツリーリサーチの実装・解説に関してはAlphaZeroなどの解説本などを見る方がいい。


必要な前提知識

  • Python3
  • Colab(使い方の説明は書いてある)
  • ニューラルネットの基礎(MNISTとかやったことあれば大丈夫)
  • 数学記号({\displaystyle \sum}{\displaystyle P(B \mid A)}など)

おすすめの人

  • 練習問題をときながら考えたい人
    自分はこの類だけれども、練習問題が秀逸でなるほどなーって思う。練習問題で理解度を測れるし、きちんと理解して進められる。

  • いきなりSutton本読んで意味不明だった人
    正直自分も、初めてSutton本を読んだ時は理解するのが困難だった。Sutton本とは異なり、かなり噛み砕いて数式展開されているのと、コード付きで書かれているので数式謎でもコードが読み解けるならコードから理解できる。

  • 数式の理解が苦手な人 比較的わかりやすく書かれているが、無限級数の解説もかなり丁寧に書かれており、その他の書籍に比べると数式の解説が丁寧である。

ITエンジニアのための強化学習理論入門

ITエンジニアのための強化学習理論入門

  • 作者:中井 悦司
  • 発売日: 2020/07/17
  • メディア: 単行本(ソフトカバー)


その他参考図書

Pythonで学ぶ強化学習(久保さんの書籍 )

これもかなりわかりやすいので、併用することをオススメする。強化学習の弱点や進化戦略・模倣学習・逆強化学習についても触れられている。コードや書籍上の誤りも修正もGitHubで管理されていて、基本的に最新の状態になっている。


終わりに

機械学習はやってきたけど、強化学習は全然知りませんっていう新卒の教育本になると思う。久保さんの本とこの本をとりあえず読んで実践してくださいっていう感じで導入はできそうと思った。個人的には、こちらの本を先にやってから、久保さんの本へ行く感じがいいかな。


お願い(欲しい書籍リスト)

ずうずうしいのですが、ブログを続けるのも大変で、基本自分の学習メモのためですが、サポーター募集です。ポチッとしてくれると嬉しいです。

https://www.amazon.jp/hz/wishlist/ls/2EDNNTYRW2BJE?ref_=wl_share

もしくは、レビューなど書くので、献本していただけたらものすごく喜びます(お問い合わせ or TwitterのDMからお問い合わせ下さい。)