仕組みの見えるScratchで遺伝的アルゴリズムを作る面白さ。「Scratchではじめる機械学習」( 石原 淳也、倉本 大資 著、阿部 和広 監修)
献本御礼。
僕は前職でテキストマイニングやレコメンドエンジンを使ったサービス構築をしていたので、決定木だの協調フィルタリングだのニューラルネットワークについてお客さんに説明したことはある。とはいえかなりブランクが空いていて、最近の知識はぜんぜんわからない。職業エンジニアだったのは20世紀の話なので、最近の「Pythonで..」的のやつは環境構築で二の足を踏んでしまう。(最近はラクになってそうだけど)
この本を読み始めたモチベーションは、Scratchよりも機械学習の知識をアップデートしたいからだ。
Scratchではじめる機械学習
この本の序盤はweb版のScracthに機械学習用の機能拡張を読み込ませる形で進む。プログラム一覧はオライリーの書籍サイトに載っている。
多くはGoogle等が公開している機械学習のチュートリアルをScratchと連携させて使うのだけど、紹介されているチュートリアルがどれも面白い。
このteachable Machineは、ブラウザだけでパソコンについているマイクやカメラを使って、自分の音声や映像を学習させて、「手を上げてるかどうか」などの判定機を作ることができる。
判定機を作るだけでなくて、どういう画像や音声が材料になっているか、どういう処理が走っているかもうまく説明してある。
書籍の説明もそれを助ける。それはGoogle等が公開したサービスの良さでもあるけど、良いサービスを選び、適切な説明をつけたのはこの書籍の良さだ。
そして、ここで作ったモデルをブラウザ上で動くScratchに組みこんでプログラミングすることができる。
仕組みが見えることのよさ
完全にScratch上で構築しているプログラムもあり、そこではScratchの「どういう動作が行われているか、その言語に詳しくなくても理解しやすい」利点が生きている。
これは第4章の単純パーセプトロン、画面内のリンゴとバナナの分布を見て、良い感じで分類できるところにコンピュータが自動で線を引く。機械学習の基本部分のアルゴリズムだが、このパーセプトロンはScratchだけで実装されていて、数式含めて書籍で解説されている。
こうしたアルゴリズムを組み合わせ、何よりも大量に実行することで機械学習は成果を出しているのだけど、もとにどういうものがあるのかを確認できて、パラメータいじったりして体験できるのはすごくありがたい。
しかも、ブラウザベースで試せるので環境構築が要らないのもありがたいし、ほぼ初見でまあまあ動かせるのもありがたい。
Scratch、ちゃんと触らずに「ああアレね」ぐらいで理解していた(たとえば、2.0と3.0の違いを僕は説明できない)けど、大人でもこういう学習用途に使うのはすごくいいんだなあ。
Scratchで遺伝的アルゴリズム
個人的に一番面白かったのはScratch上で遺伝的アルゴリズムを実装する第5章だ。このプログラムもScratchだけで実現されている。
この動画にあるように、ネコの動きが良い感じにランダムになり、かつ突然変異が生まれるようにプログラミングし、壁にぶつかったらマイナス、リンゴに近づくごとに評価が高くなるようにプログラミングしておいて、何度もこのプログラムを実行すると、世代ごとに多くのネコがリンゴにたどりつくようになる。
このプログラムも手元で動かしながらパラメータをいじることができる。最初の設定に戻して、数時間放置したら、2000世代を超えてもあまり目標に近づいていなかったw
これも、「ランダムな動きというのは具体的に何か」「距離が近づくことをどう計っているのか」などのプログラムを、手を動かしながら確認できるのがありがたい。
もともと知らない人がどこまで学習できるのか
機械学習はすごく範囲が広いし、教える方はかなり広範囲に知っているけど聞いてる方は部分的にしか知らないので、どこから学ぶべきかの正解はよくわからない。この本もその中の一つかもしれない。
でも、仕組みと演習を実際に手を動かして学べるのは間違いなく役に立つ。この本にあるのが機械学習のすべてのピースではないし、最短ルートかどうかもわからないけど、機械学習を理解するために大事なピースであることは間違いない。なので、プログラム強くない人が機械学習の知識を身につけるためにはとても良い本だと思う。
この記事が参加している募集
最後まで読んでいただき、ありがとうございます。 深圳ほかアジアで見たものをシェアするマガジンをやっています。