ニューラルネットワークアーキテクチャを構築するときに、非表示層にいくつのノードを配置し、どのように非表示層を配置するかをどのように決定する必要があるのかと思いました。
入力層と出力層はトレーニングセットに依存することを理解していますが、一般に隠れ層と全体的なアーキテクチャをどのように決定するのですか?
ニューラルネットワークアーキテクチャを構築するときに、非表示層にいくつのノードを配置し、どのように非表示層を配置するかをどのように決定する必要があるのかと思いました。
入力層と出力層はトレーニングセットに依存することを理解していますが、一般に隠れ層と全体的なアーキテクチャをどのように決定するのですか?
回答:
悲しいことに、問題の説明だけを与えられた場合、ニューラルネットワークのニューロンの最適な数と層の数をアプリオリに決定する一般的な方法はありません。出発点として試すのに適した値を決定するためのガイダンスはあまりありません。
最も一般的なアプローチは、同様の問題で使用されたネットワークに関する過去の経験に基づいた大まかな推測から始めることのようです。これは、あなた自身の経験かもしれませんし、トレーニングコース、ブログ、研究論文から学んだ中古/第三者の経験かもしれません。次に、いくつかのバリエーションを試し、最適なものを選ぶ前にパフォーマンスを注意深く確認します。
ニューラルネットワークのサイズと深さは、他のハイパーパラメーターとも相互作用するため、他の場所で何かを変更すると、最適な値の場所に影響を与える可能性があります。したがって、ネットワークの「最適な」サイズと深さを分離し、他のパラメータを分離して引き続き調整することはできません。たとえば、非常に深いネットワークがある場合、ReLUアクティベーション機能では効率的に機能する可能性がありますが、シグモイドではそれほどうまく機能しない可能性があります-ネットワークの最適なサイズ/形状を見つけてから、さまざまなアクティベーション機能を試してみると、何が最も効果的かについての間違った結論へ。
ニューラルネットワークの設計をゼロから開始するときに研究者が使用する「経験則」について読むことがあります。これらのことはあなたの問題のために働くかもしれないし、そうでないかもしれないが、少なくともそれらは問題から始めるという利点がある。私が見たバリエーションは:
サイズを変更する特別な理由がないという理由で、入力と同じサイズ順序で、すべて同じサイズの隠しレイヤーでネットワークを作成します(オートエンコーダーを作成する場合を除きます)。
シンプルに始めて複雑さを増やし、シンプルなネットワークの改善点を確認してください。
出力が入力データによってうまく説明されると予想されるが、複雑な関係(本質的にノイズが多いのではなく)がある場合は、さまざまな深さのネットワークを試してください。
いくつかのドロップアウトを追加してみてください、それはニューラルネットワークが妖精の塵を魔法にかけるのに最も近いものです(注意:ドロップアウトを追加すると一般化が向上する可能性がありますが、必要なレイヤーサイズとトレーニング時間も増加する可能性があります)。
これらまたはこれらのようなものをテキストで読む場合は、ひとつまみでそれらを取ります。ただし、最悪の場合、空白ページの影響を乗り越え、何らかのネットワークを作成し、テストと改良プロセスを開始するのに役立ちます。
余談ですが、他のアプローチのほうが良い場合があり、時間を大幅に節約できる場合は、ニューラルネットワークの調整であまりにも迷子にならないようにしてください。他の機械学習とデータサイエンスのアプローチを検討し、使用してください。データを調べて、おそらくいくつかのプロットを作成します。最初にいくつかの単純な線形アプローチを試し、問題に応じてベンチマーク、線形回帰、ロジスティック回帰、またはソフトマックス回帰を達成します。NNに異なるMLアルゴリズムを使用することを検討してください-XGBoostなどの決定木ベースのアプローチは、多くの問題のディープラーニングよりも高速で効果的です。