5

sknn パッケージを使用してニューラル ネットワークを構築しています。使用しているデータセットのニューラル ネットワークのパラメーターを最適化するために、進化的アルゴリズムを使用しています。このパッケージを使用すると、各レイヤーに異なる活性化関数を持つニューラル ネットワークを構築できるので、それが実際的な選択なのか、それともネットごとに 1 つの活性化関数を使用するだけでよいのか疑問に思っていました。ニューラル ネットワークに複数の活性化関数を持たせることは、ニューラル ネットワークに害を及ぼしますか?

また、レイヤーごとに必要なニューロンの最大量と、ネットごとに必要なレイヤーの最大量は?

4

2 に答える 2

5

ニューラル ネットワークは単なる (大きな) 数学関数です。同じ層の異なるニューロンに異なる活性化関数を使用することもできます。活性化関数が異なれば、特定の関数を解くのに適したさまざまな非線形性が可能になります。tanh ではなくシグモイドを使用しても、わずかな違いしかありません。さらに重要なことは、アクティベーションに適切な導関数があることです。tanh と sigmoid が通常使用される理由は、値が 0 に近い場合は線形関数のように機能し、絶対値が大きい場合は符号関数 ((-1 または 0) または 1 ) のように機能し、優れた導関数を持つためです。比較的新しく導入されたのは ReLU (max(x,0)) です。これは非常に簡単な導関数 (x=0 を除く) を持ち、非線形ですが、重要なことに計算が高速で、トレーニングの多い深いネットワークに適しています。回。

結局のところ、グローバルなパフォーマンスにとって、これの選択はそれほど重要ではなく、非線形性とキャップされた範囲が重要であるということです。ただし、最後のパーセンテージ ポイントを絞り出すために、この選択は重要ですが、主に特定のデータに依存します。隠れ層の数やこれらの層内のニューロンの数と同様に、この選択は交差検証によって見つける必要がありますが、これらを含めるように遺伝的演算子を適応させることはできます。

于 2016-06-21T14:53:53.203 に答える
3

[レイヤーごとに異なる活性化関数を持つ] が実際的な選択なのか、それともネットごとに 1 つの活性化関数を使用するだけでよいのか疑問に思っていました。

短い答え: それは依存します

より長い答え:複数のアクティベーション機能が必要な理由を考えようとしています。あなたはあなたの質問で言わないので、より理論的なレベルで答えます。

一般的なアドバイス/ガイダンス

ニューラル ネットワークは数学関数の単なる近似値であり、正しい設計は次の質問/回答への回答に基づいています。

  • 近似はどのくらい近くする必要がありますか?また、関数を近似するためにネットワークをどれだけ近づけることができますか?
  • ネットワークは、トレーニングされていないデータセットにどの程度一般化されていますか? どれだけ一般化する必要がありますか?

これは、あなたの質問に関連すると思われる追加のものです

  • ネットワークはどのくらいの速度で実行する必要がありますか? アクティベーション関数の選択はパフォーマンスをどのように妨げますか?

これらの質問に答えると、特定のケースについてよりよく理解できるようになります。

私の意見

複数の活性化関数を備えたニューラル ネットワークを構築することは、実際には状況を混乱させ、システムを必要以上に複雑にしています。優れたソフトウェアを構築することを考えるとき、最初に思いつくことの 1 つは、まとまりのある設計です。言い換えれば、システムは全体として理にかなっていますか、それともやりすぎですか?

プロのヒント: ソフトウェアRube Goldburg Machinesをビルドしないでください。

同じネットワークで複数のアクティベーション機能が必要な場合、私の意見では、これはまとまりがありません。なんらかの理由で問題が本当にこれを必要とする場合は、問題を再考し、複数の個別のニューラル ネットワークを備えたシステムを設計すると、これらのネットワークはそれぞれのアーキテクチャ (活性化関数の選択を含む) でそれぞれの目的を果たします。

于 2016-06-21T15:06:18.897 に答える