「ScratchでAIを学ぼう ゲームプログラミングで強化学習を体験」を読了しました。
元々買おうと思っていたので自分で発売前から予約していたのと、出版社の日経BP様より献本をいただいたので、2冊揃いました。どうもありがとうございます。一冊は CoderDojo 調布用にでもしようかと思っています。
Amazon のページに発売前から掲載されていた書籍の説明や目次を見ていて、だいたい予想はしていたのだが、Scratch を使っているとはいえ、全編なかなか骨太な内容となっています。
よく一緒に購入されている商品としても表示される拙著「Scratchではじめる機械学習 ―作りながら楽しく学べるAIプログラミング」で言えば、上級編としている第5章の「遺伝的アルゴリズムでネコの動きを進化させよう」と同等かそれ以上のレベルの内容を厚くして、しっかりと理論も理解しながら読み進めていこうという内容だ。
Scratch を使うから簡単というわけでは決してない。そういう見方をしている特に大人の方は大きく裏切られるだろう(そういう方はそもそもこの本を手に取らないような気がするが)。Scratch を使っている利点は、たとえば同じことを Python でやろうと思ったら環境構築が必要でそこでつまづく可能性があるし、Scratch だとプログラムを動かしながら各パラメーターを少し変えてみて、すぐその場で結果を確かめることができるという手軽さがある。そういう意味では、これまでプログラミングしたことがない方が強化学習を学ぶための入門書として適している。
書籍で使っているサンプルは、Scratch のサイト上で動かすことができるし、リミックス(Scratch の世界では、プログラムをコピーして自分で自由に変更できるようにすること)することもできるので、全部一から作る必要はない。僕も、サンプルをリミックスして、実際に動かしたり、コードの中身を覗いてみたり、書籍でも勧めているように、パラメーターをちょくちょく変えてみて読み進んでいった。報酬確率と報酬予測を表示してみて、報酬確率にだんだんと報酬予測が収束していくのを眺めるのは見ていて面白い。
機械学習にはいろいろなアルゴリズムがあるが、どれも大まかには、解決したいある問題があり、始めに大まかに決めた予測をもとに行動を繰り返し、得られた結果をもとに少しずつ調整していって、最後は問題の正解に収束させていく、という似たような方法なんだな、ということを感じた。それは、僕が「Scratchではじめる機械学習」を書きながら学んだことと本書で学んだことの類似点、共通点を見いだせたからであり、このように同じテーマを違った角度から観察することで得られる学びというものがある。そういう意味で、機械学習 + Scratch をテーマにした類書がこれからどんどん出てくる気がするのだが、一冊読んだだけじゃわからなくても別の本を読んでみるということができるようになるのは良いことだ。
少し残念なところがあるとすれば、どのサンプルのゲームも、最初に人間がやってみて、次に強化学習をおこなうコンピューターがやってみて、お互いのスコアを競うという形で進むのだが、レベル1からレベル3までやっても、人間が圧勝してしまい、「強化学習すげー、賢い!」という印象を持ちにくい点だ。おそらく本書の範囲内の入門で扱える方法ではそこまでコンピューターを強くすることができない、あるいは人間のカンってなかなかのものだ、ということだと思うのだが、ゲームの内容やルールを工夫するなどしてなんとか強化学習側が得意なゲームに持っていけなかったものかとは思う。そこは、自分でそうした課題を自分でみつけて、次は読者が強化学習を実装してみなさい、ということなのかもしれない。
強化学習ってどんなものなのかを知りたい方やこれから学ぼうという方には良い入門書、教科書であると思います。