En este ejercicio, entrenaremos nuestra primera red neuronal. Las redes neuronales nos proporcionarán una forma de aprender modelos no lineales sin usar combinaciones de atributos explícitas.
Tarea 1: El modelo especificado combina dos atributos de entrada en una sola neurona. ¿Este modelo aprenderá no linealidades? Ejecútala para confirmar tu respuesta.
Tarea 2: Intenta aumentar el número de neuronas en la capa oculta de 1 a 2. También intenta cambiar de una activación lineal a una activación no lineal, como ReLU. ¿Puedes crear un modelo que pueda aprender no linealidades? ¿Puede modelar los datos de manera eficaz?
Tarea 3: Intenta aumentar el número de neuronas en la capa oculta de 2 a 3 con una activación no lineal, como ReLU. ¿Puede modelar los datos de manera eficaz? ¿Cómo varía la calidad del modelo de ejecución en ejecución?
Tarea 4: Para seguir experimentando, agrega o quita capas ocultas y neuronas por capa. También puedes cambiar las tasas de aprendizaje, la regularización y otras opciones de configuración de aprendizaje. ¿Cuál es la cantidad más pequeña de neuronas y capas que puedes usar y que da una pérdida de prueba de 0.177 o menos?
¿Mejorar el tamaño del modelo mejora el ajuste o la rapidez con la que converge?
¿Esto cambia la frecuencia con la que converge a un buen modelo? Por ejemplo, prueba la siguiente arquitectura:
Primera capa oculta con 3 neuronas.
Segunda capa oculta con 3 neuronas.
Tercera capa oculta con 2 neuronas.
(Las respuestas aparecen justo debajo del ejercicio).
Haga clic en el ícono de signo más para obtener la respuesta de la Tarea 1.
La activación se establece en Lineal, por lo que este modelo no puede aprender ninguna no linealidad. La pérdida es muy alta y, por lo tanto, el modelo subajusta los datos.
Haga clic en el ícono de signo más para obtener la respuesta de la Tarea 2.
La función de activación no lineal puede aprender modelos no lineales. Sin embargo, una sola capa oculta con 2 neuronas no puede reflejar todas las no linealidades en este conjunto de datos y tendrá una pérdida alta incluso sin ruido: aún subajuste de los datos. Estos ejercicios no son deterministas, por lo que algunas ejecuciones no aprenderán un modelo eficaz, mientras que otras ejecutarán un buen trabajo.
Es posible que el mejor modelo no tenga la forma que esperas.
Haga clic en el ícono de signo más para obtener la respuesta de la Tarea 3.
En este ejercicio, se destaca la naturaleza no determinista de Playground. Una sola capa oculta con 3 neuronas es suficiente para modelar el conjunto de datos (ruido ausente), pero no todas las ejecuciones convergerán a un buen modelo.
3 neuronas son suficientes porque la función XO se puede expresar como una combinación de 3 medios planos (activación de ReLU). Puedes observar esto en las imágenes de las neuronas, que muestran el resultado de las neuronas individuales. En un buen modelo con 3 neuronas y activación de ReLU, habrá 1 imagen con una línea casi vertical que detectará X1 como positivo (o negativo; el signo puede cambiarse), 1 imagen con una línea casi horizontal y detectar el signo de X2, y 1 imagen con una línea diagonal que detecte su interacción.
Sin embargo, no todas las ejecuciones convergerán a un buen modelo. Algunas ejecuciones no funcionarán mejor que un modelo con 2 neuronas, y puedes ver neuronas duplicadas en estos casos.
Haga clic en el ícono de signo más para obtener la respuesta de la Tarea 4.
Una única capa oculta con 3 neuronas puede modelar los datos, pero no hay redundancia, por lo que, en muchas ejecuciones, perderá de manera efectiva una neurona y no aprenderá un buen modelo. Una sola capa con más de 3 neuronas tiene más redundancia y es más probable que converja con un buen modelo.
Como vimos, una única capa oculta con solo 2 neuronas no puede modelar bien los datos. Si lo pruebas, puedes ver que todos los elementos de la capa de salida solo pueden ser formas compuestas por las líneas de esos dos nodos. En este caso, una red más profunda puede modelar el conjunto de datos mejor que la primera capa oculta: las neuronas individuales en la segunda capa pueden modelar formas más complejas, como el cuadrante superior derecho, mediante la combinación de neuronas en la primera capa. Si bien agregar esa segunda capa oculta aún puede modelar el conjunto de datos mejor que la primera capa oculta, podría tener más sentido agregar más nodos a la primera capa para permitir que más líneas formen parte del kit desde el que la segunda capa crea sus formas.
Sin embargo, un modelo con 1 neurona en la primera capa oculta no puede aprender un buen modelo sin importar qué tan profunda sea. Esto se debe a que el resultado de la primera capa solo varía a lo largo de una dimensión (por lo general, una línea diagonal), lo que no es suficiente para modelar bien este conjunto de datos. Las capas posteriores no pueden compensar esto, sin importar lo compleja que sea. La información en los datos de entrada se perdió de forma irrecuperable.
¿Qué sucedería si, en lugar de intentar tener una red pequeña, tuviéramos muchas capas con muchas neuronas para un problema simple como este? Como vimos, la primera capa
tendrá la posibilidad de probar diferentes pendientes. Y la segunda capa tendrá la capacidad de acumularlas en muchas formas diferentes, con muchas formas hacia abajo a través de las capas posteriores.
Si permites que el modelo considere tantas formas diferentes a través de tantas neuronas ocultas diferentes, creaste un espacio suficiente para que el modelo comience a sobreajustar con facilidad en función del ruido en el conjunto de entrenamiento, lo que permite que estas formas complejas coincidan con los puntos débiles de los datos de entrenamiento en lugar de la verdad fundamental generalizada. En este ejemplo, los modelos más grandes pueden tener límites complicados para coincidir con los datos precisos. En casos extremos, un modelo grande puede aprender una isla alrededor de un punto de ruido individual, lo que se denomina memorización de los datos. Si permites que el modelo sea mucho más grande, verás que a menudo funciona peor que el modelo más simple con suficientes neuronas para resolver el problema.
Inicialización de redes neuronales
Este ejercicio vuelve a usar los datos XOR, pero analiza la repetibilidad del entrenamiento de las redes neuronales y la importancia de la inicialización.
Tarea 1: Ejecuta el modelo especificado cuatro o cinco veces. Antes de cada prueba, presiona el botón Restablecer la red para obtener una nueva inicialización aleatoria.
(El botón Restablecer la red es la flecha de restablecimiento circular que se encuentra a la izquierda del botón Reproducir). Deja que cada prueba se ejecute al menos 500 pasos para garantizar la convergencia. ¿A qué forma converge el resultado de cada modelo?
¿Qué dice esto sobre la función de inicialización en la optimización no convexa?
Tarea 2: Agrega una capa y un par de nodos adicionales para intentar que el modelo sea un poco más complejo. Repite las pruebas de la tarea 1. ¿Esto agrega algo de estabilidad adicional a los resultados?
(Las respuestas aparecen justo debajo del ejercicio).
Haga clic en el ícono de signo más para obtener la respuesta de la Tarea 1.
El modelo aprendido tenía diferentes formas en cada ejecución. La convergencia de la pérdida de prueba varió casi el doble, del valor más bajo al más alto.
Haga clic en el ícono de signo más para obtener la respuesta de la Tarea 2.
Agregar la capa y los nodos adicionales produjo resultados más repetibles.
En cada ejecución, el modelo resultante se veía casi igual. Además,
la pérdida de prueba convergente mostró menos variación entre las ejecuciones.
Espiral de red neuronal
Este conjunto de datos es un espiral muy ruidoso. Obviamente, un modelo lineal fallará aquí, pero incluso las combinaciones de atributos definidas manualmente pueden ser difíciles de construir.
Tarea 1: Entrena el mejor modelo posible; usa solo X1 y X2. Puedes agregar o quitar capas y neuronas, o cambiar la configuración de aprendizaje, como la tasa de aprendizaje, la tasa de regularización y el tamaño del lote. ¿Cuál es la mejor pérdida de prueba que puedes obtener? ¿Qué tan uniforme es la superficie de salida del modelo?
Tarea 2: Incluso con las redes neuronales, a menudo se necesita un poco de ingeniería de atributos para lograr un mejor rendimiento. Intenta agregar atributos de productos cruzados adicionales o algunas otras transformaciones, como sin(X1) y sin(X2). ¿Un modelo es mejor? ¿La superficie del resultado del modelo es más suave?
(Las respuestas aparecen justo debajo del ejercicio).
Haga clic en el ícono de signo más para ver las posibles respuestas.
En el siguiente video, se explica cómo elegir hiperparámetros en Playground a fin de entrenar un modelo para los datos en espiral que minimicen la pérdida de prueba.