Training Data
El conjunto de entrenamiento es el conjunto de ejemplos a partir del cual un modelo aprende sus pesos. Descubre en qué se diferencia de los conjuntos de validación y prueba, y por qué la calidad de las etiquetas importa tanto como el volumen.
Los datos de entrenamiento son el conjunto de ejemplos del que aprende un modelo de aprendizaje automático. Durante el entrenamiento, un optimizador ajusta repetidamente los pesos del modelo para reducir el error en esos ejemplos, que por tanto determinan lo que el modelo puede aprender. En el aprendizaje supervisado, cada ejemplo empareja una entrada con la respuesta correcta; por ejemplo, una foto de una calle con un cuadro delimitador y el nombre de clase de cada coche y peatón. El aprendizaje autosupervisado y el aprendizaje no supervisado se entrenan con entradas sin procesar y sin etiquetas. «Conjunto de entrenamiento» es un sinónimo y, en la mayoría de los proyectos, constituye la partición más grande de los datos disponibles, normalmente entre el 70 % y el 80 %.
Cómo utilizan los modelos los datos de entrenamiento#
El modelo procesa los datos de entrenamiento por lotes. Para cada lote, genera predicciones; una función de pérdida mide cuánto se desvían de las etiquetas, la retropropagación calcula cuánto ha contribuido cada peso al error y el optimizador ajusta los pesos para reducirlo. Una pasada completa por el conjunto de entrenamiento es una época, y el entrenamiento suele durar de decenas a cientos de épocas.
Como el modelo se optimiza con estos mismos ejemplos, su puntuación en ellos exagera su rendimiento con datos nuevos. Para corregirlo, se utilizan dos particiones reservadas. Los datos de validación se evalúan durante el desarrollo para elegir hiperparámetros y puntos de control, mientras que los datos de prueba se evalúan una sola vez al final para estimar el rendimiento en el mundo real. Una gran diferencia entre las puntuaciones de entrenamiento y validación indica sobreajuste: el modelo memoriza los ejemplos de entrenamiento en lugar de aprender patrones que generalicen. Las puntuaciones bajas en ambos conjuntos indican subajuste. Las particiones no deben compartir imágenes: fotogramas casi idénticos del mismo vídeo o escaneos del mismo paciente en ambos lados de la división causan fuga de datos e inflan todas las puntuaciones de los conjuntos reservados.
Cantidad, calidad y cobertura#
Tres propiedades de un conjunto de entrenamiento determinan la capacidad de generalización del modelo:
- Cantidad: Más ejemplos ayudan, aunque cada ejemplo adicional aporta menos. Empezar con un modelo preentrenado mediante aprendizaje por transferencia reduce la cantidad de ejemplos etiquetados que necesita una tarea nueva.
- Calidad: Cada etiqueta incorrecta, ausente o dibujada de forma incoherente enseña algo falso al modelo. Las directrices coherentes de etiquetado de datos son tan importantes como la cantidad de etiquetas.
- Cobertura: Los ejemplos deben abarcar las condiciones a las que se enfrentará el modelo, como la iluminación, el tiempo, los ángulos de cámara, los fondos y las clases poco frecuentes. Un detector entrenado solo con imágenes diurnas falla por la noche; si las carencias siguen líneas demográficas, como la ausencia de determinados tonos de piel en un conjunto de rostros, se convierten en sesgo del conjunto de datos.
El script de scikit-learn de abajo entrena el mismo clasificador con distintos conjuntos de entrenamiento utilizando el conjunto de datos de dígitos manuscritos incluido y evalúa cada modelo con una única partición de prueba fija:
import numpy as np
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 1,797 labeled 8x8 digit images; hold out 30% to score every model
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)
# Reassign 30% of the training labels at random to simulate careless labeling
rng = np.random.default_rng(0)
y_noisy = y_train.copy()
flip = rng.random(len(y_train)) < 0.3
y_noisy[flip] = rng.integers(0, 10, flip.sum())
# Train the same model on three different training sets
for name, n, labels in [("50 clean", 50, y_train), ("1,257 clean", 1257, y_train), ("1,257 noisy", 1257, y_noisy)]:
model = LogisticRegression(max_iter=5000).fit(X_train[:n], labels[:n])
print(f"{name}: test accuracy {model.score(X_test, y_test):.3f}")Ampliar el conjunto de entrenamiento limpio de 50 a 1257 imágenes eleva la precisión de prueba de 0,863 a 0,961. La ejecución con ruido, en la que 315 de las 1257 etiquetas (el 25 %) acaban siendo incorrectas, obtiene 0,861, sin superar el modelo entrenado con 50 imágenes limpias.
Cómo crear un conjunto de entrenamiento#
Los equipos reúnen datos de entrenamiento a partir de conjuntos de datos públicos, sus propias cámaras y registros, y cada vez más datos sintéticos. Los conjuntos de referencia públicos ofrecen un buen punto de partida: el conjunto de datos COCO incluye 118 287 imágenes de entrenamiento etiquetadas para detección, segmentación y generación de descripciones. A continuación, las recopilaciones sin procesar se someten a limpieza de datos para eliminar duplicados, archivos dañados e imágenes irrelevantes, y después se lleva a cabo el etiquetado y la revisión. El aumento de datos multiplica la variedad durante el entrenamiento mediante volteos, recortes, cambios de color y mosaicos; pero solo puede recombinar lo que se ha recopilado, así que cualquier condición ausente debe fotografiarse.
Ultralytics YOLO lee los datos de entrenamiento desde la ruta train de un archivo YAML del conjunto de datos y empareja cada imagen con un archivo de etiquetas .txt, que contiene una fila por objeto: un índice de clase seguido del centro, la anchura y la altura del cuadro, normalizados al tamaño de la imagen. El mismo formato de conjunto de datos YOLO sirve para todas las particiones, así que para reequilibrarlas hay que mover las imágenes y sus archivos de etiquetas entre carpetas.
from ultralytics import YOLO
# Carga un modelo nano YOLO26 preentrenado
model = YOLO("yolo26n.pt")
# coco8.yaml enumera las imágenes de entrenamiento (train: images/train) y las imágenes de validación (val: images/val)
results = model.train(data="coco8.yaml", epochs=5)El modelo YOLO26 ajusta sus parámetros con las cuatro imágenes de entrenamiento de COCO8, una pequeña muestra que sirve para comprobar que una canalización de entrenamiento funciona de principio a fin.
Datos de entrenamiento frente a términos relacionados#
- Datos de validación: Una partición reservada que orienta las decisiones durante el desarrollo, como cuándo detener el entrenamiento. El modelo nunca actualiza sus pesos con estos datos.
- Datos de prueba: Una partición reservada que se evalúa una sola vez al final, para que el resultado sea una estimación imparcial del rendimiento con datos nuevos.
- Verdad de referencia: Las respuestas correctas asociadas a los ejemplos. En el aprendizaje supervisado, los datos de entrenamiento incluyen la verdad de referencia, pero todas las particiones la necesitan para la evaluación.
- Conjunto de datos de referencia: Un conjunto pequeño, revisado por expertos, que se usa como referencia fiable para la evaluación y los controles de calidad del etiquetado.
- Conjunto de datos de benchmark: Un conjunto de datos público con divisiones fijas que se usa para comparar modelos. Su división de entrenamiento suele servir también como datos de preentrenamiento, y su división reservada se convierte en la tabla de clasificación, como ocurre con la división val2017 de COCO, con 5.000 imágenes, en la que muchos artículos sobre detección presentan sus resultados de mAP.










