「ScratchでAIを学ぼう」はScratchで動かしながら強化学習を理解できる凄い本

f:id:karaage:20200809110720j:plain:w640

「ScratchでAIを学ぼう」は初心者向けの強化学習の本

 日経BP様より献本いただいた「ScratchでAIを学ぼう」を読みました。

 この本、ただでさえ少ない強化学習の本の中で、Scratchを使った初心者向けという異色(?)の強化学習本です。

 強化学習は、機械学習の1手法で、ゲームや制御のAIに用いられます。最近は、ディープラーニングと組み合わせた手法が注目を浴びています。囲碁で世界チャンピオンに勝ったAlpha Goが使っているのも強化学習です。ゲームやシミュレーションの世界から飛び出し、リアルな自動運転やロボット制御に強化学習とディープラーニングを組み合わせた手法を適用する研究も注目されつつあります。

 といっても、学習に膨大な試行回数が必要なため(基本的には)シミュレータを使う必要があり、シミュレータの構築や、シミュレータとリアルな実機とのギャップに大きな課題があって、実際に役に立つもの作るのはめちゃくちゃ難しそうだなーというのが自分の印象です(詳しくないので、間違っていたらすみません)。

 強化学習には、興味はあって何冊か本は読んだのですが難しくて、イマイチ理解できてなかったというのが、本を読む前の自分の現状でした。

Scratchで動かしながら強化学習を体感できる

 本は3章までは概要の説明と、Scratchの使い方の説明です。ある程度わかっている人は、1章だけ読んで4章まで飛ばして良いと思います。4章からは、いよいよScratchで強化学習を体験できます。Scratchのコードは以下の特設サイトにあります。

NikkeibpRL on Scratch

 環境構築などは一切不要なので、動かせないということは無いでしょう。起動すると、簡単なゲームで強化学習AIとの対戦が楽しめます。とりあえず最初に一度この対戦を体験してみるのがおすすめです。私の結果は以下でした(左真ん中の得点のところをみてください)。

f:id:karaage:20200811233247p:plain:w640

f:id:karaage:20200811233303p:plain:w640

f:id:karaage:20200811233319p:plain:w640

 最初の方は互角に戦っていたのですが、最後のちょっと複雑なゲームになるとAIに完敗でした。この時点で「ムムッ、強化学習やるじゃないか」とかなり心を掴まれます。

 本を読むと、丁寧に強化学習の仕組みが書いてあります。AI系でよくある、ブラックボックス的にAIを使うのではなくて、ちゃんとアルゴリズムを理解して、実装する形になっています。あまりにすんなり理解できるので、最初「あれ、強化学習ってこんなに簡単だっけ?」と不安になるくらいでした。強化学習でよく出てくる単語も出てこないので不安になりますが、これは本の構成の都合で、7章まで読むと6章まで学んだことが強化学習で使われるエージェント・環境といった単語としっかり結びつきますのでご安心を。

この本を読んだ後に学ぶと良さそうなこと

 この本は強化学習の基礎を学ぶ内容です。ディープラーニングに関しては、実践的な内容は無く、終わりも若干唐突に終わってしまうので、読み終えた後どうやって発展させていけば良いのか悩みそうな気がしました。例えば、私の場合はディープラーニングを使った強化学習に興味があったので、以下のような本を読み進めています。

リバーシAIを作って学ぶ深層強化学習 - tadaoyamaoka - BOOTH

GitHub - komi1230/Resume: komi1230's Resume

 リバーシAI本は、PythonでGoogle Colab上でAIを使って動かしながらDQNを理解できます。「ScratchでAIを学ぼう」で出てきた「𝜀グリーディー 方策」とか、急に出てきたりするのですが「これ!Scratch本で見たことあるやつだ!」と妙な感動が感じられます。

 コミさん(@komi1230)が、GitHubで公開している強化学習本は、無料ながら強化学習の決定版と言える内容なので、これも良いと思います。様々な手法の解説があります。ただ、数式・アルゴリズム中心の教科書的な内容で、実装して動かしながらという形式ではないので注意してください(分かっている人向けです)。

 他にもいくつか強化学習の本読んだのですが、正直あまりピンと来なかったです(私の理解が乏しいのが原因と思います)。強化学習の初心者向けの本は、まだまだ少ないので、オススメ本やネット情報ありましたら是非教えてください。

ScratchでAIを学ぶ本が増えている?

 AIを学ぶ層でScratchというのはミスマッチな感じはありますが、特に強化学習の場合は、学習するための環境(多くはゲーム環境)を用意するのが大変なのに対して、Scratchだとその辺りが簡単に準備できるので、これはこれでアリなのかなと思いました。

 偶然なのか、他にもScratchでAIを学ぶという本が増えていますね。こちらは、ディープラーニングでの画像判別や懐かし(?)の遺伝的アルゴリズム(GA)が学べるということでちょっと気になっています。今後AIに興味を持つ対象が広がるにつれてScratch x AIの組み合わせは増えていくのかもしれません。

まとめ

 「ScratchでAIを学ぼう」を読んで強化学習に入門してみました。強化学習何も分からない、という人が手っ取り早く入門して概要を掴むために良い本だと思います。本で使うプログラムは、本を買わなくても試せるので、一度試してみると興味が湧くかもしれません。

NikkeibpRL on Scratch

 本読んで、強化学習で何か動くもの作ったら面白そうだなと思いました。ただ問題は、実世界で少し高度なことをやらせようとするとめちゃくちゃ難しそうなことです。何か良い題材を見つけて取り組んでみたいですね。

追記

 この本を読んで、興味が出てきたので「OpenAI Gym / Baselines 深層学習・強化学習 人工知能プログラミング 実践入門」という本を読んで色々試しています。試行錯誤をQiitaに記事として書きました。

参考リンク

仕組みの見えるScratchで遺伝的アルゴリズムを作る面白さ。「Scratchではじめる機械学習」( 石原 淳也、倉本 大資 著、阿部 和広 監修)|TAKASU Masakazu|note

関連記事

変更履歴

  • 2020/12/04 OpenAI Gymに関して追記