入力された値からIrisの種類を分類してみよう|Irisデータセット分類問題

本ページではこれまでに実装したすべてのコードを使ってIrisの運類問題をさせていきます。任意の4つの数字をニューラルネットワークに読み込ませ、花の種類を認識させることがExcel VBAにもできるのかを実際に体験してみましょう。

icon-warning 注意 

今回の内容は既にIrisデータセットが学習されていることが前提です。
まだの方はメインページの「ニューラルネットワーク作成編」を参考にニューラルネットワークの学習を行っておいてください。

 

メインモジュールの実装(追加)

学習時にも使っていた「Main」モジュールに推論用のコードを追加します。
(※新規のモジュールではないので注意)

以前作成した関数「Train」の下に関数「Classification_iris」を追記します
以下は関数「Classification_iris」の全コードです。

学習ではニューラルネットワーク内で順伝播と逆伝播を繰り返していましたが、推論では順伝播を1回行うだけです。最終的にSoftmax関数によって導き出される値(順伝播の最終出力)のうち一番大きな値をもつラベルが推論結果となります。

 

ニューラルネットワークによる推論

ニューラルネットワークに推論させるためにまずは4つの入力値を入力するエリアを作成します。
ここでは単純にExcelのワークシート状の特定のエリアに入力されている値を入力値とします。

前回、名前の変えた「Classification_iris」シート内にした画像のようなエリアを作成します。
左から順に「ガクの長さ / ガクの幅 / 花弁の長さ / 花弁の幅 / 花の種類」です。
また、上記のコード「Classification_iris」を実行するためのコマンドボタンも作成します。

左の4つのエリアにはそれぞれの入力値を入力します。
その後「Classification」ボタンを押すと「species」に結果が出力されるといった流れになります。

※「Irisデータセットを学習させてみようでやったとおり、学習後は「Parameters」というシートが出力されます。推論する際には「Parameters」シートが必要なので予め学習させておきましょう
 

初めは「test_iris」シートにあるデータのうち1つを抜き出して実行してみましょう。

入力した値に対して、出力された値(花の種類)が当たっていれば分類問題は成功です。
テスト用データをいくつか試してニューラルネットワークが正しいかを確かめてみてください。
おそらくほぼ100%の精度で答えが導き出されるはずです。

 

まとめ

今回はこれまでに実装したニューラルネットワークや関数を使って、ニューラルネットワークにIrisの識別をさせる方法を紹介しました。

ニューラルネットワークでの推論の方法をまとめると以下のとおりです。

① 4つの入力値を指定のエリア(A2:D2セル)に入力
② 学習済みシート「Parameters」を用意
③ Mainモジュールの「Sub Classification_iris」を実行
④ ニューラルネットワークに①の値を読み込ませる
⑤ 推論結果が指定のエリア(E2セル)に出力される

今回のIris分類問題はこれまでもちょこちょこいっていましたが、ニューラルネットワークを使うほど難しい問題ではありません。

そのため、学習結果を見てももあまり「すごい!」とならない人が多いと思います。

そういった方には、もう1レベル上ランクの「MNIST学習で文字認識」をお勧めします。
基本的には今回作成したニューラルネットワークの構造と同じですが、ニューロンの数や扱うデータ数が一気に増えます。学習時間も数時間はかかるかなり本格的なニューラルネットを構築していくので興味のある方は合わせて学習してみて下さい。
 

【前回】Irisデータセットを学習させてみよう
メインページ
 

 icon-book 参考書籍

2021年6月13日AI, Deep Learning, Excel, VBA

Posted by Lic