(第3回)エクセルを使って機械学習
エクセルを使って、機械学習をしてみます。
2つのどちらかが正しいか?決めておいて、更新をする度に数値が更新されて、正解に近づく様子をエクセルで計算します。
非常に簡単な内容ですが、入力値のどちらが正解かを設定して、計算させることで、パラメーターが変化する様子がわかります。
最後の「学習率と計算回数」を実感できるようにエクセルを作成しました。
*)エクセルは一部正しくない場合がありますがご了承ください。
ニューラルネットワークの構造
<構造>
以下の構造のニューラルネットワークの構造で、第1層は「シグモイド関数」、第2層は「ソフトマックス関数」の出力で計算させます

0.初期パラメーター
入力・第1層・第2層の出力は、最初のパラメーターは適当に入力する必要があります。そこで、エクセルのRND()関数をつかって、初期パラメーター を準備しておきます。

1.順伝播
まず、リセットを押して、初期パラメーターを順伝播の初期パラメーターとして設定します。(マクロでコピペされるだけ)
更新を押すと、正解の方のソフトマックスの値が1に近づいていきます。(ピンクの枠線)ここで重要なのは、赤枠のパラメーターが変更されている点です。
このパラメーターが入力に対する正解を導くために重要で、機械学習の目的でもあります。
このパラメーターが正しければ、入力に対する正解を得られますが、間違っていると、間違えた出力になります。

次に入力~出力の説明をします。
- [入力]:x1=1,x2=0のように入力します。(どちらかが正解)
- [第1層]:パラメーターと入力から、第1層の出力を計算します。行列計算をしてシグモイド関数で計算しています。
- [第2層]:パラメーターと第1層から、第2層の出力を計算します。行列計算をしてソフトマックス関数で計算しています。
- [出力]:z1=1,z2=0のように、設定した正解がどちらか判断します。(1が正解)
- [正解]:どちらかに設定します。0はz1が正解。1はz2が正解としています。
- [学習率]:更新をしたときに、どのくらいパラメータを変更するか決めます。
2.逆伝播
自分で決めた正解と現在のパラメーターを計算して出力した、第2層のソフトマックスの数値が近ければ正解ですが、ランダムのパラメーターの
状態では、大きく違いがあります。
逆伝播を行い、少しずつ正解に近づけるので、誤差(正解と2層のソフトマックスの出力の差異)から、第1層のシグモイドの数値を計算します。
これが逆方向なので「誤差逆伝播法」となります。 (「バックプロパゲーション (Backpropagation)」とも言う)
パラメーターは3つありますが、一番上は、順伝播のコピー。真ん中が逆伝播した結果。一番下が、学習率を計算した結果となります。
[更新]ボタンを押すと、一番したのパラメーターを順伝播の方へコピーされるので、少しずつ正解に近づきます。

学習率と計算回数
このエクセルの計算は、正しさよりも学習率と計算回数を実感するために作っています。
学習率を変更して計算回数によって「1に近づく速さ」が変わることがわかります。
学習率を最大の1にすると一度学習率が下がっている時がありますが、過学習的な状態なのかもしれません。
以下の図がそのグラフです

以下のファイルをダウンロードしてマクロを有効にすると確認できます。
信号伝達計算.xlsm
*)このエクセルマクロは正しくない箇所があるかもしれませんがご了承ください。
-------------
