こんにちは、ヒガシです。
※今回の記事は、前回の続きの立ち位置です。
前回記事を見ていない方はまずは前回記事から見ていただけると幸いです。
【AI】MLPモデルの重み、バイアスをcsvファイルに出力する方法!
今回は、前回取得したMLPモデルの重みとバイアスのcsvファイルを使って、ニューラルネットワークの計算をエクセルの関数のみで再現してみようと思います。
VBAなんかのスキルも一切使いませんのでご安心ください。
それではさっそくやっていきましょう。
前回記事の簡単なおさらい
まずは前回やったことを簡単にご紹介しておきます。
前回は、MLPモデルが保有する各層の「重み」と「バイアス」のデータを以下の画像のようにcsvファイルに出力する方法をご紹介しました。
csvファイルの中身はこんな感じです。
ここまでが前回の内容です。
今回はこのcsvファイルを使って、元のMLPモデルがやっているニューラルネットワークの計算をエクセル上で再現してみようと思います。
最近よく聞くAI。実際ニューラルネットワークってどうやって計算してるの?
っていう方にとって非常に勉強になる内容だと思います。
それでは本題に入っていきましょう。
エクセルでニューラルネットワーク計算を再現する方法
まず始めに、今回エクセルで再現するAIモデルは入力が4つのモデルになっています。
ですのでまずは入力データを指定する場所を4つ確保しておきましょう。
とりあえずこんな感じですね。
ここからがニューラルネットワークの計算に入ります。
次は前回の記事で取得したL1W.csvとL2B.csvを開き、先ほどのインプットデータの下に張り付けます。
そして張り付けたら以下の画像のように行列の積と和を計算していきます。計算のやりかたは数式欄をご覧ください。左端のセルを計算すればあとは右方向にコピーでOKです。
※行列の積はMMULT関数で再現できます。使い方は以下の記事を参照ください。
【エクセル】行列の積を一発算出する方法!VBAへの組み込み方法まで!
上記画像のL1_Pと書いてある部分が第1層目のニューロンの計算結果になります。
つまりここまでで、ニューラルネットワークの第1層目の計算が完了したことになります。
続いて第2層目の計算に入ります。
先ほどと同様にL1_Pの下にL2W.csv, L2B.csvを張り付けます。
張り付けたら第1層目と同様に行列の積と和を計算します。
これで第2層目の計算が完了します。
お気づきの方も多いと思いますが、先ほどのL1W.csvとL2W.csvは行列の大きさが異なっていることがわかると思います。
AIモデルの内部パラメータはこんな感じで行列計算が問題なくできる大きさに自動で調整されているんです。
最後の出力層の計算に入ります。
ここまでくれば説明は不要でしょう。
やることはここまでと同じで、以下の画像の通りです。
今回のAIモデルの出力数は1ですので、最終結果は一つの数値になっていますね。
この最終結果の数値こそが、最初に指定した入力が入った時のAIモデルの出力ということです。
複雑そうに思えるかもしれませんが、ニューラルネットワークの計算は行列の積と和ですので、こんな感じでエクセルだけでも再現できるというわけですね。
エクセルAIモデルの計算精度確認
前提として、今回使用した重みとバイアスはすでにあるデータを再現できるように学習が完了しているものになります。
ですので、今回構築したエクセル上のAIモデルでも問題なく精度が出せているか確認してみましょう。
以下のデータは今回のAIモデルを構築する際に使用した教師データの一部になります。
x1~x4を先ほどのエクセルAIに入れたときに、出てくる結果がbase_y(つまり正解のデータ)をどのくらいの精度で予測できているか確認してみます。
結果は以下の通りです。
当然、多少の誤差はありますが、ほぼ正確に正解データを予測できていることが確認できました。
おわりに
というわけで今回はエクセルを使ってニューラルネットワークの計算を再現する方法をご紹介しました。
ニューラルネットワークと聞くと「難しそう」と身構えてしまう方も多いと思いますが、身近なエクセルでも実は再現できるんです。
ぜひあなたの周りのAI初学者にも、このページをご紹介していただけると嬉しいです。
このように、私のブログでは様々なスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村
それではまた!
Follow @HigashiSalary
コメント