web-dev-qa-db-ja.com

多層パーセプトロン(MLP)アーキテクチャ:隠れ層の数と隠れ層のサイズを選択するための基準?

10個の固有ベクトルがある場合、入力層に10個のニューラルノードを持つことができます5個の出力クラスがある場合、出力層に5個のノードを持つことができますが、MLPの非表示層の数とニューラルネットワーク1つの非表示層のノード?

96
Abhishek kumar

いくつの隠れ層

zeroの非表示層を持つモデルは、線形に分離可能なデータを解決します。したがって、データが線形分離可能ではないことが既にわかっている場合を除き、これを検証しても問題はありません。タスクが必要とするよりも複雑なモデルを使用する理由は何でしょうか。線形に分離できる場合は、より単純な手法が機能しますが、パーセプトロンも同様に機能します。

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


隠しレイヤーにいくつのノードがありますか?

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

RoT 収束の改善に基づく:

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

どうして?まず、隠れ層のいくつかの余分なノードは害を及ぼす可能性はほとんどありません。MLPは収束します。一方、隠れ層のノードが少なすぎると、収束が妨げられる可能性があります。このように考えると、追加のノードは余分な容量を提供します。反復(トレーニング、またはモデル作成)中にネットワークに信号を保存/解放するための追加の重みです。第二に、隠しレイヤーで追加のノードから始める場合、後で(反復の進行中に)簡単にそれらを整理することができます。これは一般的であり、ユーザーを支援する診断手法があります(たとえば、重量マトリックスの視覚的な描写であるヒントンダイアグラム、重量値の「ヒートマップ」など)。

RoTs 入力レイヤーのサイズと出力レイヤーのサイズに基づく:

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

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

RoT 主成分に基づく:

通常、入力データセットの分散の70〜90%をキャプチャするために必要なディメンション[主要コンポーネント]と同数の非表示ノードを指定します

NN FAQ 著者は、これらのルールを「文字通り」「ナンセンス」と呼んでいます。なぜなら、トレーニングインスタンスの数、ターゲットのノイズ(応答変数の値)、および機能スペース。

彼の見解では(そして、彼が話していることを知っているように常に思っていました)、MLPに何らかの形の正則化が含まれているか、早期停止

隠しレイヤーのニューロン数を最適化する唯一の有効な手法:

モデルの構築中に、執testにテストします。テストにより、「不正な」ネットワークアーキテクチャのシグネチャが明らかになります。たとえば、少数のノード(テスト結果に基づいて必要に応じて徐々に増加します)で構成される隠れ層を持つMLPで開始する場合、トレーニングエラーと一般化エラーは両方とも、バイアスとアンダーフィッティングによって大きくなります。

次に、一般化エラーが増加し始めるまで、今度はオーバーフィットと高い分散のために、隠れ層のノードの数を1つずつ増やします。


実際には、私はこのようにします:

入力レイヤー:データバクターのサイズ(モデル内のフィーチャの数)+バイアスノードの1 +応答変数を含まず、コース

出力層:モデルによって決定されるsoley:回帰(1ノード)対分類(クラスの数に等しいノードの数、softmaxを想定)

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

enter image description here

201
doug

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

通常、ほとんどのアプリケーションでは、1つの隠しレイヤーで十分です。また、その隠れ層のニューロンの数は、入力の数(例では10)と出力の数(例では5)の間でなければなりません。

しかし、ニューロンと隠れ層の数を選択する最良の方法は実験です。さまざまな数の隠れ層と隠れニューロンを使用していくつかのニューラルネットワークをトレーニングし、 cross-validation を使用してそれらのネットワークのパフォーマンスを測定します。最もパフォーマンスの高いネットワークが得られる数値を使用できます。

2
Ove

最適なレイヤー数と各レイヤーの最適なニューロン数の選択を自動化するには、遺伝的最適化

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

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

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

  • プルーニング:クロス検証セットのパフォーマンスを追跡しながら、大規模なネットワークから始めて、レイヤーと隠れユニットを減らします。
  • Growing:非常に小さなネットワークから始めて、ユニットとレイヤーを追加し、CVセットのパフォーマンスを再度追跡します。
1
Justas