¿Cómo puedo mejorar mi red neuronal para predecir ondas sinusoidales?

21

Aquí, eche un vistazo: Onda sinusoidal generada puede ver exactamente dónde terminan los datos de entrenamiento. Los datos de entrenamiento van de a .11

Usé Keras y una red densa 1-100-100-2 con activación de tanh. Calculo el resultado a partir de dos valores, p y q como p / q. De esta manera puedo lograr cualquier tamaño de número usando solo valores menores que 1.

Tenga en cuenta que todavía soy un principiante en este campo, así que sea fácil conmigo.

Markus Appel
fuente
1
Para aclarar, sus datos de entrenamiento son de aproximadamente -1.5 a +1.5, ¿entonces la red lo ha aprendido con precisión? ¿Entonces su pregunta es sobre extrapolar el resultado a números invisibles fuera del rango de datos de entrenamiento?
Neil Slater
11
Podrías probar Fourier transformando todo y trabajando en el dominio de la frecuencia.
Nick Alger el
44
Para futuros revisores: no sé por qué esto se está marcando para el cierre. Me parece perfectamente claro: se trata de estrategias para modelar datos periódicos con redes neuronales.
Sycorax dice Reinstate Monica
1
Creo que es una pregunta razonable para un principiante dentro del dominio del aprendizaje automático, que deberíamos acomodar aquí. No lo cerraría
Aksakal
1
No sé si esto ayudará, pero fuera de la caja, un NN de vainilla solo podrá aprender funciones polinómicas. En la práctica, está bien, ya que puede hacer que un polinomio se cierre arbitrariamente en un intervalo fijo. Pero significa que nunca se puede aprender una onda sinusoidal que se extienda más allá de los extremos del intervalo. El truco que otras respuestas han señalado a continuación es transformar el problema en uno que pueda resolverse de esa manera. Eso es lo que sugiere la transformación de Fourier, y en ese caso aprender una onda sinusoidal es solo aprender una constante.
Ukko

Respuestas:

19

Estás utilizando una red de retroalimentación; Las otras respuestas son correctas de que los FFNN no son excelentes para la extrapolación más allá del rango de los datos de entrenamiento.

Sin embargo, dado que los datos tienen una calidad periódica, el problema puede ser susceptible de modelado con un LSTM. Los LSTM son una variedad de células de redes neuronales que operan en secuencias y tienen una "memoria" sobre lo que han "visto" antes. El resumen de este capítulo del libro sugiere que un enfoque LSTM es un éxito calificado en problemas periódicos.

En este caso, los datos de entrenamiento serían una secuencia de tuplas , y la tarea de hacer predicciones precisas para nuevas entradas para algunos y índices alguna secuencia en aumento. La longitud de cada secuencia de entrada, el ancho del intervalo que cubren y su espaciado dependen de usted. Intuitivamente, esperaría que una cuadrícula regular que cubra 1 período sea un buen lugar para comenzar, con secuencias de entrenamiento que cubren una amplia gama de valores, en lugar de restringirse a algún intervalo.(xi,sin(xi))xi+1xi+nni

(Jiménez-Guarneros, Magdiel y Gómez-Gil, Pilar y Fonseca-Delgado, Rigoberto y Ramírez-Cortés, Manuel y Alarcón-Aquino, Vicente, "Predicción a largo plazo de una función seno utilizando una red neuronal LSTM", en Nature- Diseño inspirado de sistemas inteligentes híbridos )

Sycorax dice reinstalar a Mónica
fuente
2
¿Cuál es la secuencia que se está modelando aquí? ¿Cuáles son los pasos de tiempo? Esto me parece una simple aplicación de ajuste de curvas.
David J. Harris
@ DavidJ.Harris He actualizado mi respuesta.
Sycorax dice Reinstate Monica
¿Cuál es la frecuencia de la serie no es1/(2π)
¿Es así como hacen predicciones de mercado, por ejemplo?
Markus Appel el
3
No, no es así como haces predicciones de mercado. Al menos no cómo lo haces para ganar dinero.
Aksakal
13

Si lo que quiere hacer es aprender funciones periódicas simples como esta, entonces podría considerar el uso de procesos gaussianos. Los GP le permiten aplicar su conocimiento de dominio hasta cierto punto al especificar una función de covarianza apropiada; en este ejemplo, dado que sabe que los datos son periódicos, puede elegir un núcleo periódico, luego el modelo extrapolará esta estructura. Puede ver un ejemplo en la imagen; Aquí, estoy tratando de ajustar los datos de altura de la marea, así que sé que tiene una estructura periódica. Como estoy usando una estructura periódica, el modelo extrapola esta periodicidad (más o menos) correctamente. OFC si está tratando de aprender sobre redes neuronales, esto no es realmente relevante, pero este podría ser un enfoque un poco mejor que las funciones de ingeniería manual. Por cierto, las redes neuronales y los GP están estrechamente relacionados en teoría,ingrese la descripción de la imagen aquí

