# Foro: Aplicaciones de redes neuronales - Semana 4

## Intervención Principal

Cordial saludo, profesor Juan Carlos y compañeros. 

Comparto mis apreciaciones sobre las aplicaciones y el funcionamiento arquitectónico de las redes neuronales, integrando los conceptos técnicos revisados con mi experiencia práctica.

**1. ¿En qué campo se aplican las redes neuronales artificiales?**

Las redes neuronales artificiales tienen aplicación en campos orientados al análisis de grandes volúmenes de datos donde los métodos tradicionales no pueden encontrar patrones subyacentes. Destaco especialmente su uso en medicina (análisis de radiografías), finanzas (perfiles de riesgo) y mi propio campo: la automatización jurídica e inteligencia artificial aplicadas al sector público (LegalTech). Tal y como vimos en clase, dependiendo de la estructura de los datos, elegimos si aplicamos un modelo Feedforward, una red recurrente (RNN) para análisis secuencial o una convolucional (CNN) para visión artificial.

**2. ¿Cuáles son las aplicaciones de las redes neuronales artificiales?**

Sus aplicaciones son tan vastas como la tipología de datos disponibles. Desde el procesamiento de lenguaje natural (NLP) con arquitecturas de Transformers, pasando por los sistemas de predicción de variables numéricas, hasta la visión por computadora. En mi contexto trabajando con la Rama Judicial (proyecto MARDUK), hemos visto una revolución al aplicar estos modelos. Si bien lo usual es pensar en CNNs para reconocer "perros" o "gatos", la aplicación real que he vivido es el reconocimiento estructural de documentos escaneados (identificar automáticamente dónde está un sello, una firma o una cédula dentro de expedientes judiciales desordenados). 

**3. ¿Cómo funciona una red neuronal convolucional?**

Una CNN, como señalaba el ingeniero en la sesión grabada ("el ejemplo del gato y la manzana"), funciona extrayendo características progresivamente. En lugar de mirar todos los píxeles de un solo golpe, aplica algo llamado convolución: un filtro matricial recorre la imagen identificando al principio cosas muy sencillas como bordes o contrastes. Posteriormente, mediante un proceso de *pooling* (submuestreo), se reduce la cantidad de información conservando solo el rasgo más dominante. Al pasar por múltiples capas, la red deja de "ver" píxeles y empieza a reconocer abstracciones semánticas. Galea y Capelo (2018) resaltan que el secreto está en que la red aprende por sí misma qué características son importantes sin que el programador tenga que definirlas manualmente.

**4. ¿Cómo debe ser la arquitectura de una red neuronal artificial convolucional para la detección de imágenes?**

La arquitectura de detección sigue un patrón jerárquico muy claro. Primero, la imagen entra como un tensor y atraviesa bloques donde se alternan capas Conv2D (que aplican los filtros de extracción) y MaxPooling (para reducción espacial e invarianza). Adicionalmente, resulta crucial inyectarle funciones de activación no lineales como ReLU (para evitar el desvanecimiento del gradiente) y técnicas como Dropout o Batch Normalization para prevenir que el modelo memorice los datos en lugar de generalizarlos. Finalmente, una vez procesada toda la estructura espacial, los datos pasan por un Flatten (aplanamiento) y se envían a capas Densas que, mediante una función Softmax, arrojan una clasificación final. Como expone Sarkar et al. (2018), para detección de objetos específicos, esta base convolucional suele nutrirse de mecanismos adicionales para trazar "cajas" (bounding boxes) alrededor de lo detectado, como en arquitecturas tipo YOLO.

Espero que estos apuntes sean de utilidad para la discusión. Desde mi punto de vista, lo más fascinante no es la complejidad matemática subyacente, sino ver la velocidad histórica a la que estas arquitecturas han pasado de ser temas de laboratorio a convertirse en el corazón de la tecnología que usamos a diario.

**Referencias**

Galea, A., y Capelo, L. (2018). *Applied Deep Learning with Python: Use Scikit-Learn, TensorFlow, and Keras to Create Intelligent Systems and Machine Learning Solutions*. Packt Publishing.

Sarkar, D., Bali, R., y Ghosh, T. (2018). *Hands-on transfer learning with Python: Implement advanced deep learning and neural network models using TensorFlow and Keras*. Packt Publishing.

---

## Réplica 1: A Luis Alberto Gomez Ruiz

Cordial saludo, Luis Alberto. Excelente aporte. 

Has tocado uno de los puntos que me parece más apasionante de todo este ecosistema: la elección de la arquitectura base desde la óptica de la ingeniería y no solo de la academia pura. Respondiendo a tu interesante pregunta final sobre los *"criterios para elegir una arquitectura base cuando se trabajan con datasets pequeños o con restricciones de cómputo"*, mi experiencia me ha enseñado que el pragmatismo es la mejor métrica.

A decir verdad, en la automatización dentro de la Rama Judicial —donde a menudo hay un acervo documental enorme pero pobremente etiquetado, y los servidores no disponen de cientos de GPUs de última gama— la respuesta es casi siempre basarse en Transfer Learning (Sarkar et al., 2018). Jamás me arriesgaría a entrenar una arquitectura profunda desde cero bajo esas condiciones restrictivas. El criterio clave en mi proceso es: utilizar un modelo base (como un ResNet50 preentrenado) y simplemente hacer un *fine-tuning* a las últimas capas densas con nuestro corpus específico. 

Esto me ha demostrado que es posible alcanzar una solución lo suficientemente robusta sin fundir el presupuesto en estrambóticas instancias de cómputo en la nube. A fin de cuentas, la ingeniería trata en encontrar ese balance óptimo de recursos.

**Referencias**

Sarkar, D., Bali, R., y Ghosh, T. (2018). *Hands-on transfer learning with Python: Implement advanced deep learning and neural network models using TensorFlow and Keras*. Packt Publishing.

---

## Réplica 2: A Daniela Fernanda Villamil Gelvez

Cordial saludo, Daniela. Muy completo e ilustrativo tu aporte, sobre todo la representación infográfica que anexaste porque sintetiza visualmente la abstracción matemática.

Me llamó mucho la atención que subrayes de paso las técnicas de regularización como el "dropout" (abandono). Personalmente, he visto demasiados proyectos de desarrollo fracasar por subestimar sistemáticamente el sobreajuste. Al notar que el sistema en entrenamiento tiene una exactitud del 99% el equipo celebra prematuramente, pero cuando lo pones a rodar en producción —con imágenes borrosas o documentos judiciales escaneados y torcidos— el modelo colapsa de forma estrepitosa porque simplemente aprendió el "ruido" caprichoso de los datos originales, no el patrón general que necesitamos (Galea y Capelo, 2018). 

Como bien documentaste, la regularización es entonces una contramedida indispensable; es forzar a la red a no depender perezosamente de ningún nodo en específico, lo cual paradójicamente aumenta su capacidad orgánica para generalizar. Esto se enlaza de forma asombrosa con el Transfer Learning que también mencionaste. Siempre repito que en el mundo real rara vez hay datos puros que nos permitan darnos el lujo de ignorar estas técnicas protectoras.

**Referencias**

Galea, A., y Capelo, L. (2018). *Applied Deep Learning with Python: Use Scikit-Learn, TensorFlow, and Keras to Create Intelligent Systems and Machine Learning Solutions*. Packt Publishing.
