Training Data
Обучающие данные — это набор примеров, на которых модель учится настраивать веса. Чем они отличаются от валидационных и тестовых данных и почему качество разметки не менее важно, чем объём.
Обучающие данные — это набор примеров, на которых учится модель машинного обучения. Во время обучения оптимизатор многократно корректирует веса модели, чтобы уменьшить ошибку на этих примерах. Именно поэтому обучающие данные определяют, чему может научиться модель. В обучении с учителем каждый пример содержит входные данные и правильный ответ, например фотографию улицы с ограничивающей рамкой и названием класса для каждого автомобиля и пешехода. Самообучение и обучение без учителя используют исходные данные без меток. Обучающая выборка — синоним обучающих данных; в большинстве проектов это самая большая часть доступных данных, обычно 70–80 процентов.
Как модели используют обучающие данные#
Модель получает обучающие данные пакетами. Для каждого пакета она строит прогнозы, функция потерь измеряет их отличие от меток, обратное распространение ошибки вычисляет вклад каждого веса в ошибку, а оптимизатор корректирует веса, чтобы её уменьшить. Один полный проход по обучающей выборке называется эпохой. Обычно обучение продолжается от нескольких десятков до нескольких сотен эпох.
Поскольку модель оптимизируется на этих конкретных примерах, оценка на них завышает качество работы на новых данных. Для его корректной оценки используют две отложенные выборки. По валидационным данным оценивают модель в ходе разработки, чтобы выбрать гиперпараметры и контрольные точки, а тестовые данные оценивают один раз в конце, чтобы определить качество модели в реальных условиях. Большой разрыв между оценками на обучающей и валидационной выборках указывает на переобучение: модель запоминает обучающие примеры вместо того, чтобы находить обобщаемые закономерности. Низкие оценки на обеих выборках указывают на недообучение. Выборки не должны содержать общие изображения: почти одинаковые кадры из одного видео или снимки одного пациента в обеих выборках приводят к утечке данных и завышают все оценки на отложенных данных.
Количество, качество и охват#
Способность модели обобщать зависит от трёх характеристик обучающей выборки:
- Количество: большее число примеров помогает, но польза от каждого следующего примера постепенно уменьшается. Использование предварительно обученной модели с помощью переноса обучения сокращает количество размеченных примеров, необходимых для новой задачи.
- Качество: каждая неправильная, пропущенная или непоследовательно нарисованная метка учит модель чему-то неверному. Единые правила разметки данных важны не меньше, чем количество меток.
- Охват: примеры должны охватывать условия, в которых будет работать модель, например освещение, погоду, ракурсы камер, фоны и редкие классы. Детектор, обученный только на дневных изображениях, не справляется ночью. Если пробелы в данных соответствуют демографическим группам, например в наборе данных лиц отсутствуют определённые оттенки кожи, возникает смещение набора данных.
Приведённый ниже скрипт scikit-learn обучает один и тот же классификатор на встроенном наборе данных рукописных цифр с разными обучающими выборками, а затем оценивает каждую модель на одной и той же фиксированной тестовой выборке:
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}")Увеличение чистой обучающей выборки с 50 до 1,257 изображений повышает точность на тестовой выборке с 0.863 до 0.961. Модель, обученная на данных с шумом, где 315 из 1,257 меток (25%) оказались неправильными, достигает оценки 0.861 — не лучше модели, обученной на 50 изображениях с правильной разметкой.
Создание обучающей выборки#
Команды собирают обучающие данные из общедоступных наборов данных, данных собственных камер и журналов, а также всё чаще используют синтетические данные. Общедоступные бенчмарки дают хорошую отправную точку: набор данных COCO содержит 118,287 обучающих изображений с разметкой для детекции, сегментации и создания описаний. Затем исходные данные проходят очистку, в ходе которой удаляют дубликаты, повреждённые файлы и изображения не по теме, после чего выполняется разметка и проверка. Аугментация данных повышает разнообразие обучающих данных за счёт отражений, обрезки, изменения цветов и мозаик. Однако она может лишь комбинировать уже собранные данные, поэтому отсутствующие условия всё равно нужно снимать.
Ultralytics YOLO загружает обучающие данные по пути train из файла YAML с описанием набора данных и сопоставляет каждое изображение с файлом меток .txt, в котором для каждого объекта указана отдельная строка: индекс класса, координаты центра рамки, ширина и высота, нормализованные относительно размера изображения. Для всех выборок используется один и тот же формат набора данных YOLO, поэтому для перебалансировки выборок нужно переместить изображения и соответствующие файлы меток между папками.
from ultralytics import YOLO
# Загрузи предварительно обученную nano-модель YOLO26
model = YOLO("yolo26n.pt")
# coco8.yaml перечисляет обучающие изображения (train: images/train) и валидационные изображения (val: images/val)
results = model.train(data="coco8.yaml", epochs=5)Модель YOLO26 дообучается на четырёх обучающих изображениях из COCO8 — крошечного примера, который используют для проверки сквозной работы конвейера обучения.
Обучающие данные и родственные термины#
- Валидационные данные: отложенная выборка, которая помогает принимать решения в ходе разработки, например определять, когда остановить обучение. Модель не обновляет на ней свои веса.
- Тестовые данные: отложенная выборка, которую оценивают один раз в конце, чтобы получить объективную оценку качества модели на новых данных.
- Эталонные данные: правильные ответы, связанные с примерами. В обучении с учителем обучающие данные содержат эталонные ответы, но они необходимы для оценки каждой выборки.
- Золотой датасет: Небольшой набор данных, проверенный экспертами и используемый как надежный эталон для оценки и проверки качества разметки.
- Бенчмарк-датасет: Общедоступный набор данных с фиксированными разбиениями, который используют для сравнения моделей. Его обучающая выборка часто одновременно служит данными для предобучения, а отложенная выборка становится основой таблицы результатов, как в случае с выборкой COCO val2017 из 5 000 изображений, на которой многие статьи о детекции приводят mAP.