Los GP no siempre son útiles porque, a diferencia de las redes neuronales, son difíciles de escalar a grandes conjuntos de datos y redes profundas, pero si está interesado en problemas de baja dimensión como este, probablemente serán más rápidos y confiables.

(en la imagen, los puntos negros son datos de entrenamiento y los rojos son los objetivos; puede ver que aunque no lo hace exactamente bien, el modelo aprende la periodicidad aproximadamente. Las bandas de colores son los intervalos de confianza de los modelos). predicción)

lsgs
fuente
2
Esta parcela es hermosa.
Sycorax dice Reinstate Monica
11

Los algoritmos de aprendizaje automático, incluidas las redes neuronales, pueden aprender a aproximar funciones arbitrarias, pero solo en el intervalo donde hay suficiente densidad de datos de entrenamiento.

Los algoritmos de aprendizaje automático basados ​​en estadísticas funcionan mejor cuando realizan una interpolación, prediciendo valores cercanos o intermedios a los ejemplos de capacitación.

Fuera de sus datos de entrenamiento, espera extrapolación. Pero no hay una manera fácil de lograrlo. Una red neuronal nunca aprende una función analíticamente, solo aproximadamente a través de estadísticas; esto es cierto para casi todas las técnicas de aprendizaje automático supervisadas. Los algoritmos más avanzados pueden acercarse arbitrariamente a una función elegida con suficientes ejemplos (y parámetros libres en el modelo), pero solo lo harán en el rango de datos de entrenamiento suministrados.

El comportamiento de la red (u otro ML) fuera del rango de sus datos de entrenamiento dependerá de su arquitectura, incluidas las funciones de activación utilizadas.

sinsin(x),sin(2x+π/4)sin

Neil Slater
fuente
"Una red neuronal nunca aprende una función analíticamente, solo aproximadamente a través de estadísticas". - lo mismo se puede decir de casi todo lo que se usa en la práctica, por ejemplo, FFT tampoco aprende analíticamente. Podría aumentar la frecuencia de muestreo y el período hasta el infinito y acercarse infinitamente a la función verdadera, pero lo mismo ocurre con NN.
Aksakal
@ Aksakal: Sí, eso es cierto. Sin embargo, no quería decir que "Todos los algoritmos de ML nunca aprenden funciones analíticamente ...". porque alguien sin duda presentaría un contraejemplo de algún aprendiz analítico bayesiano o programación genética, etc. Trataré de editarlo para hacerlo más general
Neil Slater
9

En algunos casos, el enfoque sugerido de @Neil Slater de transformar sus características con una función periódica funcionará muy bien y podría ser la mejor solución. La dificultad aquí es que es posible que deba elegir el período / longitud de onda manualmente (consulte esta pregunta ).

Si desea que la periodicidad se incruste más profundamente en la red, la forma más fácil sería usar sin / cos como su función de activación en una o más capas. Este artículo discute las posibles dificultades y estrategias para lidiar con las funciones de activación periódicas.

Alternativamente, este documento adopta un enfoque diferente, donde los pesos de la red dependen de una función periódica. El documento también sugiere usar splines en lugar de sin / cos, ya que son más flexibles. Este fue uno de mis trabajos favoritos el año pasado, por lo que vale la pena leerlo (o al menos ver el video) incluso si no terminas usando su enfoque.

David J. Harris
fuente
9

Adoptó un enfoque incorrecto, no se puede hacer nada con este enfoque para solucionar el problema.

Hay varias formas diferentes de abordar el problema. Sugeriré el más obvio a través de la ingeniería de características. En lugar de tapar el tiempo como una característica lineal, colóquelo como resto del módulo T = 1. Por ejemplo, t = 0.2, 1.2 y 2.2 se convertirán en una característica t1 = 0.1, etc. Mientras T sea mayor que el período de onda, esto funcionará. Conecte esta cosa a su red y vea cómo funciona.

La ingeniería de características está subestimada. Hay una tendencia en AI / ML donde los vendedores afirman que usted descarga todas sus entradas en la red, y de alguna manera descubrirá qué hacer con ellas. Claro que sí, como viste en tu ejemplo, pero luego se descompone con la misma facilidad. Este es un gran ejemplo que muestra cuán importante es construir buenas características incluso en algunos casos más simples.

Además, espero que se dé cuenta de que este es el ejemplo más crudo de ingeniería de características. Es solo para darle una idea de lo que podría hacer con él.

Aksakal
fuente