第27回 人生に退屈していませんか?

「機械学習(ニューラルネットワーク)の機構の「見える化」の研究」の探究活動
皆さん、こんにちは。テラオカ電子です。
突然ですが、皆さんは「ギフテッド」という言葉をご存じでしょうか?以下のサイトでは、「ギフテッド(gifted)とは、一般に高い知能や特定の分野で優れた才能を持つ人のことを言います。「神様からの贈り物(ギフト)」という意味でギフテッドと呼ばれ、生まれ持った先天的な特性とされます。」と紹介されています。
【「ギフテッドの特徴は?特有の悩み、教員や家庭に求められることも紹介」はこちらから】

今回の探究活動に取り組んでくれた方は、私は専門家ではないので、ギフテッドと呼ぶことができるのかどうかは、分かりませんが、すくなくとも、よくできる生徒でした。そのいくつかの例を示すことに留めますが、2年生の時には、生徒会の会長をやっていました。良くできる生徒でしたので、生徒会の顧問の先生は、特別に指導しようと考えたのだと思います。当時の卒業式で、在校生代表として「送辞」を述べましたが、素晴らしいものでした。また、教頭先生(数学)と何かの雑談で、この生徒が話題となったとき(3年生の選択授業で数学を担当されていました)、「彼は、かなり数学の力があります」とおっしゃられていました。
ただし、これは、ある地方の工業高校でのことですので、進学校にいたならば、凡庸な生徒であったかもしれません。でも、私は、特異な才能というのは、絶対的なことで決まるのではなく、その環境での相対的な位置が意味を持つと考えています。なぜなら、彼ら・彼女らがクラスで生きづらさを感じるのは、周りの環境に大きく依存するからです。
いきなりですが、特異な才能を持つ生徒が、生きづらさを感じていると述べました。私自身は、特にこれといった才能を持たないので、その感覚は分からないのですが、一般に、彼ら、彼女らは、さまざまな悩みを抱えているといわれています。今回紹介する探究活動に取り組んでくれた方(仮にM君とします)が、学校生活をどのように感じていたかは、わかりませんが、授業での様子(休み時間に一人で英語の勉強をしていたりしていたなど)から、周りに違和感を抱いていたのではないかと推察しています。
一方、文科省も、このような特異な才能のある生徒たちの配慮をどうするかを検討しています。ただし、冒頭で述べた「ギフテッド」という言葉は使わないとしています。
【文部科学省:「特異な才能のある児童生徒に対する指導 ・支援」はこちらから】
では、話を戻して、今回の探究活動の経緯を説明します。
この探究活動は、2019年度のものですが、私は、前年の末から、AIを学ぶ教材作製に取り組んでいました。正月休みに表計算ソフトと電子工作の教材を作りましたので、4月からの「課題研究」でこれらの教材を使って探究活動をおこなうつもりでいました。だた、生徒たちが、この「課題研究」のテーマを選んでくれるとは思いませんでした。当時AIは、話題ではありましたが、高校生が取組むテーマという雰囲気ではなかったからです。
4月の最初の「課題研究」の授業で、生徒たちから希望アンケートをとります(どのようなテーマかは、事前にプリントで配布してあります)。そのアンケートを職員室の裏の実習室で、担当教員が集まり、協議して生徒たちの「配属先」を決めていきます。案の定、AIの人気はありませんでした(テラオカ電子の人としての人気かもしれませんが)。
その時、ある教員の方が、M君のアンケート用紙を私に渡したのでした。M君は、第一希望は、その教員の「出前授業(小学校に出向き、簡単な工作をする)」だったのですが、M君の特性を考えて、私のテーマの方が良いと判断したのかもしれません。「出前授業」のテーマは、提燈やキャンドルをつくるなど、技術的には、「探究」と言えるものではありません。どちらかというと「小学生との交流」を楽しむものだからです。その教員の真意は分りませんが、M君の能力からいうと「違う」と判断したのでしょう。私は、即答で「引き受けます」と答えました。
「課題研究」の進め方を熟慮した結果、この年は、孫が作る電子ゲーム「握手をしようよ(第8世代)」と「僕の声聞こえる?(第9世代)」、そして、この「機械学習(ニューラルネットワーク)の機構の「見える化」の研究」の3本立てとしました。そして、生徒の特性から「課題研究」の授業では、メンバー全員で、「握手をしようよ(第8世代)」と「僕の声聞こえる?(第9世代)」で行い、「機械学習(ニューラルネットワーク)の機構の「見える化」の研究」は、M君単独で、しかも「課題研究」の時間外、業後に指導することにしました。M君だけ特別なのはメンバーから不満がでますが、授業外であれば、その不満は少ないと考えました。もちろんメンバー全員にAIをやりたいかどうかは事前に聞いています(誰もいませんでした)。
M君から、そんなのいやだということも予想しましたが、どういうわけか、面白いと言ってくれたのでした。どうして、第一希望が通らなかったのかと不満は述べていましたが。
そのようなわけで、個人教授の「課題研究」が始まりました。
さっそく、AIや機械学習について理解を深めてもらうために、まず、書籍のコピーを渡して、内容をまとめるように指導しました。M君は、「要約は得意です」と言ってくれました。その後、業後にニューロンモデルの説明、表計算ソフトの実演、電子工作のはんだ付け、プログラムの実装、完成品の評価、論文作成、プレゼン準備などに取り組ませていきました。
こういうことは、述べたくはないのですが、大抵の生徒たちは、これらのことを自分では出来ません。私が、かなり手伝う必要があります。でもM君の場合は、かなり、自分で理解しながら取り組んでくれました。言葉は悪いですが、進学校ならばこうなのかもしれません。
では、いつものように、M君が学科の成果発表会で発表した内容を私が代読した形ですが、YouTubeで一般公開しました。以下のリンクから動画を視聴できます。見て頂けると後の話が良く分かると思います。
【テラオカ電子:「機械学習(ニューラルネットワーク)の機構の「見える化」の研究」(2019)を公開します。】はこちらから】
また、この電子ゲームの紹介動画もありますので、こちらも参考にしてください。
【テラオカ電子:「文字認識:ニューラルネットワーク」はこちらから】
それでは、M君の探究活動を紹介します。
【タイトル】機械学習(ニューラルネットワーク)の機構の「見える化」の研究
【1.研究目的】
高校に入学してから、AIについてのニュースを多く目にするようになった。例えばロボットと会話できたり、お勧めの本を紹介してくれたりである。時にはSiriに嘘や間違った情報を言われることもある(今後は改善されるだろう)。ところで私を含めて周りの同級生のAIに関する知識は「何でもできそう」、「仕事を奪われる」、「人と同じ感情を持つ」などである。しかし集約すると「よくわからない」というのが正直なところである。
[私は、スマホを持たないので、Siriを実際には使ったことがなかったのですが、M君は、当時からこのようなことに興味があったようでした]
では様々なAIについて情報を得ているにも関わらず、なぜわかった気がしないのかを考えると、その情報がAIの機能(Function)であり、機構(Mechanism)でないからと推測する。そこでAIの機構を具体的に作ればAIのことがわかるのではないかと考えた。すなわちAIの機構の「見える化」を研究することにした。本研究の目的は、AIの理解を深めるため、その機構を「見える化」するツール(道具)を開発することである。
[ここでの仮説のコンセプトは、今でも気に入っています。ただし、「見える化」は「可視化」とした方が良かったと思っています]
【2.研究方法】
AIの定義についてはさまざまなものがある。例えば、東京大学教授の松尾豊氏は、「人工的につくられた人間のような知能、ないしはそれをつくる技術」と定義している。本研究ではその中で、現在話題となっている「機械学習」とういう技術に着目する。機械学習とはデータから知識を引き出すことで、統計学、数学、計算機科学が交差する研究領域であり、予測解析、統計学習とも呼ばれている。そして本研究では、手書き数字の認識を取り上げる。これは手書き数字の認識が歴史的に古くから研究されており機械学習の情報が多いことや、手書き数字のデータセットがインターネットから無料で使うことができるからである。ここで研究方法として「見える化」のために2つのツールを製作する。1つは、ニューラルネットワークの構造を「エクセル」で記述するものある。これは、ニューラルネットワークのニューロン一つひとつをエクセルのセルに見立て、そのニューロンの繋がりをセルに挿入する関数として表現するものである。これによりニューラルネットワークがどのように計算しているのかが目で見えるようになる。もう一つは、文字認識の「電子工作」を製作することである。実際にニューラルネットワークを搭載した電子工作を作ることで機械学習の動作を実際に操作できるようになる。
【3.ニューラルネットワークの歴史と理論】
機械学習は、1950年代後半から1960年代にかけて「パーセプトロン」というニューロンモデルの登場とともに始まった。このモデルはある入力に対して1か0を出力するモデルである。例えば文字が書かれた絵を提示し、それが「A」であれば1、違えば0を出力するものであった。しかし「人間と同じような認識ができる」と話題となったが、実用に耐えるためには膨大なニューロンが必要であり、当時はニューロン間の繋がりを学習する仕組みもなく実現できなかった。
1980年代にニューロン間の繋がりの学習方法(誤差逆伝播法、バックプロバケーション)が開発され、文字認識や英語の綴りから発音を推測するモデルを構成できるようになった。これは、洗濯機などに応用されニューラルネットワークが生活に浸透したが、学習に時間がかかることや、性能の向上が進まなかったため沈静化した。そして2000年代になって、ディープラーニング(深層学習)が提案され、画像認識や大規模な問題に対する正解率が一気に上がった。ディープラーニングとはニューラルネットワークにおいて、層の数を増やしたモデルを適切に学習させるための仕組である。
[ここでは、M君に、AIの歴史をまとめさせました。AIの歴史は、長く、そして、複雑であるので、簡単にまとめることはできませんが、技術を学ぶ上で、その歴史をイメージできるようになることは、今後の技術をキャッチアップしていく上でも重要と考えました]
本研究では、1980年代に開発されたニューラルネットワークを取り上げる。この理由は現在のディープラーニングの基礎となっており機械学習の基本だからである。本研究で扱うニューラルネットワークは構成が単純で分かりやすく、一定の性能も期待できる。
図1は1個のニューロンのモデルを示したものである。各入力にそれぞれ値の異なる「重み」(結合荷重)を掛け情報の伝達を調整し、それにニューロンの感度を表す「バイアス」を足す(ニューロンの興奮のしやすさを調整)。これを、ニューロンを興奮させる「活性化関数」に入力し出力する。ここで、入力をx、出力をy、重みをw、バイアスをbとすると、次式となる。

