Zum Aufwärmen mit wiederkehrenden neuronalen Netzen versuche ich, eine Sinuswelle von einer anderen Sinuswelle einer anderen Frequenz vorherzusagen.
Mein Modell ist eine einfache RNN, deren Vorwärtsdurchlauf wie folgt ausgedrückt werden kann:
wobeiσdie Sigmoïd-Funktion ist.
Wenn sowohl der Eingang als auch der erwartete Ausgang zwei Sinuswellen derselben Frequenz sind, jedoch mit (möglicherweise) einer Phasenverschiebung, kann das Modell ordnungsgemäß zu einer vernünftigen Näherung konvergieren .
Im folgenden Fall konvergiert das Modell jedoch zu einem lokalen Minimum und sagt die ganze Zeit Null voraus:
- Eingabe:
- erwartete Ausgabe:
Das Netzwerk sagt Folgendes voraus, wenn nach 10 Trainingsepochen die vollständige Eingabesequenz mit Mini-Batches der Größe 16, einer Lernrate von 0,01, einer Sequenzlänge von 16 und versteckten Schichten der Größe 32 angegeben wird:
Was mich zu der Annahme führt, dass das Netzwerk nicht in der Lage ist, durch die Zeit zu lernen, und sich nur auf die aktuellen Eingaben stützt, um seine Vorhersage zu treffen.
Ich habe versucht, die Lernrate, die Sequenzlänge und die Größe der verborgenen Ebenen ohne großen Erfolg abzustimmen.
Ich habe genau das gleiche Problem mit einem LSTM. Ich möchte nicht glauben, dass diese Architekturen so fehlerhaft sind, irgendwelche Hinweise darauf, was ich falsch mache?
Ich verwende ein RNN- Paket für Torch, der Code befindet sich in einem Gist .