機械学習

ニューラルネットワークで行列の積を利用してみた

ニューラルネットワークのフォワードプロパゲーションやバックプロパゲーションで、行列の積を利用すると、計算をシンプルにできる。

今回は、ニューラルネットワークで行列の積を利用してみたので、そのサンプルプログラムを共有する。

前提条件

以下の記事の実装が完了していること。

ニューラルネットワークのバックプロパゲーションを実装してみた 以下の記事で、バックプロパゲーション(最急降下法を用いて、ニューラルネットワークの誤差を効率的に逆伝播させる手法)により、重み\(\...

今回実装するニューラルネットワークの全体構成は、以下のようになる。
ニューラルネットワーク

また、重み\(\boldsymbol w\)の最適解は、下図における誤差関数\(E=(x_3 – y)^2\)が最小となる箇所で、これは誤差関数を(桃枠の)各変数について偏微分した結果が\(0\)になる値となる。
ニューラルネットワークの誤差関数



削除または保存していないWordドキュメントの復元方法【4DDiG Windowsデータ復元】ワード(Word)データ等のファイルを誤って削除してしまった場合は、通常はデータの復元ができませんが、4DDiGというソフトウェアを利用...

このうち、単一ニューロンを実装した内容は以下の通りで、前提条件の記事のフォワードプロパゲーションを行うメソッド(forward)で、行列の積を利用している。

また、ニューラルネットワークを実装した内容は以下の通りで、前提条件の記事のバックプロパゲーションを行うメソッド(back)で、行列の積を利用している。

なお、backメソッドで利用している重みwの各変数の偏微分については、以下の記事を参照のこと。

ニューラルネットワークの誤差関数の微分を計算してみた 以下の記事で、ニューラルネットワークのフォワードプロパゲーションによる出力値\(y\)を算出してきたが、その際、重み\(\bolds...

さらに、先ほどのニューラルネットワークを呼び出した結果は以下の通りで、出力結果\(y\)は、入力値\(x_0=x_1=0\)または\(x_0=x_1=1\)の場合に\(0\)に近く、そうでない場合は\(1\)に近いことが確認できる。 また、dwの最終結果も、それぞれ\(0\)に近づいていることが確認できる。

ニューラルネットワークの呼び出し

要点まとめ

  • ニューラルネットワークのフォワードプロパゲーションやバックプロパゲーションで、行列の積を利用すると、計算をシンプルにできる。