質問: 現在C言語で入力層5,中間層3,出力層5のニューラルネットワークを作成しました. また,学習時に用いる学習データが20セットあります. 20セットの学習データを用いて,作成したニューラルネットワークに学習させると,20セットのデータの出力はそれぞれの教師データに近くなるはずですが,どの学習データもある一つの値になってしまいます(それぞれの教師データの値に近くならない). あらゆる値を表現できないのだと考え,中間層の数を10や20に変えるとより,それぞれの教師データに近い値が出るようになりました. 昔,誰かに学習データ数が少ない時は素子数の数はあまり増やしては行けないと言われました. (連立方程式で考えると,未知の変数が2つある場合は,式の数も2つ必要であるということです) これって,正しいのですか? 中間層を増やすなら学習データも増やさなきゃですか? 些細なことでもいいのでどなたか教えていただけたら幸いです. よろしくお願いします!!
回答: > > (連立方程式で考えると,未知の変数が2つある場合は,式の数も2つ必要であるということです) > > これって,正しいのですか? > > > ニューラルネットワークの損失関数の最小化は勾配法で行うため、連立方程式を立てて解析的に解いてるわけではありません。 > > 昔,誰かに学習データ数が少ない時は素子数の数はあまり増やしては行けないと言われました. > > > 学習データに対してパラメータが多すぎると過学習する傾向があるので、その認識は合っています。しかし、逆にパラメータが少なすぎるとデータの特徴を捉えきれず、これも精度が出ないパターンになります。 この値は問題設定によるので、適当に変えながら、精度が出る値に調整してあげてください。