ニューラルネットワークでニューロンと層の数を設定する方法


26

私はニューラルネットワークの初心者であり、2つの概念を理解するのに苦労しています。

  1. 特定のニューラルネットワークが持つ中間層の数をどのように決定しますか?1対10または何でも。
  2. 各中間層のニューロン数をどのように決定しますか?各中間層に同数のニューロンを配置することを推奨しますか、それともアプリケーションによって異なりますか?

回答:


19

各層のニューロン数と完全に接続されたネットワークの層数の考慮は、問題の特徴空間に依存します。描写するために2次元のケースで何が起こるかを説明するために、2次元空間を使用します。私は科学者の作品からの画像を使用しました。CNN私のような他のネットを理解するために、ここを見ることをお勧めします。

ニューロンが1つしかないと仮定します。この場合、ネットワークのパラメーターを学習すると、空間を2つの個別のクラスに分離できる線形判定境界が得られます。

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

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

次のデータを分離するように求められたとします。d1どちらが上側の決定境界を指定し、何らかの形でAND入力データがその左側にあるのか右側にあるのかを判断する操作を行う必要があります。Line d2AND、入力データが上限かどうかを調べる別の操作を実行してd2います。この場合、d1入力は、入力を分類するには、行の左側にあるかどうかを理解しようとしているサークル、また、d2入力として入力を分類するためのラインの右側にあるかどうかを把握しようとしているサークル。今、私たちは別のものが必要ですANDパラメータをトレーニングした後に構築される2行の結果をまとめる操作。入力がの左側d1と右側にあるd2場合、として分類する必要があります。

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

ここで、次の問題があり、クラスを分離するように求められたとします。この場合、正当化は上記のものとまったく同じです。

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

次のデータの場合:

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

決定境界は凸ではなく、以前の境界よりも複雑です。最初に、内側の円を見つけるサブネットが必要です。次に、長方形の内側にある入力が円形ではなく、外側にある場合は円形であると決定する内側の長方形決定境界を見つける別のサブネットが必要です。これらの後、結果をまとめて、入力データがより大きな長方形の内側で内側の長方形の外側にある場合、それをcircleとして分類する必要があります。このためには別のAND操作が必要です。ネットワークは次のようになります。

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


次の丸で囲まれた決定境界を見つけるように求められたとします。

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

この場合、ネットワークは次のネットワークのようになりますが、最初の隠れ層にはるかに多くのニューロンがあります。

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


11

この質問に対する正確な答えはまだ存在しないため、非常に良い質問です。これは活発な研究分野です。

最終的に、ネットワークのアーキテクチャはデータの次元に関連しています。ニューラルネットワークは普遍的な近似器であるため、ネットワークが十分に大きい限り、データに適合することができます。

どのアーキテクチャが最適かを真に知る唯一の方法は、それらすべてを試してから、最適なアーキテクチャを選択することです。しかし、もちろん、ニューラルネットワークでは、各モデルのトレーニングにかなりの時間がかかるため、非常に困難です。一部の人々が行うことは、最初に「大きすぎる」モデルを意図的に訓練し、次にネットワークにあまり寄与しない重みを削除することによってそれを剪定することです。

ネットワークが「大きすぎる」場合

