Construir y entrenar una red neuronal capaz de reconocer dígitos escritos a mano puede lograrse en apenas veinte o treinta líneas de código. Lo sorprendente no es solo la brevedad del proceso, sino los resultados: un 97 % de accuracy en el conjunto de prueba. A continuación se explica paso a paso cómo se entrena el modelo y qué significan los indicadores que aparecen durante el proceso.
¿Cómo se entrena una red neuronal con el comando fit?
Una vez que la arquitectura del modelo está definida, los datos están limpios y el modelo está compilado, el siguiente paso es entrenar la red. Para ello se utiliza el método fit, cuya sintaxis resulta familiar si ya has trabajado con frameworks como Scikit-learn [01:00].
python
model.fit(X_train, Y_train, epochs=5, batch_size=128)
- X_train y Y_train representan el set de entrenamiento: los datos de entrada y sus etiquetas (labels) correspondientes.
- El parámetro epochs indica cuántas veces la red recorrerá todo el conjunto de datos. En este caso se configuran cinco épocas, es decir, cinco iteraciones completas sobre los datos.
- El parámetro batch_size define el tamaño de los lotes con los que la red procesa la información. Aquí se usan 128 unidades por lote.
Al ejecutar este comando, la red neuronal realiza un gran volumen de cálculos matemáticos buscando una solución al problema de clasificar números del cero al nueve [01:25].
¿Qué ocurre durante cada época de entrenamiento?
Durante el entrenamiento se observan dos métricas clave en cada época:
- Accuracy (precisión): indica el porcentaje de predicciones correctas. Con cada iteración, este valor sube progresivamente.
- Loss (pérdida): mide qué tan lejos están las predicciones del resultado correcto. Este valor se reduce conforme avanza el entrenamiento.
Este comportamiento es el esperado: la red aprende y mejora en cada pasada por los datos. Sin embargo, lo que sucede internamente funciona como una caja negra — no vemos directamente los ajustes de pesos y sesgos, pero sí comprobamos su efecto en las métricas [01:42].
¿Cómo se evalúa el rendimiento del modelo entrenado?
Para confirmar que la red realmente aprendió y no solo memorizó los datos de entrenamiento, se utiliza el método evaluate sobre un conjunto de datos que la red nunca vio durante el entrenamiento [02:00].
python
model.evaluate(X_test, Y_test)
- X_test contiene las imágenes de prueba.
- Y_test contiene las etiquetas reales correspondientes.
El resultado arroja una accuracy del 97 %, lo que confirma que el modelo generaliza correctamente al enfrentarse a datos nuevos.
¿Por qué este resultado es tan relevante?
Lograr un 97 % de precisión en análisis de imágenes con apenas unas pocas líneas de código demuestra el poder de las redes neuronales modernas. Aun así, quedan preguntas abiertas que son fundamentales para comprender a fondo el proceso [02:30]:
- ¿Por qué se eligen determinadas funciones de activación como ReLU o Softmax?
- ¿Qué papel juega la función de pérdida y por qué se selecciona una específica?
- ¿Cómo funciona el optimizador que ajusta los pesos de la red?
- ¿Qué implica realmente el reshape de los datos antes del entrenamiento?
Estas piezas —activaciones, loss functions, optimizadores, epochs, batches— son los engranajes que hacen posible el aprendizaje. Saber ejecutar el código es el primer paso; entender el porqué de cada decisión es lo que permite construir modelos más robustos y adaptarlos a problemas reales.
El siguiente paso natural es estudiar el perceptrón, la unidad fundamental de toda red neuronal, para comprender cómo cada neurona procesa la información y contribuye al resultado final. Si lograste entrenar tu primer modelo, ahora es momento de entender qué ocurre por dentro. ¿Qué parte del proceso te generó más curiosidad? Compártelo en los comentarios.