レイヤーごとのニューロンの最適数を見つける方法は?


28

アルゴリズムを書いているとき、単一レイヤーごとに必要なニューロンの数をどのように知るのですか?最適な数を見つける方法はありますか、それとも経験則ですか?

回答:


15

最適な数を見つけるための直接的な方法はありません。経験的に試してみてください(たとえば、相互検証を使用して)。最も一般的な検索手法は、ランダム検索、手動検索、およびグリッド検索です。

対話法分類のためのガウス過程によるニューラルネットワークハイパーパラメーターの最適化、IEEE SLT 2016など、ガウス過程などのより高度な手法が存在します。


7

ランダム検索または網羅的検索よりもインテリジェントなアプローチの場合は、NEAT http://nn.cs.utexas.edu/?neatなどの遺伝的アルゴリズムを試すことができます。ただし、これはグローバルな最適値を見つける保証はありません。これは単にパフォーマンスに基づく最適化アルゴリズムであるため、ローカルな最適値にとらわれやすくなります。


1
とにかく、グローバル最適化にかなり近づくでしょう。
jjmerelo

4

Paper Szegedy C、Vanhoucke V、Ioffe Sなど コンピュータビジョンの開始アーキテクチャを再考する[J]。arXivプレプリントarXiv:1512.00567、2015年。いくつかの一般的な設計原則を示しています。

  1. 特にネットワークの初期段階で、表現のボトルネックを回避します。

  2. ネットワークの幅と深さのバランスを取ります。ネットワークの最適なパフォーマンスは、ステージごとのフィルター数とネットワークの深さのバランスをとることによって達成できます。ネットワークの幅と深さの両方を増やすと、ネットワークの品質が向上します。ただし、両方を並行して増加させると、一定量の計算に対する最適な改善に到達できます。したがって、計算の予算は、ネットワークの深さと幅の間でバランスの取れた方法で配分する必要があります。

ただし、これらの提案では、ネットワーク内の最適な数のニューロンを得ることができません。

ただし、Deep Neural NetworksのStructured Sparsity Learning(SSL)SqueezeNetPruningネットワークなど、単一層ごとにニューロンを最適化する方法に光を当てるモデル圧縮研究がまだいくつかあります。

特にDeep Neural NetworksのStructured Sparsity LearningGroup Lassoでは、損失関数に正則化用語を追加して、DNNの構造(フィルター、チャネル、フィルター形状、レイヤー深度)を正則化します。つまり、いくつかのコンポーネントをゼロにします(つまり、ネット構造のフィルター、チャネル、フィルター形状、および層の深さ)により、ネットワークの顕著なコンパクト化と高速化を実現しながら、わずかな分類精度の損失を維持します。


3

ニューロンが多すぎるとは、フィッティングを超えたときです。つまり、NNは不可能な最も完全な一致でアクティブ化しようとしているため、うまく機能していません。同じ量の原子を持つ2匹の異なる猫のように、つまり、あなたのペットの猫の写真でのみアクティブになる検出器NNです。nnの有効範囲を広げたい場合。猫の絵のように。

過剰適合は、実際の迅速な修正がない問題です。少ない数から始めて、さらに追加し続けることができます。または、多くの作業を開始してから、適切に機能するまで削除します。

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