108

10個の固有ベクトルがある場合、入力層に10個のニューラルノードを持つことができます.5つの出力クラスがある場合、出力層に5個のノードを持つことができます.しかし、MLPの隠れ層の数とニューラル数を選択する基準は何ですか? 1つの隠れ層のノード?

4

4 に答える 4

224

隠しレイヤーはいくつですか?

隠れ層がゼロのモデルは、線形分離可能データを解決します。したがって、データが線形分離可能でないことをすでに知っていない限り、これを検証することは問題ありません。タスクが必要とするよりも複雑なモデルを使用するのはなぜですか。線形分離可能である場合は、より単純な手法が機能しますが、パーセプトロンも同様に機能します。

データが非線形手法による分離を必要とすると仮定すると、常に1つの隠れ層から開始します。ほぼ間違いなく、必要なのはそれだけです。MLPを使用してデータを分離できる場合、そのMLPにはおそらく単一の隠れ層のみが必要です。これには理論的な正当性がありますが、私の理由は純粋に経験的なものです。多くの難しい分類/回帰の問題は、単一の非表示層MLPを使用して解決されますが、データのモデル化に成功した複数の非表示層MLPに遭遇したことを覚えていません。 -ML掲示板、ML教科書、学術論文などにあるかどうか。確かに存在しますが、それらの使用を正当化する状況は経験的に非常にまれです。


隠れ層にはいくつのノードがありますか?

MLPの学術文献から。私自身の経験など、私はいくつかの経験則(RoT)を収集し、それらに依存することがよくあります。また、信頼できるガイドであることがわかりました(つまり、ガイダンスは正確でしたが、そうでない場合でも、通常、次に何をすべきかが明確でした):

収束の改善に基づくRoT :

モデルの構築を開始するときは、隠れ層のノードが多い側でエラーが発生します。

なんで?まず、隠れ層にあるいくつかの余分なノードは、害を及ぼす可能性はほとんどありません。MLPは引き続き収束します。一方、隠れ層のノードが少なすぎると、収束が妨げられる可能性があります。このように考えると、ノードを追加すると、いくらかの過剰な容量が提供されます。つまり、反復(トレーニングまたはモデル構築)中にネットワークに信号を保存/解放するための追加の重みがあります。次に、非表示レイヤーに追加のノードを追加する場合、後で(反復の進行中に)それらを簡単に削除できます。これは一般的であり、あなたを支援する診断技術があります(例えば、重み行列の単なる視覚的描写であるヒントン図、重み値の「ヒートマップ」)。

入力層のサイズと出力層のサイズに基づくRoT :

経験則では、この[非表示]レイヤーのサイズは、入力レイヤーのサイズ...と出力レイヤーのサイズ...の間のどこかになります。

非表示ノードの数を計算するには、次の一般的なルールを使用します:(入力+出力の数)x 2/3

主成分に基づくRoT :

通常、入力データセットの分散の70〜90%をキャプチャするために必要な次元[主成分]と同じ数の非表示ノードを指定します

それでも、NN FAQの作成者は、トレーニングインスタンスの数、ターゲットのノイズ(応答変数の値)、および機能空間の複雑さを無視するため、これらのルールを(文字通り)「ナンセンス」と呼んでいます。

彼の見解では(そして彼は彼が話していることを知っているように常に見えました)、MLPに何らかの正則化が含まれているか、早期停止が含まれているかに基づいて、隠れ層のニューロンの数を選択します

隠れ層のニューロン数を最適化するための唯一の有効な手法:

モデルの構築中に、執拗にテストします。テストにより、「正しくない」ネットワークアーキテクチャのシグネチャが明らかになります。たとえば、少数のノードで構成される隠れ層を持つMLPから始める場合(テスト結果に基づいて、必要に応じて徐々に増加します)、バイアスと不適合が原因で、トレーニングと汎化誤差の両方が高くなります。

次に、汎化誤差が増加し始めるまで、隠れ層のノードの数を一度に1つずつ増やします。今回は、過剰適合と高い分散が原因です。


実際には、私はそれを次のように行います。

入力層:データバクターのサイズ(モデル内の特徴の数)+バイアスノードの場合は1、もちろん応答変数は含まれません

出力層:私のモデルによって決定されたsoley:回帰(1ノード)対分類(softmaxを想定した場合のクラス数に相当するノード数)

隠しレイヤー最初に、1つの隠しレイヤー入力層のサイズに等しいノードの数で。「理想的な」サイズは、大きいよりも小さい(つまり、入力層の数と出力層の数の間のノードの数)可能性が高くなります。これも経験的な観察であり、バルクです。この観察の私自身の経験です。プロジェクトが必要な追加時間を正当化する場合は、少数のノードで構成される単一の隠れ層から始め、次に(上記で説明したように)一般化を計算しながら、一度に1つずつ隠れ層にノードを追加します。エラー、トレーニングエラー、バイアス、および分散。汎化誤差が減少し、再び増加し始める直前に、その時点でのノードの数が私の選択です。下の図を参照してください。

ここに画像の説明を入力してください

于 2012-05-13T02:44:36.913 に答える
2

隠れ層のニューロンの数を選択すること、およびニューラル ネットワークの隠れ層の数を選択することは非常に困難です。

通常、ほとんどのアプリケーションでは、1 つの隠れ層で十分です。また、その隠れ層のニューロンの数は、入力数 (この例では 10) と出力数 (この例では 5) の間にある必要があります。

しかし、ニューロンと隠れ層の数を選択する最善の方法は実験です。さまざまな数の隠れ層と隠れニューロンを使用して複数のニューラル ネットワークに学習させ、交差検証を使用してこれらのネットワークのパフォーマンスを測定します。最高のパフォーマンスを発揮するネットワークを生み出す数値に固執することができます。

于 2012-05-12T17:31:25.820 に答える
2

最適な層数と各層の最適なニューロン数の選択を自動化するには、遺伝的最適化を使用できます。

重要な部分は次のとおりです。

  1. 染色体: 各隠れ層のユニット数を定義するベクトル (例: [20,5,1,0,0] は、最初の隠れ層で 20 単位、2 番目の層で 5 単位、...、層 4 と 5 が欠落していることを意味します)。試行するレイヤーの最大数と、各レイヤーの最大ユニット数に制限を設定できます。また、染色体の生成方法にも制限を設ける必要があります。たとえば、[10, 0, 3, ... ] は生成されるべきではありません。欠落しているレイヤー (「3,...」) の後のユニットは無関係であり、評価サイクルが無駄になるためです。
  2. フィットネス関数: 特定の染色体によって定義されたネットワークの交差検証セットで最小のトレーニング エラーの逆数を返す関数。「最小/最速かつ最も正確なネットワーク」を見つけたい場合は、合計ユニット数または計算時間を含めることもできます。

次のことも検討できます。

  • プルーニング: 大規模なネットワークから開始し、クロス検証セットのパフォーマンスを追跡しながら、レイヤーと隠れユニットを減らします。
  • 成長: 非常に小さなネットワークから始めて、ユニットとレイヤーを追加し、再び CV セットのパフォーマンスを追跡します。
于 2016-02-03T18:57:47.757 に答える