Double Descent
Descubre cómo el doble descenso hace que el error del modelo disminuya, aumente y vuelva a disminuir a medida que crece la capacidad. Explora el umbral de interpolación, ejemplos del mundo real y estrategias de evaluación.
El doble descenso es un patrón del aprendizaje automático en el que el error en datos no vistos disminuye, aumenta y vuelve a disminuir a medida que crece la capacidad del modelo. En términos intuitivos, un modelo puede empeorar antes de mejorar: un modelo de complejidad moderada puede tener dificultades para generalizar, mientras que un modelo mucho más grande puede ajustarse a los ejemplos de entrenamiento y seguir prediciendo con precisión ejemplos nuevos.
Cómo funciona el doble descenso#
El conocido compromiso entre sesgo y varianza sugiere una curva de error en forma de U. Los modelos simples sufren subajuste porque no pueden captar patrones importantes. Al principio, aumentar la complejidad mejora las predicciones, pero una flexibilidad excesiva puede hacer que las predicciones sean sensibles a los ejemplos concretos de entrenamiento. El doble descenso amplía este panorama con una segunda mejora tras el pico de error; no invalida la distinción fundamental entre sesgo y varianza. (scikit-learn.org)
El punto de inflexión es el umbral de interpolación: el punto en el que un modelo puede ajustarse a todos los ejemplos de entrenamiento o alcanzar un error de entrenamiento aproximadamente igual a cero. Cerca de este umbral, ajustar etiquetas ruidosas o incorrectas puede generar predicciones inestables. Más allá, un modelo sobreparametrizado tiene más flexibilidad de la necesaria para ajustarse a los ejemplos, lo que da lugar a múltiples soluciones posibles. Algunas generalizan mejor que otras. (openai.com)
Imagina que conectas puntos de medición dispersos. Una curva pasa por todos los puntos, pero se dobla bruscamente entre ellos; otra también se ajusta a todos los puntos, pero se comporta de forma más suave en otras zonas. Esta explicación visual del doble descenso muestra por qué un rendimiento idéntico en entrenamiento puede ocultar comportamientos predictivos muy distintos. Una mayor capacidad permite obtener mejores soluciones, pero no garantiza que el entrenamiento las encuentre. (mlu-explain.github.io)
Variantes y conceptos relacionados#
El doble descenso en función del modelo se refiere a los cambios de capacidad, como aumentar la anchura de la red. El doble descenso en función de las épocas se refiere a la duración del entrenamiento: el error en datos reservados mejora, empeora y luego vuelve a mejorar. Una época es un recorrido por el conjunto de datos de entrenamiento. La explicación del doble descenso profundo también muestra cómo cambiar el tamaño del conjunto de datos puede desplazar el umbral de interpolación y, en ocasiones, empeorar temporalmente el rendimiento con un tamaño de modelo fijo. Esto no es motivo para descartar datos útiles. (openai.com)
El doble descenso se diferencia del sobreajuste, que describe el ajuste a detalles específicos del entrenamiento en detrimento de la generalización. El sobreajuste puede explicar el tramo ascendente de la curva; el doble descenso describe el patrón más amplio de disminución, aumento y nueva disminución. Una precisión de entrenamiento perfecta, por sí sola, no demuestra ni una buena ni una mala generalización. (scikit-learn.org)
También se diferencia de la regularización, una estrategia de entrenamiento que restringe la solución aprendida. Por ejemplo, la regularización L2 penaliza los pesos grandes. Por tanto, el número de parámetros no describe por completo la complejidad efectiva de un modelo. El ruido en las etiquetas, la optimización y los ajustes de entrenamiento influyen en la aparición de una curva de doble descenso pronunciada. (developers.google.com)
Aplicaciones en el mundo real#
Estos escenarios ilustrativos muestran por qué importa el fenómeno, sin presuponer que se dé en todos los modelos de producción:
- Detección de defectos de fabricación: Un equipo compara redes que identifican arañazos en componentes. Una red de tamaño medio podría generar más falsas alarmas que otras alternativas más pequeñas y más grandes. Si las evaluaciones repetidas revelan un doble descenso, detener las comparaciones de modelos tras el primer empeoramiento podría dejar fuera un sistema de inspección mejor.
- Reconocimiento de inventario minorista: Un clasificador de imágenes de estanterías se encuentra con etiquetas de producto incoherentes. Durante el entrenamiento, el error de validación podría aumentar antes de volver a disminuir. Terminar todos los experimentos al primer aumento podría hacer que no se detectara una mejora posterior; prolongar el entrenamiento a ciegas podría, en cambio, malgastar recursos. Comparar puntos de control ayuda a distinguir estas posibilidades.
Evaluación y entrenamiento prácticos#
Busca el patrón mediante comparaciones controladas, no a partir de un único resultado decepcionante. Cambia por separado la capacidad del modelo o la duración del entrenamiento, mantén divisiones comparables de los datos y repite los experimentos con distintas semillas aleatorias. Representa conjuntamente el error de entrenamiento y el error en datos reservados siguiendo los principios de las curvas de validación. Si representas la precisión en lugar del error, la dirección de la curva se invierte. (scikit-learn.org)
Usa la validación cruzada cuando proceda y reserva un conjunto de prueba intacto para la evaluación final. Evita la fuga de datos, que se produce cuando información de los datos de evaluación entra en el entrenamiento o la selección del modelo. La parada temprana sigue siendo útil, pero su paciencia —el número de evaluaciones permitidas sin mejora— debe reflejar los objetivos del experimento, no una forma de curva que se dé por supuesta. (scikit-learn.org)
Para seguir un flujo práctico de evaluación de Ultralytics YOLO, instala ultralytics con pip install ultralytics. En este ejemplo se utiliza YOLO26, el modo de entrenamiento documentado y el modo de validación. (docs.ultralytics.com)
from ultralytics import YOLO
if __name__ == "__main__":
model = YOLO("yolo26n.pt")
# A small dataset keeps this workflow demonstration lightweight.
model.train(data="coco8.yaml", epochs=3)
# Evaluate images held out from training.
metrics = model.val(data="coco8.yaml")
print(f"Validation mAP50-95: {metrics.box.map:.3f}")El resultado es la precisión media promedio en distintos umbrales de solapamiento de detección; cuanto mayor, mejor. COCO8 es un conjunto de datos para comprobar flujos de trabajo, no una prueba de doble descenso. Para demostrar el fenómeno hace falta un experimento controlado más amplio con datos representativos. La lección práctica es medir la generalización, en lugar de dar por sentado que los modelos más grandes o un entrenamiento más prolongado siempre ayudan o perjudican. (docs.ultralytics.com)









