Python Data Science Program
📓 Abrir notebook en GitHub

Clase 117 — Regularización moderna: Stochastic Depth, DropPath, LayerDrop

Parte: 2 — Deep Learning · Fuente: Huang et al. (2016) Stochastic Depth + Fan et al. (2020) LayerDrop + DropPath en ViT/Swin/ConvNeXt. ⏱️ Duración estimada: 70 min.

🎯 Objetivo

Aplicar regularización por paths/bloques —más allá del dropout clásico— en arquitecturas profundas modernas (ResNet, ViT, ConvNeXt, Swin Transformer). Cubrir Stochastic Depth (drop bloque residual), DropPath (drop path en transformer), LayerDrop (drop layer completa). Beneficio doble: regularización + reducción de cómputo durante training.

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. ResNet con Stochastic Depth: implementar BasicBlock con StochasticDepth(p). Train CIFAR-10.
  2. Rate lineal: aplicar p_i = i/N · 0.2 en cada bloque. Comparar contra rate constante.
  3. ViT con DropPath: timm.create_model('vit_tiny_patch16_224', drop_path_rate=0.1). Comparar contra 0.0.
  4. LayerDrop: simular con 12-layer BERT mini — drop 50 % layers. Verificar accuracy aún razonable.
  5. Speed: medir wall-clock training con vs sin Stochastic Depth.

📝 Homework verificable

ResNet-50 en CIFAR-100:

  1. Entrenar con y sin Stochastic Depth (rate lineal a 0.2 final).
  2. Reportar accuracy + tiempo total.
  3. Verificar regularización: gap train-val.

Criterio de aceptación: Stochastic Depth reduce gap train-val ≥ 1 pp; speedup en wall-time visible (~10-20 %).

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
Rate constante 0.5 en todas las capas Mata bloques iniciales (críticos). Fix: lineal con final p≈0.2.
Olvido scale en inference Sesgo. Fix: librerías lo manejan; verificar con model.eval().
DropPath sin residual Sin sentido — no hay path para droppear. Fix: solo en bloques residuales.
Aplicar a 1ª y última capa Generalmente innecesario. Fix: layers intermedias.
Combinar Dropout + Stochastic Depth + Label Smoothing sin tunear Overregularization. Fix: ajustar individualmente.

❓ Preguntas frecuentes

❓ Stochastic Depth o Dropout?

Para CNN/ViT profundas: ambos. Stochastic Depth en bloques residuales, Dropout en MLP final.

❓ Rate final 0.1 o 0.2 o 0.5?

0.1-0.2 para ResNet/ViT base. 0.3-0.5 para modelos enormes (LayerDrop en BERT-Large).

❓ LayerDrop sirve para inference?

Sí — train con LayerDrop=0.5, inference con k random layers. Habilita modelos compactos sin re-training.

❓ timm vs implementación propia?

Usá timm siempre que se pueda — DropPath bien implementado, rate scheduling automático.

❓ En LLMs modernos (Llama)?

Less común. Llama no usa DropPath. BERT/RoBERTa sí.

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 118 — TensorFlow: tensores, variables, operaciones