ネットワークが大きすぎる場合は、過剰に収まるか、収束に苦労する可能性があります。直感的には、ネットワークがデータを必要以上に複雑な方法で説明しようとしていることがわかります。これは、10ページのエッセイで1つの文で答えられる質問に答えようとしているようなものです。このような長い答えを構成するのは難しいかもしれませんし、多くの不必要な事実が投げ込まれるかもしれません。(この質問を参照してください

ネットワークが「小さすぎる」場合

一方、ネットワークが小さすぎる場合は、データが不足します。10ページのエッセイを書くべきだったときに、1つの文で答えるようなものです。あなたの答えは良いかもしれませんが、あなたは関連する事実のいくつかを見逃しているでしょう。

ネットワークのサイズを見積もる

データの次元がわかっている場合、ネットワークが十分に大きいかどうかを確認できます。データの次元を推定するには、そのランクを計算してみてください。これは、人々がネットワークのサイズを推定しようとする方法の中心的なアイデアです。

ただし、それほど単純ではありません。確かに、ネットワークを64次元にする必要がある場合、サイズ64の単一の隠れ層を構築しますか、サイズ8の2つの層を構築しますか?ここでは、どちらの場合に何が起こるかについていくつかの直観をお伝えします。

さらに深く

深くなるということは、隠れ層を追加することを意味します。それは、ネットワークがより複雑な機能を計算できるようにすることです。たとえば、畳み込みニューラルネットワークでは、最初のいくつかのレイヤーがエッジなどの「低レベル」機能を表し、最後のレイヤーが顔、体の部分などの「高レベル」機能を表すことがよく示されています。

データが非常に構造化されておらず(画像など)、有用な情報を抽出する前にかなり処理する必要がある場合、通常は深くする必要があります。

広くなる

より深くなるとは、より複雑な機能を作成することを意味し、「より広く」なるとは、単にこれらの機能をさらに作成することを意味します。問題は非常に単純な機能で説明できるかもしれませんが、多くの機能が必要です。通常、複雑なフィーチャは単純なフィーチャよりも多くの情報を伝達するという単純な理由により、ネットワークの終わりに向かって層が狭くなります。したがって、それほど多くは必要ありません。


固有の次元の概念を使用して、問題に関連する次元の数を調べることができます。固有の次元は、信号を完全に記述するために必要な変数の数に答えようとします。これは、その信号のランダムなソースの変数の数に関連しています。
ペドロエンリケモンフォルテ

8

短い答え:データの次元とアプリケーションのタイプに非常に関連しています。

適切な数のレイヤーを選択することは、練習をして初めて達成できます。この質問に対する一般的な答えはまだありません。ネットワークアーキテクチャを選択することにより、可能性の空間(仮説空間)を特定の一連のテンソル操作に制限し、入力データを出力データにマッピングします。DeepNNでは、各レイヤーは前のレイヤーの出力にある情報にのみアクセスできます。ある層が手近な問題に関連する何らかの情報を落とした場合、この情報は後の層で回復することはできません。これは通常、「情報ボトルネック」と呼ばれます。

情報のボトルネックは両刃の剣です。

1)少数のレイヤー/ニューロンを使用すると、モデルはデータのいくつかの有用な表現/機能を学習し、重要なものを失います。これは、中間レイヤーの容量が非常に限られているためです(不足)。

2)多数のレイヤー/ニューロンを使用すると、モデルは学習データに固有の表現/機能を学習しすぎて、実世界およびトレーニングセット外のデータに一般化しない(オーバーフィット))。

例やその他の発見に役立つリンク:

[1] https://livebook.manning.com#!/ book / deep-learning-with-python / chapter-3 / point-1130-232-232-0

[2] https://www.quantamagazine.org/new-theory-cracks-open-the-black-box-of-deep-learning-20170921/


4

2年前からニューラルネットワークを使用しているため、これは新しいシステムをモデル化するたびに常に抱えている問題です。私が見つけた最良のアプローチは次のとおりです。

  1. フィードフォワードネットワークでモデル化されている同様の問題を探し、そのアーキテクチャを調べます。
  2. その構成から始めて、データセットをトレーニングし、テストセットを評価します。
  3. アーキテクチャでプルーニングを実行し、データセットの結果を以前の結果と比較します。モデルの精度が影響を受けない場合、元のモデルがデータをオーバーフィットしていると推測できます。
  4. それ以外の場合は、自由度を増やしてください(つまり、レイヤーを増やしてください)。

一般的なアプローチは、さまざまなアーキテクチャを試し、結果を比較し、最適な構成を取ることです。経験は、最初のアーキテクチャの推測でより直感的になります。


1

前の答えに加えて、トレーニングの一環として、ニューラルネットワークのトポロジが内生的に現れるアプローチがあります。最も顕著なのは、隠れた層のない基本的なネットワークから始めて、遺伝的アルゴリズムを使用してネットワーク構造を「複雑化する」Neuroevolution of Augmenting Topologies(NEAT)です。NEATは多くのMLフレームワークに実装されています。マリオを学習するための実装に関する非常にアクセスしやすい記事を次に示します。CrAIg:マリオを学習するためのニューラルネットワークの使用

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.