1. ホーム
  2. machine-learning

人工ニューラルネットワークのニューロン数、層数の推定【非公開

2023-08-25 16:12:43

質問

私は層の数と層ごとのニューロンの数を計算する方法について探しています。入力として、私は入力ベクトルのサイズ、出力ベクトルのサイズとトレーニングセットのサイズを持っているだけです。

通常、最適なネットは、異なるネットトポロジーを試し、最も誤差の少ないものを選択することによって決定されます。残念ながら、私はそれを行うことはできません。

どのように解決するのですか?

これは本当に難しい問題です。

ネットワークがより多くの内部構造を持てば持つほど、そのネットワークは複雑な解を表現するのに有利になります。 一方、内部構造が多すぎると速度が遅くなり、学習が発散したり、オーバーフィットにつながったりして、新しいデータに対してネットワークがうまく汎化できない可能性があります。

人々は伝統的に、いくつかの異なる方法でこの問題に取り組んできました。

  1. 様々な構成を試して、最も効果的なものを見つけてください。 トレーニングセットを2つに分割し、1つはトレーニング用、もう1つは評価用とし、異なるアプローチをトレーニングし、評価することができます。 残念ながら、あなたの場合、この実験的アプローチは利用できないようです。

  2. 経験則を利用する。 多くの人々が、何が最も効果的かについて、多くの推測を思いつきました。 隠れ層のニューロンの数に関して、人々は (たとえば) (a) 入力層と出力層のサイズの間であるべき、(b) (inputs+outputs) * 2/3 に近いものに設定すべき、または (c) 入力層のサイズの 2 倍より大きくしてはならない、と推測しています。



    経験則の問題点は、それらが は重要な情報を必ずしも考慮していないことです。 , 問題がどの程度難しいか、トレーニングセットとテストセットのサイズはどの程度か、など。 などです。 その結果、これらのルールはしばしば、「いろいろ試してみて、何が一番うまくいくか見てみよう」というアプローチの大まかな出発点として使用されます。

  3. ネットワーク構成を動的に調整するアルゴリズムを使用します。 のようなアルゴリズムがあります。 カスケード相関 のようなアルゴリズムは、最小限のネットワークで開始し、トレーニング中に隠しノードを追加します。 これは実験の設定を少し単純にすることができ、(理論的には)より良いパフォーマンスをもたらすことができます(誤って不適切な数の隠れノードを使用することがないため)。

このテーマには多くの研究があり、本当に興味があるのなら、読むべきものがたくさんあります。 引用文献をチェックする をチェックしてください。 を、特にチェックしてください。