Red Neuronal Simple para Reconocimiento de Dígitos Manuscritos con TensorFlow
Alexander Oviedo Fadul
Maria Fernanda Ruiz Paipilla
Neheman Samir Jaller Cerchiaro
William David Obando Lopez
Corporación Universitaria Minuto de Dios – UNIMINUTO
Especialización en Inteligencia Artificial
NRC-8773: Visión por Computador
Docente: Félix Julián Gutiérrez Bernal
Semana 5
Junio de 2026
Red Neuronal Simple para Reconocimiento de Dígitos Manuscritos con TensorFlow
Enlace del notebook en Google Colab: https://colab.research.google.com/drive/[ENLACE_DEL_GRUPO]
Introducción
Desde finales de la década de 1940, la neurociencia computacional comenzó a plantear modelos matemáticos que buscaban replicar, de forma abstracta, el funcionamiento del cerebro biológico. La unidad fundamental de esos modelos es la neurona artificial: una unidad de procesamiento que recibe múltiples señales de entrada ponderadas por coeficientes llamados pesos (ω) y produce una única salida. Esta operación equivale matemáticamente a una regresión lineal con sesgo, tal como señala Ballard (2018) al describir las redes neuronales clásicas.
La capacidad de una red neuronal para aprender patrones complejos surge de la combinación de este procesamiento lineal con las funciones de activación que introducen no linealidad. Sin ellas, apilar múltiples capas equivale a una sola transformación lineal. El algoritmo de retropropagación, combinado con el descenso de gradiente, ajusta iterativamente los pesos para minimizar el error entre las predicciones y los valores reales. Este ciclo de aprendizaje automático es, en esencia, la forma en que una máquina emula el proceso de aprendizaje por repetición y corrección del error.
En el presente trabajo implementamos una red neuronal densa simple para el reconocimiento de dígitos manuscritos del 0 al 9 usando el framework TensorFlow y el dataset MNIST, siguiendo la metodología desarrollada por el docente Félix Julián Gutiérrez Bernal en la sesión sincrónica de la semana 5 del NRC-8773.
Fundamentos Teóricos
La Neurona Artificial
Una neurona artificial es una unidad de procesamiento inspirada en el cerebro biológico que recibe n entradas (x₁, x₂, ..., xₙ) ponderadas por pesos (ω₁, ω₂, ..., ωₙ), calcula su combinación lineal y aplica una función de activación para producir una salida. Dadhich (2018) describe cómo las imágenes digitales, al ser fundamentalmente matrices numéricas de píxeles con valores entre 0 y 255, se convierten directamente en el vector de entrada de la red.
Función de Activación y No Linealidad
La función de activación transforma la salida lineal de una neurona en una señal no lineal, permitiendo que la red aprenda patrones complejos. En nuestro modelo usamos dos funciones: ReLU (Rectified Linear Unit) en la capa oculta, que devuelve el valor si es positivo y 0 en caso contrario; y Softmax en la capa de salida, que convierte los valores en una distribución de probabilidades que suman 1 sobre las 10 clases posibles.
Descenso de Gradiente y Retropropagación
El entrenamiento se realiza mediante la retropropagación del error: el modelo calcula la diferencia entre su predicción y la etiqueta real usando la función de pérdida (categorical crossentropy), computa el gradiente de ese error respecto a cada peso mediante la regla de la cadena, y ajusta los pesos en la dirección opuesta al gradiente con el optimizador Adam. Este proceso se repite en lotes (mini-batches) de 100 imágenes durante 5 épocas.
Desarrollo — Implementación con TensorFlow
Importación del Dataset MNIST
El dataset MNIST contiene 70,000 imágenes de dígitos manuscritos: 60,000 para entrenamiento y 10,000 para prueba. Cada imagen tiene dimensiones de 28×28 píxeles en escala de grises, representada como una matriz de 784 valores enteros entre 0 (negro) y 255 (blanco). Keras incluye MNIST de forma nativa mediante la instrucción: (X_train, Y_train), (X_test, Y_test) = mnist.load_data().
Preprocesamiento de los Datos
Antes de alimentar las imágenes a la red se realizaron dos transformaciones esenciales. Primero, el reshape agrega una dimensión de canal (28×28 → 28×28×1) y la normalización divide los valores de píxel por 255 para llevarlos al rango [0, 1], mejorando la estabilidad numérica del entrenamiento. Segundo, se aplicó one-hot encoding a las etiquetas usando to_categorical: el dígito 3 se convierte, por ejemplo, en el vector [0,0,0,1,0,0,0,0,0,0], lo que permite compararlo directamente con la salida softmax del modelo (Ballard, 2018).
Arquitectura de la Red Neuronal
El modelo secuencial implementado en Keras consta de tres capas. La primera es Flatten, que convierte la imagen 28×28×1 en un vector de 784 elementos (proceso que el docente describió en clase como 'llevar una imagen bidimensional a una única dimensión'). La segunda es una capa Dense con 128 neuronas y activación ReLU: aprende representaciones intermedias de los patrones visuales de los dígitos. La tercera es la capa de salida Dense con 10 neuronas y activación Softmax: produce una distribución de probabilidades sobre los 10 dígitos posibles. El total de parámetros entrenables es de 101,770.
Justificación de la Arquitectura
La elección de 128 neuronas en la capa oculta responde a un equilibrio bien establecido en la literatura: provee suficiente capacidad representacional para capturar las características visuales de los dígitos (curvas, líneas, bucles) sin generar sobreajuste en un dataset de tamaño moderado. Ballard (2018) señala que el número óptimo de unidades es un hiperparámetro a ajustar experimentalmente; 128 es el punto de partida estándar para MNIST. El uso de una sola capa oculta es suficiente para este problema, dado que las imágenes MNIST son relativamente simples y el objetivo es didáctico: sentar las bases conceptuales antes de avanzar a las redes convolucionales de la siguiente semana.
Configuración de Tensores y Entrenamiento
El modelo se compiló con el optimizador Adam (variante del descenso de gradiente con tasa de aprendizaje adaptativa), la función de pérdida categorical_crossentropy (apropiada para clasificación multiclase con etiquetas one-hot) y la métrica accuracy. El entrenamiento se ejecutó durante 5 épocas con mini-batches de 100 imágenes, utilizando el conjunto de prueba como datos de validación en cada época.
Resultados Obtenidos
El modelo alcanzó una exactitud de validación de aproximadamente 97.47% al finalizar la quinta época. Los resultados por época evidencian una convergencia rápida: la exactitud pasó del 90.97% en la primera época al 98.15% en entrenamiento, con una pérdida que descendió de 0.3310 a 0.0653. La diferencia entre la exactitud de entrenamiento y la de validación es mínima (~0.7 puntos porcentuales), lo que indica que el modelo generalizó correctamente sin sobreajuste.
De las 10,000 imágenes del conjunto de prueba, el modelo clasificó correctamente aproximadamente 9,747, cometiendo errores en 253 casos. Los errores más frecuentes ocurren entre dígitos con formas visualmente similares (4 y 9, o 3 y 8), lo cual es esperable en una red densa que no aprovecha la estructura espacial de la imagen.
Estado de la IA en Colombia
Colombia avanza de manera progresiva en la adopción de la inteligencia artificial. El Documento CONPES 3975 de 2019 estableció la Política Nacional de Inteligencia Artificial, reconociendo que es una tecnología estratégica para el desarrollo socioeconómico del siglo XXI y comprometiendo al Estado en la formación de talento, el desarrollo de infraestructura digital y la generación de marcos regulatorios.
En el sector público, iniciativas como el proyecto MARDUK en el Consejo Superior de la Judicatura han demostrado que las redes neuronales pueden automatizar tareas documentales complejas: reconocimiento de entidades en expedientes judiciales, clasificación de tutelas y análisis de tiempos procesales. Este tipo de aplicaciones —análogas en principio a lo que implementamos con MNIST— evidencian que el reconocimiento de patrones en datos no estructurados tiene un enorme potencial en el sector justicia colombiano.
Sin embargo, persisten brechas importantes: la infraestructura computacional es limitada fuera de los grandes centros urbanos; la inversión en investigación y desarrollo como porcentaje del PIB sigue siendo baja; y la formación de profesionales especializados en IA apenas inicia en programas de posgrado como el que cursamos. El reto es que estas herramientas —hoy accesibles vía Google Colab sin costo— se democraticen realmente y no queden concentradas en las élites tecnológicas de unas pocas ciudades.
Conclusiones
1. El ejercicio de implementar una red neuronal simple con TensorFlow confirmó que el proceso de aprendizaje automático es, en esencia, la minimización iterativa de un error mediante el ajuste de parámetros: un proceso análogo —aunque abstracto— al aprendizaje por repetición y corrección del cerebro biológico.
2. El preprocesamiento de los datos (reshape, normalización y one-hot encoding) resultó ser tan determinante como la arquitectura del modelo: sin datos correctamente preparados, el entrenamiento no converge adecuadamente.
3. La arquitectura Flatten → Dense(128, ReLU) → Dense(10, Softmax) logró un ~97.5% de exactitud en el conjunto de prueba con solo 5 épocas, demostrando que redes relativamente simples son capaces de resolver problemas bien definidos con alta precisión.
4. El entrenamiento por mini-batches demostró ser eficiente: dividir 60,000 imágenes en lotes de 100 permitió entrenar en minutos en Google Colab, manteniendo buena capacidad de generalización.
5. Las redes densas presentan limitaciones intrínsecas para imágenes complejas, ya que no explotan la estructura espacial. Las redes convolucionales (CNN), tema de la siguiente semana, abordan precisamente esta limitación.
6. Colombia tiene el potencial para desarrollar IA aplicada a sus desafíos específicos (justicia, salud, agricultura), pero requiere inversión sostenida en talento humano, infraestructura y marcos regulatorios que garanticen un uso ético y equitativo.
Referencias
Ballard, W. (2018). Hands-on deep learning for images with TensorFlow: Build intelligent computer vision applications using TensorFlow and Keras (Chapter 3, pp. 33–51). Packt Publishing.
Consejo Nacional de Política Económica y Social [CONPES]. (2019). Documento CONPES 3975: Política Nacional para la Transformación Digital e Inteligencia Artificial. Departamento Nacional de Planeación.
Dadhich, A. (2018). Practical computer vision: Extract insightful information from images using TensorFlow, Keras, and OpenCV (Chapter 2, pp. 23–38). Packt Publishing.
Google Colaboratory. (s.f.). Google Colab. https://colab.research.google.com/
Quiñones Huatangari, L., Ochoa Toledo, L., Gamarra Torres, O., Bazán Correa, J., Delgado Soto, J., & Kemper Valverde, N. (2020). Red neuronal artificial para estimar un índice de calidad de agua. Enfoque UTE, 11(2), 113-124. https://doi.org/10.29019/enfoque.v11n2.633
TensorFlow. (s.f.). TensorFlow documentation. https://www.tensorflow.org/