ニューラルネットワークにはいくつの隠しレイヤーと隠しノードが必要ですか?
この記事では、多層パーセプトロンの非表示部分を構成するためのガイドラインを提供します。
ニューラルネットワークに関するこのシリーズのこれまでのところ、パーセプトロンNN、多層NN、およびPythonを使用してそのようなNNを開発する方法について説明してきました。採用できる隠れ層とノードの数について説明する前に、以下のシリーズに追いつくことを検討してください。
- ニューラルネットワークを使用して分類を実行する方法:パーセプトロンとは何ですか?
- 単純なパーセプトロンニューラルネットワークの例を使用してデータを分類する方法
- 基本的なパーセプトロンニューラルネットワークをトレーニングする方法
- 単純なニューラルネットワークトレーニングを理解する
- ニューラルネットワークのトレーニング理論の概要
- ニューラルネットワークの学習率を理解する
- 多層パーセプトロンを使用した高度な機械学習
- シグモイド活性化関数:多層パーセプトロンニューラルネットワークでの活性化
- 多層パーセプトロンニューラルネットワークをトレーニングする方法
- 多層パーセプトロンのトレーニング式とバックプロパゲーションを理解する
- Python実装のためのニューラルネットワークアーキテクチャ
- Pythonで多層パーセプトロンニューラルネットワークを作成する方法
- ニューラルネットワークを使用した信号処理:ニューラルネットワーク設計での検証
- ニューラルネットワークのデータセットのトレーニング:Pythonニューラルネットワークをトレーニングおよび検証する方法
- ニューラルネットワークにはいくつの隠しレイヤーと隠しノードが必要ですか?
非表示レイヤーの要約
まず、ニューラルネットワークの隠れノードに関するいくつかの重要なポイントを確認しましょう。
- 入力ノードと出力ノードのみで構成されるパーセプトロン(単層パーセプトロンと呼ばれる)は、多くの種類の実際の現象を特徴付ける複雑な入出力関係を近似できないため、あまり有用ではありません。より具体的には、単層パーセプトロンは線形分離可能に制限されています 問題;パート7で見たように、ブールXOR関数のような基本的なものでさえ線形分離可能ではありません。
- 非表示レイヤーの追加 入力層と出力層の間で、パーセプトロンが普遍近似定理に変わります。 、これは本質的に、非常に複雑な入出力関係をキャプチャして再現できることを意味します。
- 非表示のレイヤーが存在すると、非表示への入力が発生するため、トレーニングが少し複雑になります。 重みは、最終エラーに間接的な影響を及ぼします (これは、ネットワークの出力値と目標値の違いを表すために使用する用語です。 トレーニングデータによって提供されます)。
- 多層パーセプトロンのトレーニングに使用する手法は、バックプロパゲーションと呼ばれます。 :出力ノードに直接接続されていない重みを効果的に変更できるように、最終エラーをネットワークの入力側に伝播します。バックプロパゲーション手順は拡張可能です。つまり、同じ手順で、任意の数の隠れ層に関連付けられた重みをトレーニングできます。
次の図は、基本的な多層パーセプトロンの構造をまとめたものです。
隠しレイヤーはいくつですか?
ご想像のとおり、この質問に対する簡単な答えはありません。ただし、理解しておくべき最も重要なことは、1つの隠れ層を持つパーセプトロンは非常に強力な計算システムであるということです。 1つの隠れ層で十分な結果が得られない場合は、最初に他の改善を試してください。たとえば、学習率を最適化するか、トレーニングエポックの数を増やすか、トレーニングデータセットを強化する必要があります。 2番目の隠れ層を追加すると、コードの複雑さと処理時間が増加します。
もう1つ覚えておくべきことは、強力なニューラルネットワークは、コーディングの労力とプロセッサリソースの無駄だけではなく、ネットワークをオーバートレーニングの影響を受けやすくすることで、実際にプラスの害を及ぼす可能性があるということです。
パート4でオーバートレーニングについて話しましたが、ソリューションが十分に一般化されていないニューラルネットワークの動作を視覚化する方法として次の図が含まれています。
超強力なパーセプトロンは、人々が時々状況を「考えすぎる」方法に漠然と類似した方法でトレーニングデータを処理する場合があります。
詳細に焦点を合わせすぎて、実際には非常に単純な問題に過度の知的努力を払うと、「全体像」を見逃し、最適ではないことが判明する解決策になってしまいます。同様に、過剰な計算能力と不十分なトレーニングデータを持つパーセプトロンは、新しい入力サンプルをより効果的に分類する一般化されたソリューション(次の図に示す)を見つける代わりに、過度に特定のソリューションに落ち着く可能性があります。
では、実際に複数の非表示レイヤーが必要になるのはいつですか?私はあなたに個人的な経験からのガイドラインを与えることはできません。私ができる最善のことは、ジェフ・ヒートン博士(リンクされたテキストの158ページを参照)の専門知識を伝えることです。彼は、1つの隠れ層により、ニューラルネットワークが「ある有限空間から別の有限空間への連続マッピングを含むあらゆる関数を近似できる」と述べています。 。」
2つの隠れ層があるため、ネットワークは「任意の決定境界を任意の精度で表す」ことができます。
隠しノードはいくつですか?
隠れ層の最適な次元を見つけるには、試行錯誤が必要です。上で説明したように、ノードが多すぎることは望ましくありませんが、ネットワークが入出力関係の複雑さをキャプチャできるようにするために十分なノードが必要です。
試行錯誤はすべてうまくいきますが、何らかの合理的な出発点が必要になります。上記のリンク先の同じ本(159ページ)で、ヒートン博士は、隠れ層の次元を選択するための3つの親指のルールについて言及しています。漠然とした信号処理の直感に基づいた推奨事項を提供することで、これらに基づいて構築します。
- ネットワークに出力ノードが1つしかなく、必要な入出力関係がかなり単純であると思われる場合は、入力次元の3分の2に等しい隠れ層の次元から始めます。
- 複数の出力ノードがある場合、または必要な入出力関係が複雑であると思われる場合は、隠れ層の次元を入力の次元に出力の次元を加えたものに等しくします(ただし、入力の次元の2倍未満に保ちます)。
- 必要な入出力関係が非常に複雑であると思われる場合は、非表示の次元を入力次元の2倍未満に設定してください。
結論
この記事が、多層パーセプトロンの隠れ層構成を構成および改良するプロセスを理解するのに役立つことを願っています。
次の記事では、Pythonの実装といくつかの問題例を使用して、隠れ層の次元の影響を調べます。
産業用ロボット
- トグルプレスとは何ですか?どのように機能しますか?
- ラックアンドピニオンプレスはどのように機能しますか?
- トランスファーモールディングとは何ですか?どのように機能しますか?
- トランスミッションとは何ですか?それはどのように機能しますか?
- ニューラルネットワークへのバイアスノードの組み込み
- 隠れ層ニューラルネットワークの精度を上げる方法
- ニューラルネットワークのトレーニングデータセット:Pythonニューラルネットワークをトレーニングおよび検証する方法
- Pythonで多層パーセプトロンニューラルネットワークを作成する方法
- 多層パーセプトロンのトレーニング式とバックプロパゲーションを理解する
- 産業用クラッチとは何ですか?
- 油圧ポンプに必要な HP は?