RNN aprendiendo ondas sinusoidales de diferentes frecuencias

8

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:

rt=σ(WyonorteXt+WrmiCrt-1))zt=Wotutrt
donde es la función sigmoïd.σ

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:X=syonorte(t)
  • salida esperada:y=syonorte(t2)

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:

Predicción de red después de 10 épocas, utilizando mini lotes de tamaño 16

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 .

Simón
fuente

Respuestas:

3

Básicamente, sus datos no se pueden aprender con un RNN capacitado de esa manera. Su entrada es es -periódicopecado(t)2πpecado(t)=pecado(t+2π)

pero su objetivo es -periódico ypecado(t/ /2)4 4πpecado(t/ /2)=-pecado(t+2π)

Por lo tanto, en su conjunto de datos tendrá pares de entradas idénticas con salidas opuestas. En términos de error cuadrático medio, significa que la solución óptima es una función nula.

Estas son dos partes de su trama donde puede ver entradas idénticas pero objetivos opuestos ingrese la descripción de la imagen aquí

ChenM
fuente
1
Para dar más detalles sobre esta respuesta, surgió el problema de utilizar la misma inicialización de retroalimentación para diferentes entradas. Resolví esto haciendo (aleatoriamente) más hacia adelante que hacia atrás para aprender la secuencia completa.
Simon