楽しみのためだけに、ニューラルネットワークを開発しようとしています。
さて、逆伝播のために2つのテクニックを見ました。
それは何ですか:
- 各出力ニューロンのエラーを計算します。
- それをネットワークに逆伝播します(各内部ニューロンのエラーを計算します)。
- 次の式で重みを更新します(ここで、重みの変化、学習速度、シナプスから入力を受信し、シナプスで送信される出力であるニューロンのエラー)。
- データセットの各エントリに対して、必要な回数だけ繰り返します。
ただし、このチュートリアルで提案されているニューラルネットワーク(GitHubでも入手可能)は、異なる手法を使用しています。
- エラー関数を使用します(他の方法にはエラー関数がありますが、トレーニングには使用しません)。
- 重みから開始して最終エラーを計算できる別の関数があります。
- (勾配降下による)その関数を最小化します。
さて、どのメソッドを使用する必要がありますか?
最初の1つが最も使用されていると思います(それを使用して別の例を見ていたため)
特に、私は知りません:
- (二次関数を使用していないため)局所的最小値の影響を受けにくいですか?
- 各重みの変動はその出力ニューロンの出力値の影響を受けるため、データセットのエントリは、出力ニューロンだけでなくニューロンでより高い値を生成するだけで、他のエントリよりも重みに影響しませんか?
今、私は最初の手法を好むのです。なぜなら、実装がより簡単になり、考えやすくなるからです。
しかし、もしそれが私が言及した問題を持っているなら(そうしないことを望みます)、2番目の方法でそれを使用する実際の理由はありますか?