2層のニューラルネットワーク(CUDAを使用)を実装しました。(レイヤーあたり2ニューロン)。私は、バックプロパゲーションを使用して2つの単純な2次多項式関数を学習させるようにしています。
しかし、収束するのではなく、それは発散します(出力は無限大になります)
これが私が試したことの詳細です:
- 初期の重みを0に設定しましたが、発散していたため、初期の重みをランダム化しました(範囲:-0.5〜0.5)
- 学習率が高すぎるとニューラルネットワークが分岐する可能性があるため、学習率を0.000001に下げました。
- 追加しようとしている2つの関数は次のとおりです。3* i + 7 * j + 9およびj * j + i * i + 24(レイヤーiおよびjを入力として指定しています)
- 私は以前にそれを単一の層として実装しました、そしてそれは今それをしているよりも多項式関数をよりよく近似することができました
- このネットワークに勢いをつけることを考えていますが、それが学習に役立つかどうかはわかりません
- 線形(noのように)アクティベーション関数を使用しています
- 最初は振動がありますが、いずれかのウェイトが1を超えると出力が発散し始めます
コードをチェックして再チェックしましたが、コードになんら問題はないようです。
だから私の質問です:ここで何が問題になっていますか?
どんなポインタでも大歓迎です。