図2は3層のニューラルネットワークの構成(書籍によっては2層とされる)を示したものである。入力を受け取る入力層、全体の出力をする出力層、その間にある中間層(隠れ層)で構成される。

ここで入力から出力に情報が伝わることを順伝播(「推論」)、逆に出力から入力に伝わることを逆伝播という。逆伝搬は、重みとバイアスの「学習」に使われる。
本研究では、入力は文字が8×8ピクセルであるため64個、出力は0~9の文字を分類するため10個である。また中間層は1層(ニューロンの数は8個)とし、その活性化関数にはシグモイド関数、出力層の活性化関数にはソフトマックス関数を使用する。
シグモイド関数は、0から1の間を滑らかに変化する関数で、入力をxとすると、出力yは次式で表される。
ソフトマックス関数は、分類問題で使われる関数である。それぞれの出力は確率を示す。ソフトマックス関数の出力は次式で表される。

【4.エクセルによる「見える化」】
図3に示すように入力層のデータをセルに入れる。データは0と1で表現し、ここでは数字の「1」のデータを想定している。次に「学習」済みの中間層(隠れ層)の重みw1、中間層のバイアス(閾値)b1、出力層の重みw2および出力層のバイアスb2を図4のようにセルに設定する。
図5に中間層の出力値を示す。また、図6はそのセルの関数式(シグモイド関数)である。「$D$3:$K$10」が重みw1、「$N$3:$U$10」が入力層、「-D75」が閾値b1を示す。
出力層の関数であるソフトマックス関数は一つのセルに入れると複雑になるため、図7のように複数の式に分けて計算した。a2は中間層の出力と重みw2を掛け、バイアスを足したものである。このa2の最大の値をcとし、a2から引いたものが、(a2-c)である。また、その値をEXPで変換したものがEXP(a-c)で、ソフトマックス関数の分子に当たる。分母は、分子の合計であるため、sum(EXP(a-c))で表し、出力yには分子/分母になるような式が入っている。この操作は、ソフトマックス関数で扱う指数により計算機のケタ落ちを防ぐためである。なお、出力は0~9まで分かれており、それぞれ入力した数字の確率を示している。出力yの値より、図3の入力データは、「1」である確率が95.1%であると計算している。
[このエクセルの教材は、私が、書籍を参考に制作したものですが、昨年、参加した研究大会で、ある工業高校でもAIを学ぶ教材として、同様のエクセルを使ったものを紹介されていました。計算方法が明確に分かるのでよいと思います。M君には、セルの関数式を消したエクセルファイルを与え、関数式を考えさせる課題を与えました。彼は、関数式を調べて自力でファイルを完成させました。これには、感心させられました]

