あなたの「探究」がきっと見つかる 高校生のためのAIの事例で学ぶ「探究」のポイント解説(10)
【特徴】
・「総合型選抜」に使えます。
・自分の才能が見つかります。
・自分軸を鍛えることができます。
某県立高等学校 再任用教諭 テラオカ電子
第8章:探究学習教材2 手書き数字の分類(CNN+5MLs)
本章では、2つ目の探究学習教材を紹介します。いきなりですが「MNIST」をご存じですか?機械学習やAIについて勉強したことがある方は、聞いたことがあるかもしれません。MNISTというのは、手書き数字のデータセットで、機械学習の入門としてよく使われるものです。
【「MNIST」の紹介サイトはこちらから】
https://udemy.benesse.co.jp/data-science/ai/mnist.html
今回は、機械学習導入の鉄板である「MNIST」を使って探究を行います。前回(第7章)同様に、プログラムを提供しますので、試して頂き、そして、面白かったらご自身の興味でアレンジして「探究」を楽しんでください。
高校生の皆さんは、普段、授業でノートを取ったり、テストに解答したりする際、手書きがほとんどだと思いますが、仕事では手書きはほとんどなくなりました。それでも、冠婚葬祭や年賀状では、まだ手書きは健在ですね。手書きには、その人自身の温かみや個性を感じるからかもしれません。
さて、このような個性的な手書き文字ですが、機械(コンピュータ)が読み取ることには、これまで難しさがありました。しかし、近年では、機械学習(統計的手法)やディープラーニング(深層学習)の進歩により精度よく読み取ることができます。
そこで、今回は、その基礎技術である、画像認識でブレークスルーを起こしたCNN(畳み込みニューラルネットワーク)と統計的な機械学習(5種類)を使って、手書き数字の分類を行います。
今回、なぜ機械学習を5種類も扱うのかというと、機械学習にはそれぞれ得意、不得意があるからです。一番性能が良いものを使えばそれで良いという考え方もありますが、性能は、画像の種類によっても、また実用上の扱い易さによっても変わってきますので、簡単に決めることができません。それに、ここが大事なのですが、これから皆さんが、ご自身の課題を解決していくとき、一つの方法だけしか知らないのでは応用が利きません。様々な手法の原理を理解していることが、新たな発見に繋がります。ニュートンが、論敵のロバート・フックに宛てた書簡の中で、「巨人の肩の上に立つ」と述べていますが、研究(探究)での新たな知見は、過去の積み上げから得られるものだからです。ぜひ、古いと言わずに、各自でそれぞれの機械学習について調べてみてください。
今回もプログラムは、Pythonです。、このPythonプログラムは、Google Colaboratory上で動作させます。なのでGoogleのアカウント(無料)が必要になります。
https://prtimes.jp/main/html/rd/p/000000152.000012063.html
ところで、どのプログラム言語が年収に繋がるかについて、上記のような調査結果があります。これからいくと、年収を上げるには、一位の「Go」を勉強するのが一番効率的と言えますが、実際は、それほど単純ではありません。なぜなら「Go」は初心者には難しいので、「Python」や「Java」、「C」を熟知したエンジニアが使っていることが多いのです。なので、この結果はプログラムの上級者が「Go」を使って業務を行っていることを示しているに過ぎないのかもしれません。
横道にそれましたが、「Pythonは、サーバサイド言語としてシステム管理やツール・アプリケーション開発、科学技術計算、Webシステムなどで広く利用されています。特に、2010年代ごろからの機械学習ブームでは、優れた科学技術計算ツールとして評価され、大きな人気を得ています。またPythonは「読みやすさ・分かりやすさ」を重視した言語で、初学者でも学びやすく、社会人、学生ともに人気です。」とありますので、高校生の皆さんは、迷わずPythonから始めて問題はありません。今回の探究学習を通して、Pythonにも慣れてもらえればと思います。
では、前置きはこれくらいにして、探究学習を始めましょう。
[1]今回の探究学習の概要
はじめに、今回取り組んでいただく探究学習の概要を説明します。
今回扱う機械学習のモデルを上図に示します。
まず、手書き数字の画像データセットである「MNIST」をダウンロードします。それをCNN(畳み込みニューラルネットワーク)であるVGG16モデルで画像テータを変換します。
MNISTの画像データは、28×28(=784次元)ピクセルの白黒画像です。これをVGG16を通すことにより512次元に圧縮します。784次元から512次元にするので、情報が少なくなって大丈夫なのかと心配になるかと思いますが、VGG16はCNNなので、画像の特徴を捉えることができます。したがって密な情報に変換されたことになります。この点が気になる方は、VGG16モデルを介さずに直接機械学習を行った場合と比較する探究も面白いと思います。
VGG16というのは,「ImageNet」と呼ばれる大規模画像データセットで学習された16層からなるCNNモデルです。Oxford大学の研究グループが提案し2014年のILSVRで好成績を収めました。16層からなるCNNモデルには、(224×224)の入力サイズのカラーチャネルの入力層と1000クラス分類の出力層を含み様々な研究に使用されています。
ところで、生物の進化の過程において、「カンブリア爆発」というのがあります。そこでは、「目」の獲得が生物の多様性を促進したと考えられています。ここで扱うCNNは、機械に「目」を持たせることを可能にしたと言われています。このCNNの実用化は、Web上のビッグデータ活用の「AIの進化」の起点になりました。
【「VGG16モデル」の紹介サイトはこちらから】
https://newtechnologylifestyle.net/vgg16originalpicture/
私は、AIの「目」に対応するCNNモデルの技術的ブレークスルーが、生物のカンブリア爆発に対応しているように思います。AIの進歩におけるCNNと、生物の進化における「目」の獲得にはアナロジー(類似)を感じます。
横道に大きくそれてしまいましたが話を戻します。次に、VGG16モデルからの出力データ(512次元)を5つの統計的機械学習モデルに与えます。そして、それぞれの機械学習モデルで学習させたのち、MNISTの画像を分類させます。
今回は、5つの機械学習モデルとして、「決定木」、「ランダムフォレスト」、「SVM(サポートベクターマシン)」、「ロジスティック回帰」と「k-NN(k近傍法)」を扱います。
それぞれのモデルについては、参考サイトを紹介しますので各自で調べてください。ここでは、簡単にそれぞれのモデルの特徴と利点を説明します。
1.決定木:
決定木は、木構造を用いてデータを分類や回帰するモデルです。今回は分類(手書き数字を0~9に分類)を行います。木構造の各ノード(枝分かれの元)は特定の特徴量(今回はVGG16の出力の512次元データ)でデータを分割し、その結果に基づいて分岐が進みます。最終的には葉ノード(最終的な分類)で結果が出力されます。利点は、 直感的に理解しやすく、可視化が容易な点です。また、特徴量のスケールに影響を受けにくいことがあります。
【「決定木」の解説サイトはこちらから】
https://www.kikagaku.co.jp/kikagaku-blog/decision-tree-visualization/
2.ランダムフォレスト:
ランダムフォレストは、複数の決定木を組み合わせるアンサンブル学習(データを任意にサンプルして決定木を複数作ります。それら複数の決定木の結果の多数決をとる)の手法です。その結果、より汎化性能の高いモデルを構築できます。利点としては、過学習(学習データに特化して学習すること)に強く、高い汎化性能を持ちます。また、特徴量の重要度を評価することもできます。
【「ランダムフォレスト」の解説サイトはこちらから】
https://aismiley.co.jp/ai_news/random-forests/
3.SVM(サポートベクターマシン):
SVMは、2つのクラスを分離する最適な境界線(超平面)を見つけるための手法です(今回は多クラス分類なので、組合せが複数になります)。マージン(2つのクラスの境界領域の幅)を最大化する境界線を見つけることで、汎化性能が向上します。利点としては、高次元のデータや非線形なデータにも適用可能であり、カーネルトリック(座標変換すること)を使用して複雑な関係をモデル化できます。
【「SVM(サポートベクターマシン)」の解説サイトはこちらから】
https://qiita.com/c60evaporator/items/8864f7c1384a3c6e9bd9
4.ロジスティック回帰(分類):
ロジスティック回帰は、2つのクラスを分類するためのモデルです(回帰とありますが分類です)。入力変数の線形結合をロジスティック関数に通し、その結果を確率として解釈し、閾値に基づいてクラスを予測します(今回は閾値をデフォルトのままにしています。深く分析したい場合は、各自で調べて変えてください)。利点としては、結果を確率として出力するため、クラスの不確実性を考慮できます。また、計算が比較的高速です。
【「ロジスティック回帰」の解説サイトはこちらから】
https://gmo-research.jp/research-column/logistic-regression-analysis
5.k-NN(k近傍法):
k-NNは、新しいデータポイントを分類する際に、最も近いk個のトレーニングデータポイントを参照し、それらの多数決によってクラスを決定します。利点としては、単純で理解しやすく、ハイパーパラメータの調整が比較的簡単です。また、非線形な決定境界もモデル化できます。
これら5つの手書き数字の判定結果(正解率)を比較しましょう。また学習にかかった時間も比較してみましょう。さらに、各学習モデルのハイパーパラメータも調整してみましょう。
最後に、ただ判定するだけでは面白くありませんので、実際に数字を紙に描いてみて、それをカメラで読み込ませて判定させてみます。USBのWebカメラがあれば便利です。
冒頭でも述べましたが、今回は、機械学習の入門である「MNISTの画像」を扱います。また、5つの古典的な機械学習を使います。ただし、これが現在のAIだと勘違いされては困りますので、最近の技術(2020年ですが)についても理解を深めてもらえればと思います。参考に「STEAMライブラリ」の「AI活用人材育成講座(理論講座)」から2つ紹介しておきますので、ぜひご視聴ください。
【「AI活用人材育成講座(理論講座)」【layer2】画像・映像・3次元データを扱うAIの導入】
(動画3)、(動画4)あたり
https://www.steam-library.go.jp/lectures/139
また、今回の探究学習とほぼ同じことを実行した動画をYouTubeでアップしています。こちらも参考にしてください。
【テラオカ電子:「「転移学習 VGG16+いろいろ Google Colaboratory編」をつくりました。」はこちらから】
https://www.youtube.com/watch?v=VQZs-0BSozo
では、前提知識はこれくらいにして、実際に動かしてみましょう。
[2]研究の問い:テーマを決めよう
今回の探究のテーマは、「画像分類が5つの機械学習のモデルでどの程度可能なのか?」です。もちろん、ご自身で一通り実行した後、オリジナルな問いやテーマを決めてください。そして、その問いの答えを見つけるために、プログラムを変更して実行させてみましょう。
MNISTではなく違う画像でやるとか、CNNモデルの構造を変更したり、使わなかったり、また、今回の5つ以外の機械学習モデルを試してみるなどしてください。面白い結果など出ましたら教えてください。それでは、いよいよ準備に入りましょう。
[3]準備
① 私のGitHubのリポジトリからプログラムをダウンロードしよう。
ここから先は
¥ 100
Amazonギフトカード5,000円分が当たる
あなたの「探究」の参考なると思われましたら、応援よろしくお願いします。