私は独自のニューラルネットを構築しましたが、奇妙な問題があります。
ネットは非常に単純なフィードフォワード 1-N-1 ネットであり、逆伝播学習が行われます。シグモイドは活性化関数として使用されます。
私のトレーニング セットは、[-PI, PI] と [0,1] スケーリングされた正弦値の間のランダムな値で生成されます (これは、「シグモイド ネット」が [0,1] とスケーリングされていない正弦関数の間の値のみを生成するためです)。 [-1,1] の間の値を生成します)。
そのトレーニング セットと、学習率 0.5 でネットを 1-10-1 に設定すると、すべてがうまく機能し、ネットは必要に応じて sin 関数を学習します。しかし.. COSINE 関数に対してまったく同じ方法ですべてを実行すると、ネットはそれを学習しません。隠れ層のサイズや学習率の設定はありません。
何か案は?何か不足していますか?
編集:私の問題は、このアプレットで見られるものと似ているようです。最初に重みに対して「より簡単な」何かが教えられない限り、正弦関数を学習しないようです(2次関数の1400サイクルなど)。アプレットの他のすべての設定は、最初のままにしておくことができます。したがって、正弦または余弦の場合、解を見つける前に、重みを少なくとも部分的に正しい方向にブーストする必要があるようです。どうしてこれなの?