【5.電子工作による「見える化」】
写真1は、専用の基板に部品を半田付けしている様子である。まず、文字を入力するタクトスイッチと、その裏側にダイオードを半田付けした。これらの部品は、表面実装タイプである。半田付けの手順は以下のとおりである。①ランドにはんだを薄く溶かす。②ランドに部品を置き、部品の片側をランドに押し付けながら半田こてでランドに乗っているはんだを溶かす。③反対側をランドに押し当てランドに乗っているはんだを溶かす。④浮きがないことを確認した後、初めにつけた方のはんだを溶かし張力を緩和する。
部品が小さかったこと、数が多かった(それぞれ64個)ことで、この2部品だけで4~5時間を要した。そのほかの部品は通常の半田付けであったため、1時間ほどで完成した。
[はんだ付けに関しては、私が見本を見せ、やってもらいました。最初、1,2回は、試行錯誤していましたが、直ぐに上達しました。手先も機用でした]
次にプログラムを作成した。マイコンにはマイクロチップ社のPIC16F18877を使った。これを採用した理由は、このマイコンのピン数が多いこと(40ピン)、プログラムメモリが32kワード以上と大きく、低価格(190円)だからである。プログラムはC言語で実装するが、コンパイラにはMPLAB XC8を使った。マイクロチップ社が無償で提供する統合開発環境(MPLAB X IDE)を使ってプログラムを開発した。プログラムの冒頭に前節(エクセル)で使ったパラメータ(w1、b1、w2、b2:合計610個)を定数にして貼り付けた(この部分だけでプログラムリストは7ページになる)。プログラムは文字入力、マトリクスLED表示、LCD表示、ニューラルネットワークの計算部分およびmain関数からなる。プログラムフローは、まずマトリクスLEDに表示しながら文字入力を行う。次にその値を使ってニューラルネットワークの計算を行い、その結果をLCDに表示する。ニューラルネットワークの計算は入力データとパラメータの配列同士の演算を繰り返して行なった。写真2はプログラムを実装している様子である。
[マイコンPIC16F18877の現在の価格は、370円です。近年の半導体不足で高騰しました。プログラムの実装ですが、エクセルファイルの重みをコピペしてもらいました。610個あるので、こちらも時間がかかりました。プログラムコードは、リストを渡して読んでもおくように言いました。大体理解できたようでした]
最後に、電子工作の動作とエクセルとの整合性を述べる。写真3は、電子工作に文字を入力してニューラルネットワークを計算させた様子である。これから、入力した数字を「2」と判定し、その確率分布を2が94%、3が2%、8が1%、その他は0%と計算していることがわかる。
一方、エクセルの入力層に図8のように入力すると、その出力は1が0.4%、2が94.8%、3が2.5%、5が0.1%、7が0.7%、8が1.4%、9が0.1%、その他が0%となった。電子工作は、小数点以下を切り捨てているので両者は一致している。




