最近「Scratch ではじめる機械学習」を読んでいる.Scratch を使って「機械学習」を体験することができて,非常に楽しめている.書評記事はまた別に書く予定!本書の中で「第4章 : 機械学習について学ぼう」を読んでいたら「単純パーセプトロン」を使った分類(フルーツのグループ分け)を体験できる Scratch プロジェクトが紹介されていた.実際に試すことができるので紹介する!
フルーツのグループ分け(単純パーセプトロン) on Scratch
さっそく試す🍎🍌
緑色の旗🚩を押すとランダムに「10個」のリンゴ🍎が配置される.その中から自由にリンゴを1個選んでクリックするとバナナ🍌になり,そこから学習をする.最適な境界線を導き出すまで繰り返し学習をするので,その過程を見るのも面白い.最初は分類しやすい場所のリンゴを選ぶと良いと思う.最終的には境界線が収束する.他にもリンゴを選んでクリックするとバナナになり,その状態からもう1度学習をする.
そして次に好きな場所で「スペース」を押すと,重みを計算してリンゴ🍎かバナナ🍌が配置される.以下は試しに中央あたりに追加してみた.このように境界線によってうまく分類(フルーツのグループ分け)できていることを確認できる.
「単純パーセプトロン」とは
そもそも今回紹介した Scratch プロジェクトのテーマになっている「単純パーセプトロン」とは,深層学習(ディープラーニング)に必要となるニューラルネットワークの基礎になるモデルで「複数の入力と重み」から「単一の出力 (0 or 1)」を返す.以下のような数式で表現できる.
とは言え,あくまで「直線(線形分離)」になるため,うまく分類できないこともある.Scratch の例だと,リンゴとリンゴに挟まれた場合など,場所によってはうまく境界線を導き出すことができず,ずっと学習をし続けてしまうこともある.「単純パーセプトロン」に関しては解説記事などを読んでもらえればと!
www.slideshare.net
実装を確認する
Scratch プロジェクトの実装も簡単に調べられる.詳細な実装解説は「Scratch ではじめる機械学習」には載っていないけど,座標を入力値として繰り返し重みを修正していくなど「ブロック定義(学習する)」の解説は載っている.実装を全体的に確認して理解できないところもあったけど,勉強になる.またそもそも Scratch の実装 Tips としても参考になる部分も多く,拡張機能「ブロック(ペンを上げる/ペンを下げる)」を使って線を引いたり,「ブロック定義」を使ってモジュール化をしたり.
まとめ
最近「Scratch ではじめる機械学習」を読んでいる.本書で「単純パーセプトロン」を使った分類(フルーツのグループ分け)を体験できる Scratch プロジェクトが紹介されていて,面白かったので紹介した.次は本書の書評記事を書く予定!