ITエンジニア科・情報処理科の小原です。
昨日と本日にかけて「人工知能・機械学習講座」に参加してきました。ニューラルネットワークをkeras(テンソルフロー)やIBMのサービスであるWatsonを使って実装したり、深層学習(ディープラーニング)を使って「気象情報と電力供給データを用いた電力消費量予測」、「手書き数字の認識モデル」、「動物の画像認識」などを経験してきました。ニューラルネットワークも、微分をシグモイド関数自身を使って簡単に書けるシグモイド関数を使った「シグモイドパーセプトロン」だけでなく、ReLU(ランプ関数)やSoftmax(多出力に拡張したシグモイド関数)を用いた多段階のニューラルネットを経験しました。
専門用語や背景知識に若干難しい部分はありますが、手順通りに実装すると比較的短いプログラムで消費電力量予測のグラフが描けたり、犬と猫を分類する画像認識システムが作れたりします。モデルの拡張も、とても簡単に実装することができました。例えば、消費電力量の予測では、最初のモデルは「気温と電力の関係」でスコア0.4程度の結果だったものが、最終的には「気温、日照時間、時刻、月、曜日から電力を予測」するモデルに拡張してスコア0.73程度に向上しました。(電力使用量に影響する残りの2割強の要素は何だろう?)
画像認識のモデルでは、学習済みモデル(VGG16)を利用した犬と猫の画像を見分けるプログラムを作成しました。サンプル画像では、「0.98(98%)ネコである」「0.99(99%)malamute(イヌ)である」と判定されました。イヌとネコでは感動しないかもしれませんが、それでも個人的には、シベリアンハスキーとマラミュートの違いは分かりづらいと思います。妻によると「シベリアンハスキーは強そうでカッコイイ、マラミュートは優しい顔でとてもカワイイ(でもちょっと大きい)、一目見てすぐにわからないのはおかしい」らしいです。(左がシベリアンハスキー、右がマラミュート)
出典: https://pixabay.com/ja/photos/
演習の最後に少し時間に余裕があったので、プログラムを多少改造して「サンプル以外のイヌの画像」「黄色いイヌのゆるキャラ」「はりねずみ」をデータとして与えてみたところ、「イヌの画像」は横向きでも逆向きでも概ね0.99でしたが、「イヌのゆるキャラ」は0.55位で「スクリューキャップ」や「消火シート」となってしまいました。「ハリネズミ」はKerasで実装したものとWatosonで実装したもので試したところ、どちらも「犬でも猫でもない」とは認識しましたが、(どちらも同じデータで学習した同一モデルのはずなのですが)、Kerasでは「はりねずみ」Watsonでは「ヤマアラシ」と判定結果が分かれてしまいました。