私はニューラル計算の初心者であり、逆伝播の概念を理解できます。私の質問は、逆伝播なしで関数に適合するように MLP をトレーニングできますか? たとえば、正弦関数に適合する必要があります。バックプロパゲーションを使用せずに重みを割り当てるにはどうすればよいですか?
4 に答える
バックプロパゲーション(ウィキペディア)なしでMLPをトレーニングする一般的な方法であるとは思いません。これは、重みに適用される直接勾配アプローチにすぎません。運動量項などを使用する変更、または異なるポイントでトレーニングする変更があります。
ただし、粒子群最適化や進化的最適化など、さまざまなコスト関数またはアーキテクチャを使用する他の多くの機械学習アルゴリズムがあります。
バックプロパゲーションを使用してニューラル ネットワークをトレーニングするというアイデアは、これらの重みから直接的な出力を得ることなく中間の重みを更新できるため、特に興味深いものです。だから、それは便利なアイデアです!ほとんどの場合、バックプロパゲーション アルゴリズムと勾配降下アルゴリズムを組み合わせます。ただし、勾配降下アルゴリズムは遅い場合がありますが、勾配降下アルゴリズム (誤差の導関数の情報のみを使用する) をレーベンバーグ・マルカートや拡張カルマン フィルターなどの別の「賢い」アルゴリズムに置き換えることができます。それらの多くは。このような場合でも、バックプロパゲーション アルゴリズムと別の最適化アルゴリズムを使用しています。
ニューラルネットワークの収束の問題は、最適化アルゴリズムの品質が悪いためではなく、初期化、つまり「開始重み」が原因である場合があります。ニューラル ネットワークの重みを「巧みに」初期化する方法を説明した膨大な文献があります。
あなたが尋ね、@ Atilla_Ozgurが適切に答えたように、それに対処するために使用できる他のアルゴリズムがあります。たとえば、一連のニューラル ネットワークを作成し、一種の遺伝的アルゴリズムを使用して、突然変異や複製などの操作を使用して最適なネットワークを選択しようとする場合があります。
一言言わせてください。sin 関数は特に興味深いケースで、収束に時間がかかる場合があります。ただし、バックプロパゲーションと勾配降下法を組み合わせることでトレーニングできます。私はずっと前にこれをやった。隠れ層に十分なニューロンがあることを確認する必要があります (通常、間隔 [0,2pi] で NN をトレーニングする場合、活性化関数 tanh を持つ 5 つのニューロンが必要です)。
ニューラル ネットワークをトレーニングするための最良のオプションがあります。それは粒子群最適化です。これは、pso がグローバルに最適な値を提供し、その空間の複雑さが他のアルゴリズムと比較して最適であるためです。多くの研究論文があり、BPアルゴリズムで検索・比較できます。