Aquí, eche un vistazo: puede ver exactamente dónde terminan los datos de entrenamiento. Los datos de entrenamiento van de a .
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.
regression
neural-networks
python
keras
Markus Appel
fuente
fuente
Respuestas:
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+1…xi+n n i
(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 )
fuente
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,
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)
fuente
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.
fuente
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.
fuente
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.
fuente