web-dev-qa-db-ja.com

ニューラルネットワークの層とノードの数を決定する方法

現在、387個の機能と3000個のサンプルを含むデータセットのnnを作成しています。出力は3つのクラスです。ネットワーク構造を次のように構成しました。

入力-> 200-> {300-> 100}-> 50->出力

正しい数のノードとレイヤーを選択しましたか?各レイヤーのノード数(入力、非表示、出力)を決定する方法は?ルールはありますか?

17
SimpleDreamful

ルール?好きなだけ、どれも。 Neural Network FAQ からの抜粋です。これは基本的な質問について相談するのに適したページです。

  1. A:隠しユニットをいくつ使用する必要がありますか? ==========================================

    入力と出力の数だけから適切なネットワークトポロジを決定する方法はありません。トレーニングの例の数と、学習しようとしている分類の複雑さに大きく依存します。 1つの入力と1つの出力には数百万の隠れユニットが必要であり、100万の入力と100万の出力には1つの隠れユニットのみが必要であるか、まったく必要ないという問題があります。
    一部の書籍や記事では、トポロジーを選択するための「経験則」を提供しています-Ninputs + Noutputsを2で割ったもの、おそらく正方形そこのどこかにルート-が、そのようなルールは完全なゴミです。他のルールは、使用可能なサンプルの数に関係します。ネットワーク内の重みの数10がサンプルの数よりも少ない、多くの隠されたユニットを使用します。このようなルールは、過剰適合にのみ関係し、同様に信頼性が低くなります。

ただし、あなたの場合、ネットワークは非常に複雑すぎると断言できます(強力な正則化を適用した場合でも)。なぜ非常に多くの隠れ層があるのですか?深層学習の幸福感にもかかわらず、1つの隠れ層から始め、最小限の隠れノードから始めます。良好なパフォーマンスが得られるまで、非表示ノードの数を増やします。そうでない場合にのみ、さらにレイヤーを追加します。さらに、相互検証と適切な正則化を使用します。

14
davidhigh

レイヤー

モントリオール学習アルゴリズム研究所所長ヨシュア・ベンジオ 備考

"非常にシンプル。テストエラーが改善されなくなるまでレイヤーを追加し続けるだけです。"

Geoff Hintonが推奨する方法は、トレーニングセットをオーバーフィットし始めるまでレイヤーを追加することです。次に、ドロップアウトまたは別の正規化メソッドを追加します。

ノード

あなたのタスク:

  • 入力レイヤーには、各フィーチャの387ノードが含まれている必要があります。
  • 出力レイヤーには、クラスごとに3つのノードが含まれている必要があります。
  • 隠しレイヤー各レイヤー内のニューロンの数を徐々に減らすと、非常にうまく機能します( このヒントとコツのリスト 圧縮タスク用の自動エンコーダーを作成するときにこれに同意します。おそらく、最初の隠しレイヤーで200を試し、2番目のレイヤーで100を試してください。繰り返しますが、これは最適化されるハイパーパラメーターであり、データセットのサイズに大きく依存します。
23
andyandy

彼らが言ったように、Neural Networkの隠されたレイヤーとノードの数を計算する「魔法の」ルールはありませんが、最適なものを見つけるのに役立ついくつかのヒントや推奨事項があります。

非表示ノードの数は、次の関係に基づいています。

  • 入力ノードと出力ノードの数
  • 利用可能なトレーニングデータの量
  • 学習しようとしている機能の複雑さ
  • トレーニングアルゴリズム

エラーを最小限に抑え、適切に一般化されたトレーニング済みのネットワークを使用するには、最適な数の非表示層と、各非表示層のノードを選択する必要があります。

  • ノードが少なすぎると、予測因子が複雑すぎて少数のノードではキャプチャできないため、システムのエラーが大きくなります。

  • ノードが多すぎると、トレーニングデータに過剰適合し、うまく一般化されません。

このページで一般的なアドバイスを見つけることができます:

セクション-隠しユニットをいくつ使用する必要がありますか?

データが直線的に分離可能な場合、非表示のレイヤーはまったく必要ありません。それ以外の場合、追加の隠しレイヤーを追加することによるパフォーマンスの違いについてコンセンサスがあります。2番目(または3番目など)の隠しレイヤーでパフォーマンスが向上する状況は非常に小さいです。したがって、大多数の問題には1つの隠れ層で十分です。

経験的に導出された経験則がいくつかありますが、最も一般的に依存されるのは、「隠れ層の最適なサイズは通常、入力層のサイズと出力層のサイズの間です」です。

要するに、ほとんどの問題では、たった2つのルールを使用して非表示レイヤー構成を設定することで、おそらく適切なパフォーマンスを得ることができます。

  • 隠れ層の数は1に等しい
  • その層のニューロンの数は、入力層と出力層のニューロンの平均です。
3
omotto