Transfer learning con mascotas
Objetivo
Comparar extracción de características, fine-tuning y entrenamiento desde cero.
Dataset real
- Dataset:
oxford_iiit_pet - Fuente: Torchvision / Oxford
- Referencia: https://www.robots.ox.ac.uk/~vgg/data/pets/
- Licencia/condiciones: Uso académico según fuente
- Uso: los datos se descargan desde la fuente; no hay ejemplos sintéticos ni archivos inventados.
7.349 imágenes reales de 37 razas de perros y gatos.
Fundamento matemático
Inicializar con pesos ImageNet y ajustar capas seleccionadas.
Protocolo experimental
- Descargar y verificar la procedencia.
- Conservar o crear una partición reproducible.
- Ajustar transformaciones únicamente con
train. - Seleccionar modelo e hiperparámetros usando
validation. - Evaluar
testuna sola vez tras congelar la decisión. - Comparar con la línea base: CNN pequeña entrenada desde cero.
- Guardar configuración, entorno, métricas, predicciones, gráficos y modelo.
Ejecución
python labs/11_transfer_learning/train.py --quick
python labs/11_transfer_learning/train.py --config improved
Preparar únicamente el dataset:
python -m neural_labs.cli dataset --lab 11_transfer_learning
Inferencia y exportación:
neural-labs predict --lab 11_transfer_learning --run latest --input sample.json
neural-labs export --lab 11_transfer_learning --run latest --format onnx --verify
Métricas
accuracy, balanced_accuracy, macro_f1.
Archivos
notebook.ipynb: recorrido completo y ejecutable.notebook_student.ipynb: actividades evaluables sin soluciones.notebook_solution.ipynb: resolución docente y pruebas de referencia.train.py: interfaz de terminal que usa el mismo código del cuaderno.configs/baseline.yaml: configuración base.configs/improved.yaml: configuración ampliada.data/dataset.yaml: procedencia, licencia y política de partición.
Ejercicios
- Cambiar una decisión experimental y justificarla.
- Analizar errores por clase o segmento.
- Comparar costo, precisión y latencia.
- Documentar sesgos, limitaciones y usos no recomendados.
Material formativo v3
theory.md: fundamento, protocolo y riesgos de interpretación.experiments.md: hipótesis, variables controladas y tabla multi-semilla.assessment.md: preguntas y rúbrica de evaluación.lesson.yaml: resultados de aprendizaje, prerrequisitos y entregables.
Comandos profesionales
neural-labs quality --lab 11_transfer_learning --quick
neural-labs benchmark --lab 11_transfer_learning --quick --split-seed 42 --training-seeds 41 42 43
neural-labs leaderboard
Sellado del experimento
La partición se controla con split_seed; la inicialización y el entrenamiento con training_seed. El conjunto test se abre solamente después de seleccionar el checkpoint mediante validación y escribir experiment.lock.json.
🧠 Teoría
Teoría — Transfer learning con mascotas
Propósito
Comparar extracción de características, fine-tuning y entrenamiento desde cero.
Idea central
Este laboratorio estudia reutilización de representaciones preentrenadas usando oxford_iiit_pet, un dataset público real procedente de Torchvision / Oxford.
La idea del aprendizaje por transferencia es que una red entrenada sobre un problema grande (clasificar millones de imágenes de ImageNet en 1000 categorías) aprende representaciones visuales genéricas —bordes, texturas, formas, partes de objetos— que sirven para otras tareas de visión. En vez de partir de pesos aleatorios y aprender todo desde cero con nuestras 7.349 imágenes de 37 razas de perros y gatos (un dataset pequeño), reutilizamos esa red preentrenada como punto de partida. La intuición es que las primeras capas de una CNN capturan características de bajo nivel casi universales, y solo las últimas capas son específicas de la tarea original; por eso conviene conservar lo genérico y readaptar lo específico.
El laboratorio contrasta tres estrategias sobre el mismo backbone. En la extracción de características se congela toda la red preentrenada y se entrena únicamente una nueva cabeza de clasificación: la red actúa como un extractor fijo de embeddings. En el fine-tuning se descongelan algunas (o todas) las capas y se las reajusta con una tasa de aprendizaje pequeña, adaptando las representaciones a las mascotas. Y el entrenamiento desde cero parte de pesos aleatorios como línea base. Comparar los tres responde una pregunta práctica central: ¿cuándo aporta el preentrenamiento y cuándo deja de compensar?
Fundamento matemático
Sea un modelo dividido en un cuerpo de extracción de características f(·; θ_f) y una cabeza de clasificación h(·; θ_h), de modo que la predicción es ŷ = h(f(x; θ_f); θ_h). En un entrenamiento desde cero, θ_f y θ_h se inicializan al azar y se optimizan ambos minimizando la entropía cruzada ℒ = −Σ_c y_c log ŷ_c mediante θ ← θ − η ∇_θ ℒ. La transferencia cambia la inicialización y qué parámetros reciben gradiente: se parte de θ_f = θ_f^{ImageNet}, pesos ya optimizados sobre un problema masivo, en lugar de ruido aleatorio. Conectando con los cuatro elementos: la representación de entrada es la imagen normalizada con las mismas estadísticas de ImageNet; la función del modelo es h∘f con backbone preentrenado; la función de pérdida es la entropía cruzada sobre las 37 clases; y la regla de actualización es descenso de gradiente, aplicado a distintos subconjuntos de parámetros según la estrategia. El notebook muestra las dimensiones de los tensores y conserva la misma implementación que el script de terminal.
La diferencia operativa entre estrategias es qué gradientes se propagan. En extracción de características se fija ∇{θ_f} ℒ = 0 (capas congeladas) y solo se actualiza θ_h; esto es rápido, usa poca memoria y resiste el sobreajuste cuando hay pocos datos, porque hay muchos menos parámetros que ajustar. En fine-tuning se permite ∇ ℒ ≠ 0 en las capas descongeladas, pero con una tasa η pequeña: la razón es que los pesos preentrenados ya están cerca de una buena solución, y un η grande los destruiría (fenómeno de olvido catastrófico) antes de que la cabeza —inicialmente aleatoria— produzca gradientes sensatos. Una práctica común es entrenar primero solo la cabeza y luego descongelar gradualmente el cuerpo con learning rate reducido.
¿Por qué transfieren las características? Yosinski et al. mostraron empíricamente que la transferibilidad decae con la profundidad: las capas iniciales aprenden filtros genéricos (parecidos a detectores de bordes y color, casi idénticos entre tareas) mientras que las capas finales se especializan en las clases de la tarea original. Cuanto más se parezcan la tarea origen y la destino, más capas conviene reutilizar; cuanto más difieran, más capas hay que readaptar. Formalmente, esto encaja en el marco de Pan & Yang: transferimos conocimiento de un dominio origen 𝒟_S (ImageNet) a un dominio destino 𝒟_T (mascotas) que comparten el espacio de características pero difieren en la distribución de entrada y en la tarea. El beneficio del preentrenamiento es mayor cuanto menor es el dataset destino y mayor la afinidad entre dominios; con suficientes datos destino, entrenar desde cero puede alcanzar —o superar— a la transferencia, y ahí es donde el preentrenamiento deja de aportar.
Protocolo científico
- Ajustar transformaciones, vocabulario, normalización y selección de variables solo con
train. - Usar
validationpara arquitectura, hiperparámetros, checkpoint y umbrales. - Evaluar
testuna vez, después de congelar las decisiones. - Comparar contra CNN pequeña entrenada desde cero.
- Reportar variación entre semillas e intervalos de confianza; una métrica puntual no expresa toda la incertidumbre.
Riesgos de interpretación
7.349 imágenes reales de 37 razas de perros y gatos.
El dataset refleja su proceso de recolección y no representa automáticamente otros períodos, países o poblaciones. Una asociación predictiva no demuestra causalidad.
Pregunta crítica
¿Cuándo el preentrenamiento deja de aportar?
Las referencias apuntan a las obras; no se reproduce su contenido, la redacción es original.
🔗 Referencias
- Géron — Hands-On Machine Learning (3.ª ed., O'Reilly), cap. 14 — CNN profundas y reutilización de modelos preentrenados para visión.
- Goodfellow, Bengio & Courville — Deep Learning (MIT Press, 2016), cap. 15 — aprendizaje de representaciones y transferencia entre tareas.
- Yosinski et al. (2014), How transferable are features in deep neural networks?, NeurIPS — estudio empírico de cómo la transferibilidad decae con la profundidad de la capa.
- Pan & Yang (2010), A Survey on Transfer Learning, IEEE Transactions on Knowledge and Data Engineering — marco conceptual de dominios y tareas origen/destino.
- Fuente del dataset: https://www.robots.ox.ac.uk/~vgg/data/pets/
- Consulte
docs/experiment-protocol.md,docs/reproducibility.mdydocs/ethics-and-licenses.md.
🔬 Experimentos
Plan de experimentos — Transfer learning con mascotas
Hipótesis principal
Comparar extracción de características, fine-tuning y entrenamiento desde cero. La hipótesis debe aceptarse o rechazarse comparando el modelo con CNN pequeña entrenada desde cero y no solo observando que la pérdida disminuye.
Experimento mínimo
- Ejecutar
baseline.yamlcon tres semillas. - Ejecutar
improved.yamlcon las mismas semillas. - Mantener fija la partición de datos dentro de cada semilla.
- Elegir la variante con
validation. - Comparar la variante elegida contra la línea base en
test. - Revisar intervalos de confianza, errores y costo computacional.
Experimento específico
Comparar congelamiento parcial y fine-tuning.
Variables controladas
- Dataset y política de partición.
- Semillas declaradas.
- Presupuesto de épocas y criterio de parada.
- Métrica de selección:
accuracyo la especificada en la configuración. - Hardware y versiones registradas en
environment.json.
Tabla que debe completarse
| Variante | Semilla | Métrica validation | Métrica test | Tiempo | Parámetros | Observación |
|---|---|---|---|---|---|---|
| baseline | 41 | |||||
| baseline | 42 | |||||
| baseline | 43 | |||||
| improved | 41 | |||||
| improved | 42 | |||||
| improved | 43 |
Criterio de conclusión
La conclusión debe declarar magnitud de la mejora, incertidumbre, costo adicional, errores relevantes y condiciones bajo las cuales el resultado podría no repetirse.
📝 Evaluación
Evaluación — Transfer learning con mascotas
Evidencias obligatorias
- Dataset preparado y auditoría sin solapamientos.
- Notebook ejecutado sin celdas omitidas.
- Línea base y modelo neuronal comparados.
- Resultados de al menos tres semillas o justificación del costo.
- Análisis de errores y limitaciones.
- Model card actualizada.
Preguntas
- Explique con sus palabras: Inicializar con pesos ImageNet y ajustar capas seleccionadas.
- ¿Qué información del dataset solo puede utilizarse durante entrenamiento?
- ¿Por qué la línea base CNN pequeña entrenada desde cero es una comparación razonable?
- ¿Cuándo el preentrenamiento deja de aportar?
- ¿Qué cambiaría antes de usar este modelo fuera del laboratorio?
Rúbrica
| Criterio | Insuficiente | Adecuado | Excelente | Peso |
|---|---|---|---|---|
| Integridad de datos | mezcla particiones | separación correcta | auditoría, hashes y justificación | 20% |
| Implementación | no ejecuta | entrena y evalúa | código claro, reusable y probado | 20% |
| Diseño experimental | resultado aislado | comparación controlada | multi-semilla e incertidumbre | 20% |
| Análisis | repite métricas | interpreta errores | identifica sesgos, límites y costo | 25% |
| Comunicación | incompleta | reporte entendible | model card y conclusiones verificables | 15% |
La aprobación exige al menos 70% y cero errores críticos de fuga de datos.