3 層のニューラル ネットワークがあり、対応する期待される出力値を持つ 3 つの入力サンプルがある場合、すべてのエッジに沿って重みの値を決定するにはどうすればよいですか?
2 に答える
人工ニューラルネットワーク(ANN)の重みを推定することは、パラメトリック最適化問題に他なりません。一般に、仕事を成し遂げるためには非線形オプティマイザーが必要です。プロセスで最適化されるほとんどのコスト関数は、ネットワーク出力と目的の出力の間の不一致にペナルティを課すものです。
バックプロパゲーション法は、隠れ層ニューロンの出力での誤差を推定できるため、勾配ベースの最適化を適用する洗練された方法です。したがって、エラー勾配を使用して、隠れ層の重みの更新を有効にします。
勾配ベースの方法で極小値の問題に対処するには、複数の開始方法を使用するのが一般的です。これは、基本的に、多数の異なる初期推定から推定手順を繰り返すことになります。
遺伝的アルゴリズムなどの進化的手法も、人口が多様性を失うと時期尚早の収束に苦しむことに注意してください。
また、ネットワークをトレーニングデータに過剰適合させないように注意してください。見えないデータを適切に一般化することはできません。これは、結局のところ、予測学習の関数近似のポイントです。
これはさておき、当惑させるのは、トレーニングサンプルの数が少なすぎて、近似しようとしている関数に関する多くの情報が得られないことです。大まかに言えば、ANNに多数の自由パラメーターがある場合、トレーニングデータは、パラメーターの有意義な推定を可能にするのに十分な情報を提供する必要があります。3つのサンプルは、実際の関数近似タスクには低すぎます。
これには、伝統的にバックプロパゲーションが使用されます。個人的には、Levenberg-Marquardtアルゴリズムを使用すると、はるかに優れた高速の結果が得られました。
また、進化的アルゴリズム(たとえば、遺伝的アルゴリズム、粒子群最適化(実装が簡単!))をテストすることもできます。これらは勾配に基づいていないため、局所最適点にとらわれる可能性が低くなります。