【DeepLearning】Excel VBAでニューラルネットワークを再現|Irisデータセット分類問題

このぺージでは機械学習の代表的なデータセットである「Irisデータセット」を使って、ディープラニングを行なっていきます。
(ディープラーニングの狭義としてニューラルネットワーク内のレイヤ(層)が4つ以上という場合もありますが、ここでは広い意味でとらえ4層以下の場合でもディープラーニングとしています)

本来、今回やる「Iris分類問題」はわざわざディープラーニングを行うほど難しい問題ではありませんが、あえてこの簡単な問題を扱うことでディープラーニングについて簡単に理解することができます。

ただ、簡単とはいってもディープラーニングの仕組みは初学者の人にとっては複雑です。
下記ページでニューラルネットワークの流れについて理解しておいた方が、本ページの内容をより理解できるので先に一読しておくことをオススメします。

Excel関数で学ぶニューラルネットワーク(順伝播編)
Excel関数で学ぶニューラルネットワーク(逆伝播編)

 

完成イメージ

本ページの内容をすべて行うことで以下gif画像のように、
ガクの長さ(sepal_length)、ガクの幅(sepal_width)、花弁の長さ(Petal_length) 、花弁の幅(petal_width)の4つの値からアヤメ(Iris)の種類を分類することが可能になります。

分類するアヤメの種類は『Setosa』『Versicolor』『Virginica』の3種です。

Irisデータセットを使った分類問題は機械学習の基礎問題です。
そのため、ディープラーニング以外にも「k最近傍法」「ロジスティック回帰」「サポートベクターマシン(SVC)」「ランダムフォレスト」などの様々の手法での機械学習を行うことができます。興味のある方はぜひ例に挙げたようなアルゴリズムについても調べてみて下さい。

 

ニューラルネットワークの構造

まずは今回作成していくニューラルネットワークの構造を記しておきます。

入力層: 1層 (ニューロン 4個)
隠れ層: 1層 (ニューロン 3個)
出力層: 1層 (ニューロン 3個)

隠れ層の活性化関数: ReLU (Sigmoidも実装)
出力層の活性化関数: Softmax
損失関数: 交差エントロピー
学習データ: Irisデータセット

正解ラベルは「one-hot表現」とし、VBAの配列使って表していきます。
正解が「1(Setosa)」の場合は「t(1,0,0)」
正解が「2(Versicolor)」の場合は「t(0,1,0)」
正解が「3(Virginica)」の場合は「t(0,0,1)」となっています。

 

ニューラルネットワーク作成編

ここからExcel VBAで実際にニューラルネットワークを作成していきます。Pythonの「Numpy」や「Class」の代わりにVBAでは「(1次元)配列」「2次元配列」「クラスモジュール」を多用します。ニューラルネットワークの内容だけでも複雑なので、それぞれの使い方をある程度理解してから進めることをオススメます。
 

1. Irisデータセットのダウンロード
2. Irisデータの前処理
3. Functionsモジュールの実装
4. Affineレイヤの実装
5. ReLUレイヤの実装
6. Sigmoidレイヤの実装

 

 

参考書籍

2021年2月3日AI, Deep Learning, Excel, VBA

Posted by Lic