最近、フィードフォワード ニューラル ネットワークの実装を開始し、学習方法として逆伝播を使用しています。http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.htmlをガイドとして使用しています。
ただし、最初のエポックの後、エラーは0です。実際の目的でネットワークを使用する前に、単純なネットワーク構造で試しました:
- 4 つのバイナリ入力、1、1、0、0。
- 2 つの隠れ層、それぞれ 4 つのニューロン。
- 1 つの出力ニューロン、1.0 のはず = 有効な入力。
各トレーニング エポックは、テスト入力 (1, 1, 0, 0) を実行し、出力エラー (シグモイド導関数 * (1.0 - シグモイド)) を計算し、エラーを逆伝播し、最後に重みを調整します。
各ニューロンの新しい重み = 重み + learning_rate * ニューロンの誤差 * 重みへの入力。
各隠れニューロンのエラー = (すべての出力ニューロンのエラーの合計 * 接続された重み) * ニューロンのシグモイド導関数。
問題は、エラーを下げるという点で、エポック間の何らかの「進歩」を確認するには、学習率を 0.0001 にする必要があることです。この場合、エラーは ~30.0 あたりから始まります。学習率が高くなると、最初のパスの後にエラーが 0 になるため、誤検知が発生します。
また、実際のデータ (サンプルからの 32 個のオーディオ機能のセット - 隠れ層ごとに 32 個のニューロン) でこのネットワークを試すと、同じ問題が発生します。あらゆるノイズが偽陽性の引き金となるところまで。おそらくこれは入力機能の問題である可能性がありますが、高いピッチのノートを使用してテストしているため、生データが低いピッチのノートとは明らかに異なることがわかります.
私はニューラル ネットワークの初心者なので、ネットワークに問題があるとほぼ確信しています。どんな助けでも大歓迎です。