【6.「学習」についての議論】
実装したニューラルネットワークのパラメータは、指導の先生が提供したものを使った。これは、機械学習における「学習」の理論が数学を用いているため高校生の自分にとっては難解であったためである。そこで、ニューラルネットワークの学習について指導の先生と議論した。なお、議論は「学習」をRaspberry Piで実演しながら行った(写真4)。その論点を整理すると以下のようになる。
[AIのフェーズは、「学習」と「推論」がありますが、「学習」の理論は、高校生の範囲を超えていると判断したので、そのイメージを掴んでもらおうと考えました。実際に「学習」の実演をするのがよいと考えました]
1)学習に使ったデータは何か。
機械学習のライブラリであるscikit-learnのdatasetsモジュールの手書き数字のデータを使った。このデータは43名分の手書き数字が1797個ある。それぞれ8×8ピクセルで、文字の濃さが16階調で表現されている。今回の学習では、階調が8レベル以上を「1」、未満を「0」に加工して行った。
2)活性化関数とは何か。
活性化関数は、ニューロンを興奮させるための関数と捉えることができる。この活性化関数により、ニューラルネットワークの表現が豊かになる。中間層で使ったシグモイド関数は微分が扱いやすく、ニューラルネットワークで古くから使われている。出力層で使ったソフトマックス関数は分類問題に使われるもので、ニューロンが対応する枠に分類される確率を表現する。
3)学習が進むとはどういうことか。
出力と正解(ターゲット)の違い(誤差)が小さくなることである。この誤差(損失関数)について、本研究のニューラルネットワークでは公差エントロピー誤差を使った。これは正解から離れるほど誤差が大きくなり、出力が正解に近づくにつれて誤差が0になる。従って、出力値と正解値の隔離が大きい時に学習速度が速い利点がある。本研究のニューラルネットワークの学習における損失関数の変化を写真5に示す。学習が進むにつれて減少していることがわかる。
4)訓練データとテストデータの区別
データの全てを使って学習するのではなく、訓練データとテストデータに分割する。訓練データはネットワークの学習に用い、テストデータは学習結果の検証に用いる。
5)隠れ層のニューロンが8個の理由
隠れ層のニューロンを増やせば増やすほどニューラルネットワークの表現は向上する。しかし、重みやバイアスの数が増える。そこで最小のニューロン数で、ある程度の精度のニューラルネットワークを考えた。ニューロン数を5(重みとバイアスの合計:385)、8(610個)、11(835個)個の場合で学習を行った場合のそれぞれの正解率は、それぞれ約86%、91%、92%であった。これらから、ニューロンが5個では正解率が低いが、8個と11個ではそれほど差がないことから本研究では隠れ層のニューロン数を8個とした。

