HOME > natural science Laboratory > コンピュータ・シミュレーション講座 > ゼロから作るDeep Learning

【ニューラルネットワークの基礎研究】
層数やユニット数による学習結果の違いについて1(1変数の2次関数)の続き3

文責:遠藤 理平 (2018年4月 5日) カテゴリ:ゼロから作るDeep Learning(40)

ニューラルネットワークを勉強した後に、実際の系を学習させる際に問題になるのがネットワークの構造です。 最初から複雑な系にてどのような構造が全く検討がつかないので、本稿では最も簡単な1変数関数を用意し、実際に様々なニューラルネットワーク構造で試してみます。 学習回数に対する損失値をグラフ化して学習効果を確かめます。
層数やユニット数による学習結果の違いについて1(1変数の2次関数)の続き2の続きで、念のために上に凸の2次関数を学習させます。

ニューラルネットワークの基本パラメータ

・ニューラルネットワークの構造:順伝播型ニューラルネットワーク(FFNN)
・学習方法:通常の勾配法(学習率固定、逆誤差伝搬法)
・学習率:eta = 0.01;
・ミニバッチ数:100 (サンプルは無限に用意できるためミニバッチという概念は存在しませんが、ランダムに用意したミニバッチ数分のサンプルに対する平均を用いて学習を進める)
・活性化関数(中間層):ReLU(ランプ関数)
・活性化関数(出力層):恒等関数
・損失関数:2乗和
※独立したネットワークを10個用意してそれぞれ個別に学習させて、学習効果の高かった上位5つの「学習回数」vs「損失値」をグラフ化します。
参考ページ

学習対象関数

f(x) = -4(x-0.5)^2 +1


※後述する「1-200-1」ネットワークで学習した2次関数(学習回数100000回)
線が学習対象関数、点がネットワークで計算した

「1-N-1」型のニューラルネットワーク(中間層数:1)

1-10-1

1-50-1

1-100-1

1-200-1

1-500-1

考察

・結果はほとんど下に凸の2次関数と変わらないことが確認できた。

プログラムソース(C++)

http://www.natural-science.or.jp/files/NN/FFNNs_epoch_Functions.zip
※VisualStudio2017のソルーションファイルです。GCC(MinGW)でも動作確認しています。



▲このページのトップNPO法人 natural science トップ

関連記事

ゼロから作るDeep Learning







▲このページのトップNPO法人 natural science トップ