機械学習

Kerasを用いたニューラルネットワークの処理速度を改善してみた

ニューラルネットワークの構造や活性化関数、損失(誤差)関数、最適化関数を変えることで、正答率や処理速度を向上させることができる。

今回は、以前作成したKerasを用いたニューラルネットワークの構造・活性化関数・最適化関数を変更してみたので、そのサンプルプログラムを共有する。

前提条件

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

ニューラルネットワークにKerasを利用してみた これまでは、ニューラルネットワークを自前で作成していたが、TensorflowやKeras、PyTorchといった、深層学習のフレー...

修正内容

ニューラルネットワークの構造・活性化関数は、以下のように変更している。

<修正前>
ニューラルネットワーク(修正前)

<修正後>
ニューラルネットワーク(修正後)

なお、ニューラルネットワークの中間層の活性化関数に「ReLU関数」を用いると、勾配が0に近くなり学習が進まなくなる「勾配消失問題」が発生しにくくなる。

「ReLU関数」の詳細については、以下のサイトを参照のこと。

ReLU関数とその微分をグラフ化してみた 以下の式で表現される関数をReLU関数といい、ディープラーニングの活性化関数の1つとして利用される。 \[ \begin{eqn...

また、損失(誤差)関数は、確率的勾配(最急)降下法(SGD)から、現在多く用いられているAdamに変更している。Adamの詳細については、以下のサイトを参照のこと。
https://chefyushima.com/ai-ml_optimizer/2799/



サンプルプログラムの作成と実行

ニューラルネットワークの構造や活性化関数、損失(誤差)関数、最適化関数を修正後のサンプルプログラムの内容は、以下の通り。

上記サンプルプログラムの最終実行結果は以下の通りで、繰り返し回数\(1,000\)回で、出力結果\(y\)は、入力値\(x_0=x_1=0\)または\(x_0=x_1=1\)の場合に\(0\)に近く、そうでない場合は\(1\)に近いことが確認できる。
サンプルプログラムの実行結果(修正後)

ちなみに、ニューラルネットワークの構造や活性化関数、損失(誤差)関数、最適化関数を修正前の最終実行結果は以下の通りで、繰り返し回数が\(10,000\)回だったことが確認できる。
サンプルプログラムの実行結果(修正前)

要点まとめ

  • ニューラルネットワークの構造や活性化関数、損失(誤差)関数、最適化関数を変えることで、正答率や処理速度を向上させることができる。