『「強化学習」を学びたい人が最初に読む本』で強化学習に再入門しました

f:id:karaage:20211111221140j:plain:w640

強化学習に再入門

 日経BP様より『「強化学習」を学びたい人が最初に読む本』を献本いただきました。

 実は、1年くらい前にも一度強化学習に入門してみようという気になったものの、その後すっかりトーンダウンしていました。この本はそんな自分が強化学習に再入門するとても良いきっかけをくれました。

 私がこの本で良いなと思ったポイントを3つ紹介します。

  • 数式は少なめでコードベースで学習・理解できる
  • 深層強化学習に最短で到達できるような書籍の構成
  • タスクが比較的楽しい

 順に説明していきます。

「強化学習」を学びたい人が最初に読む本の書評

数式は少なめでコードベースで学習・理解できる

 自分が読んだ強化学習の本は、数式がバンバン出てくるものだったり、逆に割り切って基本の説明とライブラリの使い方に徹している書籍が多かった印象があります。この書籍はその中でも、数式が少なめでコードベースの説明が多く、自分のような数学が得意でないけどコードは多少読める初学者にはちょうど良いレベル感でした。

 コードは、以下のサポートページからダウンロードできます。本を買おうか迷っている人は、コードをみてレベル感を確認するのも良いかもしれません。

 使用しているライブラリがTensorFlowの1.x系というのは、最初ちょっとマイナスな印象を持っていました。ただ書籍のメイントピックとなる強化学習の基礎部分はTensorFlowは使われていませんし、深層強化学習を本格的に使う場合は、結局この書籍の対象外となるようなアルゴリズムが実装された深層強化学習専用のライブラリを使うことが多いと思うので、そこまでは問題はないのかなとは思いました。

深層強化学習に最短で到達できるような書籍の構成

 最初読んだときちょっとびっくりしたのは、その構成です。多くの強化学習の書籍は「機械学習には教師あり・教師なし・強化学習の3つあって、この本では強化学習を説明します」と書いて、いきなり強化学習の本格的な解説に入っていきます。この書籍は、そうではなく強化学習の解説の前に、教師あり学習とニューラルネットワーク(ディープラーニング)の解説から始まります。

 強化学習の本なのに、最初に強化学習の説明しないのは違和感を感じたのですが、今ホットになりつつあるディープラーニングと強化学習を組み合わせた深層強化学習に最短で入門しようとするなら、たしかに最適な構成かなと思います。

 また、教師あり学習・教師なし学習・強化学習の3つは、話を簡単化するために全く別のものとして扱われることが多い気がしますが、少なくとも教師あり学習と強化学習は結構密接な関係があるように感じていましたし、教師あり学習は機械学習の基本ではあるので、初学者向けにこの構成は良いのではないかなと思いました。ある程度詳しい人は、飛ばせば良いだけですし(私は飛ばしちゃいました)。

 よく使われるPPO等の最新のアルゴリズムに関しては、バッサリと割愛されていますが、その辺りは変化が激しそうですし、強化学習のライブラリ自体もバージョンアップ激しいので、大胆ですが適切な判断ではないかと思いました。

タスクが比較的楽しい

 強化学習の基礎の代表的な例題として「バンディット問題」というスロットマシーンみたいな題材が取り扱われます。しかし、これが非常に退屈というか、つまらないんですよね(笑)

 かといって、複雑な問題を例題として取り上げると初心者への説明は、難しくなってしまいます。

 この書籍では、以下のようにロボットが動き回る視覚的にも楽しめるオリジナルの例題が設定されているのが良い点です。

f:id:karaage:20220105132402p:plain:w480

 基礎的かつ、楽しめる例題として絶妙なバランスなのではないかなと思います。

書籍を読んで強化学習でAIマリオを育てることにハマってしまった

 書籍をきっかけに強化学習で色々やりたくなった挙げ句、何故か強化学習使ったAIマリオでの全ステージクリアにチャレンジしています(笑)以下にプロジェクトページ作成しているので興味ある方は参照ください。

 こんな感じでAIマリオがステージをクリアしていきます。 f:id:karaage:20211230213947g:plain:w480

 AIマリオの強化学習に使っているアルゴリズムは、実は本で出てくるものは使用しておらず、Stable Baselines 3という専用のライブラリを用いています。

 じゃあ本なんて必要ないんじゃないか?と言われると、そうではなくて、学習うまくいかなかったときどう対策すればよいのか?という指針を考える際に、基礎を知っているということは大きな安心感になりました。

 あと、理屈分からずライブラリのAPIを適当に叩いてるだけじゃ、なんか物足りないよねという個人的な趣向もあります。

まとめ

 『「強化学習」を学びたい人が最初に読む本』の書評を書かせていただきました。私としては、挫折気味だった強化学習に再入門できるきっかけになるとても良い書籍でした。

 おかげで、この冬休みは家にある強化学習の書籍を読み直していました。

f:id:karaage:20211208020703j:plain:w640

 また、来年発売の「ゼロから作るディープラーニング4」は、強化学習がテーマということで、ますます強化学習の熱の高まりを感じつつあります。ちなみに、「ゼロから作るディープラーニング4」の公開レビューにも参加しましたが、数式もバンバン出てくるかなり骨太の内容です。本書ではサラッと説明されている、ベルマン方程式や動的計画法も丸々1章使って解説がされています。ちょっと自分には骨太過ぎる内容でしたが、初学者の方は本書を読んだ上で臨むのも良いかもしれません。

 しかし、強化学習はまず学習に環境から構築しないといけないのが大変ですね。自分のレベルだと、実世界にどうやって応用してよいのか、皆目検討がつきません(笑)ただ、思えば初期の画像認識のディープラーニングもそんなこと感じていたので、強化学習もいつか、当たり前のように使われるときが来るのかもしれませんね。

関連記事