現在、387個の機能と3000個のサンプルを含むデータセットのnnを作成しています。出力は3つのクラスです。ネットワーク構造を次のように構成しました。
入力-> 200-> {300-> 100}-> 50->出力
正しい数のノードとレイヤーを選択しましたか?各レイヤーのノード数(入力、非表示、出力)を決定する方法は?ルールはありますか?
ルール?好きなだけ、どれも。 Neural Network FAQ からの抜粋です。これは基本的な質問について相談するのに適したページです。
A:隠しユニットをいくつ使用する必要がありますか? ==========================================
入力と出力の数だけから適切なネットワークトポロジを決定する方法はありません。トレーニングの例の数と、学習しようとしている分類の複雑さに大きく依存します。 1つの入力と1つの出力には数百万の隠れユニットが必要であり、100万の入力と100万の出力には1つの隠れユニットのみが必要であるか、まったく必要ないという問題があります。
一部の書籍や記事では、トポロジーを選択するための「経験則」を提供しています-Ninputs + Noutputsを2で割ったもの、おそらく正方形そこのどこかにルート-が、そのようなルールは完全なゴミです。他のルールは、使用可能なサンプルの数に関係します。ネットワーク内の重みの数10がサンプルの数よりも少ない、多くの隠されたユニットを使用します。このようなルールは、過剰適合にのみ関係し、同様に信頼性が低くなります。
ただし、あなたの場合、ネットワークは非常に複雑すぎると断言できます(強力な正則化を適用した場合でも)。なぜ非常に多くの隠れ層があるのですか?深層学習の幸福感にもかかわらず、1つの隠れ層から始め、最小限の隠れノードから始めます。良好なパフォーマンスが得られるまで、非表示ノードの数を増やします。そうでない場合にのみ、さらにレイヤーを追加します。さらに、相互検証と適切な正則化を使用します。
モントリオール学習アルゴリズム研究所所長ヨシュア・ベンジオ 備考 :
"非常にシンプル。テストエラーが改善されなくなるまでレイヤーを追加し続けるだけです。"
Geoff Hintonが推奨する方法は、トレーニングセットをオーバーフィットし始めるまでレイヤーを追加することです。次に、ドロップアウトまたは別の正規化メソッドを追加します。
あなたのタスク:
彼らが言ったように、Neural Networkの隠されたレイヤーとノードの数を計算する「魔法の」ルールはありませんが、最適なものを見つけるのに役立ついくつかのヒントや推奨事項があります。
非表示ノードの数は、次の関係に基づいています。
エラーを最小限に抑え、適切に一般化されたトレーニング済みのネットワークを使用するには、最適な数の非表示層と、各非表示層のノードを選択する必要があります。
ノードが少なすぎると、予測因子が複雑すぎて少数のノードではキャプチャできないため、システムのエラーが大きくなります。
ノードが多すぎると、トレーニングデータに過剰適合し、うまく一般化されません。
このページで一般的なアドバイスを見つけることができます:
データが直線的に分離可能な場合、非表示のレイヤーはまったく必要ありません。それ以外の場合、追加の隠しレイヤーを追加することによるパフォーマンスの違いについてコンセンサスがあります。2番目(または3番目など)の隠しレイヤーでパフォーマンスが向上する状況は非常に小さいです。したがって、大多数の問題には1つの隠れ層で十分です。
経験的に導出された経験則がいくつかありますが、最も一般的に依存されるのは、「隠れ層の最適なサイズは通常、入力層のサイズと出力層のサイズの間です」です。
要するに、ほとんどの問題では、たった2つのルールを使用して非表示レイヤー構成を設定することで、おそらく適切なパフォーマンスを得ることができます。