Annäherung der Sinusfunktion an ein neuronales Netz

Zu Lernzwecken habe ich ein einfaches neuronales Netzwerk-Framework implementiert, das nur mehrschichtige Perceptrons und einfache Backpropagation unterstützt. Für die lineare Klassifizierung und das übliche XOR-Problem funktioniert es in Ordnung, aber für die Sinusfunktionsnäherung sind die Ergebnisse nicht so zufriedenstellend.

Ich versuche im Grunde, eine Periode der Sinusfunktion mit einer verborgenen Schicht aus 6-10 Neuronen zu approximieren. Das Netzwerk verwendet den hyperbolischen Tangens als Aktivierungsfunktion für die verborgene Ebene und eine lineare Funktion für die Ausgabe. Das Ergebnis bleibt eine ziemlich grobe Schätzung der Sinuswelle und die Berechnung dauert lange.

Ich sah mich umengagieren Zum Nachschlagen, und trotzdem schaffe ich es nicht, dass es mit einfacher Backpropagation funktioniert (durch Umschalten auf elastische Propagation wird es besser, aber es ist immer noch viel schlechter als das mitgelieferte Super-Slick-R-Skript)in dieser ähnlichen Frage). Also versuche ich tatsächlich etwas zu tun, was nicht möglich ist? Ist es nicht möglich, den Sinus mit einfacher Backpropagation zu approximieren (kein Impuls, keine dynamische Lernrate)? Was ist die tatsächliche Methode, die von der neuronalen Netzwerkbibliothek in R verwendet wird?

BEARBEITEN: Ich weiß, dass es definitiv istmöglich um auch bei einfacher Backpropagation eine hinreichend gute Näherung zu finden (wenn Sie unglaublich viel Glück mit Ihren Anfangsgewichten haben), aber ich war eigentlich mehr daran interessiert zu wissen, ob dies eine istmöglich Ansatz. Das R-Skript, mit dem ich verknüpft habe, scheint so unglaublich schnell und robust zu konvergieren (in 40 Epochen mit nur wenigen Lernbeispielen), verglichen mit meiner Implementierung oder sogar der stabilen Verbreitung von encog. Ich frage mich nur, ob ich irgendetwas tun kann, um meinen Backpropagation-Algorithmus zu verbessern, um die gleiche Leistung zu erzielen, oder ob ich eine fortgeschrittenere Lernmethode ausprobieren muss.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage