4

最近、フィードフォワード ニューラル ネットワークの実装を開始し、学習方法として逆伝播を使用しています。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 個のニューロン) でこのネットワークを試すと、同じ問題が発生します。あらゆるノイズが偽陽性の引き金となるところまで。おそらくこれは入力機能の問題である可能性がありますが、高いピッチのノートを使用してテストしているため、生データが低いピッチのノートとは明らかに異なることがわかります.

私はニューラル ネットワークの初心者なので、ネットワークに問題があるとほぼ確信しています。どんな助けでも大歓迎です。

4

2 に答える 2

0

フィードフォワード/バックプロップの標準的な NN アプローチを使用していると述べていますが、これを実際にどのように実装したかについては説明していません。「銀河」リンクをガイドとして使用しているとのことですが、「銀河」ページでは、ノードに適用されるバイアスについての言及がないことに気付きました。おそらく、この重要なコンポーネントが含まれていませんか? Nate Kohl による NN ノードに適用されるバイアスの役割に関する素晴らしい議論があります。 Role of Bias in Neural Networks を参照してください。

次に、隠しレイヤーを 2 つ使用するのではなく、隠しレイヤーを 1 つだけ使用してみます。その層のノードの数を増やす必要があるかもしれませんが、ほとんどの実際の問題では、隠れ層が 1 つだけで適切な解が得られるはずです。おそらくより安定し、backprop で何が起こっているかを追跡するのがずっと簡単になります。

于 2014-07-22T05:12:07.657 に答える