【7.ニューラルネットワークの特徴評価】
当初、下図のようなマトリックスに従って、具体的な数字を入力してニューラルネットワークの特徴を得ようとした。

写真6は「正確」(人間が正しく読める形)に数字を入力した場合で、正しく判定した例(「2」の確率は96%)である。写真7は「正確」に数字を入力したにも関わらず、誤って判定した例である(「6」である確率は4%しかない)。ほかにもいくつか適当な数字を入力して評価を行った。しかし、このように上記のマトリックスに従ってニューラルネットワークの特徴を見出そうと試みたができなかった。そこで、ニューラルネットワークが手書き入力のどこに重点を置いて判定しているかを調べた。すると「2」は下を長くすると正しく判定をする。「8」も下側の影響が大きい。これらの傾向は、学習で用いたデータに似ているかどうかに依存していた。実際、学習データの2の数字の下部は長い(図8)。また、写真8は「3」に見えるが、結果は「9」と出ている。人間は入力された縦と横の2次元の形で数字を認識するが、ニューラルネットワークは64個の1次元の直線分布として意識する。そのため、ニューラルネットワークは「9」の可能性を79%、「3」の可能性は1%と計算している。
[いろいろなパターンを写真にとり、それを机に並べて、二人で議論しました。M君の理解が深まっていく様子が分かってよかったです]

