Cuestión 1. Estructura de la neurona y de la red
Neurona artificial. Es la unidad de cómputo básica inspirada en la neurona biológica. Recibe un vector de entradas x = (x_1, \ldots, x_n), cada una con un peso asociado w_i, calcula una suma ponderada y le añade un término independiente llamado sesgo (bias) b:
z = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b = \sum_i w_i x_i + b = w^\mathsf{T} x + b
A continuación aplica una función de activación no lineal \varphi que produce la salida de la neurona:
a = \varphi(z)
- Los pesos w_i modulan la importancia de cada entrada (se aprenden durante el entrenamiento).
- El sesgo b desplaza la función de activación, permitiendo activarse aunque todas las entradas sean nulas; aporta un grado de libertad equivalente a la ordenada en el origen.
- La función de activación introduce la no linealidad, imprescindible: sin ella, apilar capas equivaldría a una única transformación lineal (composición de lineales es lineal) y la red no podría modelar fronteras de decisión complejas.
Arquitectura del MLP (perceptrón multicapa). Es una red feedforward totalmente conectada organizada en capas:
- Capa de entrada: un nodo por característica. Aquí, al aplanar la imagen 64×64×3 → 12.288 entradas.
- Capas ocultas: una o varias capas densas (cada neurona conectada a todas las de la capa anterior) con activación ReLU. Son las que aportan capacidad de representación jerárquica.
- Capa de salida: produce la predicción. En clasificación multiclase tiene tantas neuronas como clases, con activación softmax.
La información fluye en una sola dirección (entrada → salida) sin ciclos; es un aproximador universal de funciones dada suficiente anchura/profundidad.
Papel de ReLU en las capas ocultas. ReLU (Rectified Linear Unit) se define como:
\mathrm{ReLU}(z) = \max(0, z)
Se prefiere porque:
- Mitiga el desvanecimiento del gradiente: su derivada es 1 para z>0 (constante), frente a sigmoide/tanh cuyo gradiente se satura cerca de 0 y frena el aprendizaje en redes profundas.
- Coste computacional mínimo: un simple umbral, sin exponenciales.
- Induce esparsidad: anula las activaciones negativas, lo que mejora la eficiencia y la separabilidad de representaciones.
Papel de softmax en la capa de salida. Para un problema multiclase de etiqueta única (cada imagen es exactamente «correcto», «cable suelto» o «componente dañado»), softmax convierte los logits z = (z_1, \ldots, z_K) en una distribución de probabilidad:
\mathrm{softmax}(z)_i = \frac{e^{z_i}}{\sum_j e^{z_j}}
Garantiza que cada salida \in (0,1) y que todas suman 1, de modo que se interpretan como probabilidades a posteriori de cada clase. Se combina con la pérdida entropía cruzada categórica (categorical cross-entropy) y se predice la clase de mayor probabilidad (argmax).
Número de neuronas de la capa de salida. El enunciado define 3 estados («correcto», «cable suelto», «componente dañado») → la capa de salida debe tener exactamente 3 neuronas (una por clase), con activación softmax. (No se usa sigmoide+1 neurona, propia de clasificación binaria, ni más neuronas de las clases existentes.)
Cuestión 2. Entrenamiento
Propagación hacia adelante (forward pass). Se introduce un lote de imágenes y la señal atraviesa la red capa a capa: cada capa calcula z = W^\mathsf{T} x + b y a = \varphi(z), pasando su salida a la siguiente. La capa softmax final produce la distribución de probabilidad \hat{y}. Se compara con la etiqueta real y mediante la función de pérdida (entropía cruzada categórica):
L = -\sum_i y_i \cdot \log(\hat{y}_i)
que cuantifica el error de la predicción.
Retropropagación (backpropagation). Es el algoritmo eficiente para calcular el gradiente de la pérdida respecto a cada peso y sesgo aplicando la regla de la cadena del cálculo diferencial. El error se propaga desde la salida hacia atrás capa por capa, obteniendo \partial L/\partial w_{ij} y \partial L/\partial b_i reutilizando las derivadas ya calculadas en las capas posteriores (evita recalcular).
Descenso de gradiente. Conocidos los gradientes, los parámetros se actualizan en la dirección que reduce la pérdida (sentido opuesto al gradiente):
w \leftarrow w - \eta \cdot \frac{\partial L}{\partial w} \qquad b \leftarrow b - \eta \cdot \frac{\partial L}{\partial b}
donde \eta es la tasa de aprendizaje. En la práctica se usa descenso de gradiente estocástico por mini-lotes (SGD) o variantes adaptativas como Adam (que ajusta tasas por parámetro con momentos del gradiente).
Conceptos y su relación:
- Lote (batch): subconjunto de muestras procesado en un único paso de actualización de pesos. Compromiso entre el ruido del SGD puro (batch=1) y el coste del batch completo; tamaños típicos: 32, 64, 128.
- Iteración: una actualización de pesos = procesar un batch.
- Época: una pasada completa por todo el dataset de entrenamiento. Si hay 6.000 imágenes (≈4.800 en train con 80/20) y batch=64, una época ≈ 75 iteraciones. El enunciado entrena 50 épocas.
- Tasa de aprendizaje (\eta): tamaño del paso de actualización; hiperparámetro crítico.
Problemas de la tasa de aprendizaje:
- Demasiado alta: los pasos son tan grandes que la optimización oscila, diverge o sobrepasa el mínimo; la pérdida puede no bajar o disparase a NaN.
- Demasiado baja: la convergencia es muy lenta (muchas épocas para reducir la pérdida), riesgo de quedar atrapado en mínimos locales o mesetas y desperdicio de cómputo.
La práctica recomendada es usar un learning rate moderado con planificadores (decaimiento, warm-up) u optimizadores adaptativos.
Cuestión 3. Por qué la CNN supera al MLP
Limitación del MLP con imágenes. Aplanar la imagen a 12.288 valores destruye la estructura espacial 2D (vecindad de píxeles) y obliga a aprender cada relación posición-clase de forma independiente. Además genera una explosión de parámetros: solo la primera capa densa con, por ejemplo, 256 neuronas tiene:
12{.}288 \times 256 + 256 \text{ (sesgos)} \approx 3{.}146{.}000 \text{ parámetros}
Esto lo hace propenso al sobreajuste y carente de invariancia translacional (un cable suelto desplazado unos píxeles se ve como un patrón totalmente distinto), lo que explica su estancamiento en ~61 %.
Capas convolucionales. Aplican filtros (kernels) pequeños (p. ej. 3×3×3) que se deslizan sobre la imagen calculando productos escalares locales, produciendo mapas de características. Sus propiedades clave:
- Campos receptivos locales: cada neurona del mapa solo «mira» una región pequeña de la entrada, capturando patrones locales (bordes, texturas) que en capas profundas se combinan en patrones complejos.
- Compartición de pesos: el mismo filtro se aplica en todas las posiciones, de modo que un patrón aprendido se detecta en cualquier lugar de la imagen → invariancia a la traslación y drástica reducción de parámetros.
- Aprendizaje jerárquico: capas iniciales detectan bordes; intermedias, formas; profundas, conceptos (componente, cable).
Capas de pooling. Submuestrean los mapas (p. ej. max-pooling 2×2 toma el máximo de cada ventana), reduciendo la resolución a la mitad. Aportan: reducción de dimensionalidad y cómputo, mayor campo receptivo efectivo y robustez a pequeñas variaciones de posición. No tienen parámetros entrenables.
Comparación de parámetros (el argumento decisivo). Una capa convolucional con 32 filtros de 3×3×3 tiene:
(3 \times 3 \times 3 + 1) \times 32 = 896 \text{ parámetros}
¡896 frente a los ~3.146.000 de una sola capa densa equivalente! Los pesos se comparten en toda la imagen, por lo que el número de parámetros es independiente del tamaño de entrada. Con menos parámetros la CNN:
- generaliza mejor (menos sobreajuste),
- aprovecha la estructura espacial,
- es invariante a traslaciones.
Por todo ello la CNN alcanza >89 % frente al ~61 % del MLP en este dataset de imágenes.
Cuestión 4. Control del sobreajuste
Diagnóstico. Que la pérdida de entrenamiento siga bajando mientras la de validación sube es el síntoma canónico de sobreajuste (overfitting): el modelo memoriza el ruido del conjunto de entrenamiento y pierde capacidad de generalización. Tres técnicas:
1. Dropout. Durante el entrenamiento, en cada paso «apaga» aleatoriamente una fracción p de neuronas (p. ej. p=0{,}5), poniendo su salida a 0. Esto impide la coadaptación de neuronas (ninguna puede depender en exceso de otra), forzando representaciones redundantes y robustas; equivale a entrenar un ensemble implícito de subredes. En inferencia se desactiva y se escalan las activaciones. En Keras:
model.add(layers.Dropout(0.5))
2. Parada temprana (early stopping). Monitoriza la pérdida de validación y detiene el entrenamiento cuando deja de mejorar durante un número de épocas (patience), restaurando los mejores pesos. Evita seguir entrenando justo en el punto en que val_loss empieza a subir.
es = keras.callbacks.EarlyStopping(
monitor='val_loss', patience=5, restore_best_weights=True)
model.fit(..., callbacks=[es])
3. Aumento de datos (data augmentation). Genera variantes sintéticas de las imágenes mediante transformaciones que preservan la etiqueta (rotaciones, volteos, zoom, cambios de brillo, desplazamientos). Con solo 6.000 imágenes, amplía artificialmente la variabilidad del dataset, expone al modelo a más casos y reduce su tendencia a memorizar.
data_aug = keras.Sequential([
layers.RandomFlip("horizontal"),
layers.RandomRotation(0.1),
layers.RandomZoom(0.1),
])
(Complementariamente: regularización L2/weight decay, batch normalization o ampliar el dataset real.)
Cuestión 5. Comparación con métodos clásicos
| Criterio |
Redes profundas (CNN/MLP) |
Árboles / Random Forest |
SVM |
k-NN |
| Idoneidad |
Excelentes en datos no estructurados (imagen, audio, texto); aprenden características automáticamente |
Muy buenos en datos tabulares |
Buena en alta dimensión con frontera clara |
Datasets pequeños, baja dimensión |
| Necesidad de datos |
Alta (miles–millones) |
Moderada |
Moderada |
Baja (pero coste en inferencia) |
| Interpretabilidad |
Baja («caja negra») |
Alta (reglas legibles, árbol visualizable) |
Media-baja |
Media (basada en vecinos) |
| Coste computacional/energético |
Muy alto: requiere GPU, entrenamiento largo, gran huella energética |
Bajo, CPU |
Medio (escala mal con muchas muestras) |
Entrenamiento nulo, inferencia costosa |
Discusión. Las redes profundas dominan en visión por computador porque extraen jerarquías de características sin ingeniería manual —de ahí su superioridad en este supuesto—, pero a costa de muchos datos etiquetados, cómputo en GPU, escaso poder explicativo y mayor consumo energético. Los métodos clásicos son rápidos, ligeros, interpretables y eficaces con pocos datos, especialmente sobre datos tabulares.
Cuándo elegir un método clásico en un centro educativo:
- Pocos datos disponibles: con decenas o cientos de ejemplos, un árbol o SVM generaliza mejor y la red profunda sobreajustaría.
- Necesidad de interpretabilidad: si hay que explicar al alumnado el porqué de cada decisión (fines didácticos) o justificar el resultado, un árbol de decisión es transparente.
- Sin GPU / recursos limitados: muchos centros solo disponen de equipos modestos o cuotas limitadas de Colab; un Random Forest entrena en CPU en segundos, con menor huella energética (criterio de sostenibilidad/competencia digital responsable).
- Datos tabulares (notas, asistencia, encuestas): aquí los métodos clásicos suelen igualar o superar a las redes y son más simples de mantener.
Conclusión didáctica: la elección del algoritmo debe responder al principio de parsimonia (navaja de Ockham): el modelo más simple que resuelva el problema con calidad suficiente, ponderando datos, interpretabilidad y coste, es la mejor opción —un criterio profesional clave que debe transmitirse al alumnado del módulo.