Como calentamiento con redes neuronales recurrentes, estoy tratando de predecir una onda sinusoidal a partir de otra onda sinusoidal de otra frecuencia.
Mi modelo es un RNN simple, su pase directo se puede expresar de la siguiente manera:
Cuando tanto la entrada como la salida esperada son dos ondas sinusoidales de la misma frecuencia pero con (posiblemente) un cambio de fase, el modelo puede converger adecuadamente a una aproximación razonable.
Sin embargo, en el siguiente caso, el modelo converge a un mínimo local y predice cero todo el tiempo:
- entrada:
- salida esperada:
Esto es lo que la red predice cuando se le da la secuencia de entrada completa después de 10 épocas de entrenamiento, usando mini lotes de tamaño 16, una tasa de aprendizaje de 0.01, una longitud de secuencia de 16 y capas ocultas de tamaño 32:
Lo que me lleva a pensar que la red no puede aprender a través del tiempo y se basa solo en la información actual para hacer su predicción.
Traté de ajustar la velocidad de aprendizaje, la longitud de las secuencias y el tamaño de las capas ocultas sin mucho éxito.
Tengo exactamente el mismo problema con un LSTM. No quiero creer que estas arquitecturas sean tan defectuosas, ¿alguna pista sobre qué estoy haciendo mal?
Estoy usando un paquete rnn para Torch, el código está en un Gist .