【8.AITサイエンス大賞の参加と振り返り】
11月2日(土)、大学主催のAITサイエンス大賞の自然科学部門に参加した。スライドとともに発表し、その後ポスターセッションで大学の先生や他の参加者と交流した。そこで、大学の先生方々から、「AIはいわばブラックボックスのためよくわからない。」、「計算式中のバイアス、活性化関数などの意味が分からない。」、「実物を見るまで電子工作による見える化で何をしているのか分からなかった。」などの意見を頂いた。私自身よく分かっていない部分が多く、適切な説明をすることができなかった。しかし、研究の流れを説明し、実際に電子工作で数字認識を体験してもらうと、「おもしろい」や「わかりやすい」などの意見をもらうことができた。また、学習について、「その学習データはどう作ったのか」、「学習の仕組みはどのようなものなのか」という質問もあった。本研究はAIの機構(推論=計算の流れ)の研究であったため、「学習」そのものについては触れていなかった。そのため、質問されても私自身、十分理解できておらず、説明することができなかった。
AITサイエンス大賞を通し、本研究は「AIの計算の流れや認識の仕方が具現化され、理解することができた」と言える。しかし、「AIのより深い部分や計算式の意味などに疑問が残った」、「AIの機構を説明するにあたり必須とも言える「学習」についての説明、理解が不十分であった」などの課題が残された。
【9.まとめ】
本研究は、AIについて、その機構を具体的に作れば理解が進むのではないかという仮説のもと、2つの見える化したツールを開発した。具体的には、AIの歴史、理論で述べた手書き数字認識のニューラルネットワークを「エクセル」と「電子工作」で実装した。これらによりニューラルネットワークが可視化され、その構造が容易に理解できるようになった。
これらのツールを通して分かったことは、ニューラルネットワークの「推論」は、その「学習データ」に依存していることである。また、本研究で実装したニューラルネットワークは、「数字」を2次元的なデータと処理せず、1次元的に処理をしていることも分かった(これについては、畳み込みニューラルネットワークという技術で解決できる)。これらのことは、ニューラルネットワークの推論は万能ではなく、それを作った際の学習データやニューラルネットワークの構造に依存することを意味する。したがって、私たちが使う学習データに偏りがあると、ニューラルネットワークはその学習データに基づいて偏った判断をしてしまうので、公平な判断を求めるには中立的なデータで学習させる必要がある。すなわち、本研究での2つの見える化のツールを使うことで、このようにニューラルネットワークの「学習」の問題点が明らかになったことから、本ツールはニューラルネットワークの機構を明らかにする能力を兼ね備えていると言える。
最後に、本研究で製作した2つのツールは、ニューラルネットワークの「推論」を見える化したものであった。今後、その「学習」の見える化も製作していく。
[この後、私は、「学習」の可視化の教材を作ることになります]
参考図書
研究成果
(1)AITサイエンス大賞 努力賞(2019.11.2)
(2)県専門高等学校生徒研究文 佳作(2019.11.19)

【本探究活動のまとめ】
この「課題研究」を通して、私自身が得られたことは、AIの「学習」に関しては、高校生には難しい点もあるが、「推論」に関しては、問題なく理解できると確信できたことでした。AIを扱った「課題研究」を初めて行ったものですが、信じられないほど、順調にうまく進めることができました。M君には、感謝です。
また、この「課題研究」は、冒頭で述べたように、特異な才能のある生徒へのものでした。私は、専門家ではないので(実際、国を挙げて現在取り組んでいるのですが)、こうすべきと断言することはできないのですが、この事例では、個別指導になりますが、生徒にあった課題を設定して興味や関心を高めることができたと考えています。
M君は、「課題研究成果論文集」で、以下のような感想を書いています。
課題研究をはじめるまで、この研究は絶対にしたくないと思っていましたが、今はこの課題研究で一番良かったと思っています。私は、通常の課題研究のほかに裏で県専門高等学校生研究文の制作を行っていました。私はプログラミングや電子工作に苦手意識はなく、とても楽しく作業と研究ができ、自分の知識がとても増えたと感じます。AITのポスターセッションで先生方にAIについて多く聞かれ、答えられない質問も多々あり、自分のAIに対する知識がいかに浅いかよくわかりました。後半に行った次期型の提案は模擬的ではありましたが、実際の開発に携わったように感じ、とてもいい経験ができたと思います。本格的に電子工作や論文を書いたのは初めてだったので、とてもいい経験ができ、また、AIなど様々な分野に触れ、学ぶことの楽しさを学びました。私はこの課題研究ができて本当に良かったと思います。
ここまで読んでくれて、ありがとうございます。次回(第28回)は、もう一人の特異な才能のある生徒の探究活動を紹介予定です。
ご質問・ご意見・ご感想等がありましたらコメントください。
テラオカ電子
【イチオシのYouTube動画】
このコーナでは、記事に関連する(関連しないかもしれません)気になるYouTube動画を紹介しています。今回は、「卒業」、「春」繋がりで、いきものがかりの『SAKURA』(2006)を紹介します。今年度も終わりますが、この曲を聴くと、今年もなんとかやってこれたと安堵します。
「いきものがかり 『SAKURA』Music Video」
【2024/03/10投稿】







