Curriculum Learning
Обучение с постепенным усложнением сначала использует более простые примеры, а затем постепенно добавляет сложные, ориентируясь на оценку сложности и функцию темпа.
Обучение по curriculum — это стратегия машинного обучения, при которой примеры предъявляются в осмысленном порядке, обычно от простых к сложным, а не выбираются равновероятно случайным образом. Подобно школьной программе, она позволяет нейронной сети сначала усвоить общие простые закономерности на чистых примерах, прежде чем встретиться с неоднозначными, загромождёнными или зашумлёнными данными. В 2009 году Bengio и соавторы сформулировали эту идею применительно к глубокому обучению: по их мнению, постепенное усложнение упрощает оптимизацию невыпуклой функции потерь и помогает находить лучшие минимумы; они сообщили о значительном улучшении обобщающей способности в задачах распознавания форм и языкового моделирования.
Как работает обучение по учебному плану#
В обучении по curriculum нужны два компонента, которые Hacohen и Weinshall называют функцией оценки и функцией темпа. Функция оценки ранжирует обучающие данные по сложности, используя человеческие эвристики, например размер объекта, перекрытие или длину предложения, уверенность предварительно обученной модели-учителя либо значение функции потерь обучаемой модели. Функция темпа определяет, как быстро в обучающую выборку добавляются более сложные примеры, например начиная с самых простых 20% и постепенно переходя ко всему набору данных. В приведённом ниже фрагменте кода игрушечный набор данных оценивается моделью-учителем, а модель-ученик обучается на постепенно расширяемой выборке, начиная с самых простых примеров, с помощью scikit-learn:
import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression, SGDClassifier
# A toy dataset with 10% flipped labels, so some samples are genuinely hard
X, y = make_classification(n_samples=2000, n_features=20, flip_y=0.1, random_state=0)
# Scoring function: a teacher's confidence in each true label, sorted easiest first
teacher = LogisticRegression(max_iter=1000).fit(X, y)
confidence = teacher.predict_proba(X)[np.arange(len(y)), y]
order = np.argsort(-confidence)
# Pacing function: start with the easiest 20% and add 20% more each epoch
student = SGDClassifier(random_state=0)
for epoch in range(5):
pool = order[: int((0.2 + 0.2 * epoch) * len(order))]
student.partial_fit(X[pool], y[pool], classes=[0, 1])
print(f"Epoch {epoch}: {len(pool)} samples, mean teacher confidence {confidence[pool].mean():.2f}")Выборка увеличивается с 400 до 2000 примеров, а средняя уверенность модели-учителя снижается с 0.99 до 0.89, когда в последнюю эпоху добавляются самые сложные 20% примеров.
Самостоятельное обучение избавляет от необходимости в модели-учителе: модель строит собственную программу обучения, опираясь на текущую функцию потерь. Это одно из основных семейств методов обучения по curriculum в обзоре Soviany и соавторов. На каждом шаге в обучающую выборку добавляются примеры, с которыми модель уже хорошо справляется, а порог функции потерь повышается, пока не будут включены все примеры.
Когда обучение по curriculum помогает#
Обучение по curriculum помогает реже, чем можно предположить. Проведя тысячи запусков обучения, Wu, Dyer и Neyshabur обнаружили лишь незначительный эффект на стандартных тестах компьютерного зрения: случайный порядок данных в расширяющейся выборке давал не худший результат, чем упорядочивание от простого к сложному. При ограниченном бюджете времени на обучение или зашумлённых метках результаты улучшались — именно в этих условиях специалисты чаще всего применяют этот подход.
Примеры применения в реальных условиях#
В обучении с подкреплением для робототехники сложность задач повышают по мере того, как агент совершенствуется. OpenAI научила роботизированную руку собирать кубик Рубика с помощью автоматической рандомизации домена: диапазоны симулируемой физики и внешнего вида расширялись каждый раз, когда политика достаточно хорошо справлялась с текущим диапазоном.
В компьютерном зрении curriculum для обнаружения объектов может сначала включать крупные объекты без перекрытий, а позже — мелкие объекты, загромождённые сцены или изображения при плохом освещении. При обучении Ultralytics YOLO26 акценты тоже меняются со временем: в функции потерь end-to-end на каждой эпохе вес постепенно переносится с плотной головы «один-ко-многим» на голову «один-к-одному», используемую nms=False, а close_mosaic=10 отключает мозаику, MixUp, CutMix и аугментацию с копированием и вставкой изображений за последние 10 эпох, чтобы обучение завершалось на изображениях, похожих на реальные входные данные. При анализе медицинских изображений обучение может начинаться со снимков, в разметке которых согласны эксперты, а неоднозначные случаи добавляются позже. Это подходит для работы с зашумлёнными метками — условий, в которых curriculum приносит наибольшую пользу.
Обучение по curriculum и смежные понятия#
- Непрерывное обучение: непрерывное обучение со временем добавляет новые задачи или распределения данных и должно предотвращать забывание старых. Обучение по curriculum меняет порядок данных для одной фиксированной задачи.
- Активное обучение: активное обучение выбирает, какие неразмеченные примеры отправить на разметку, а обучение по curriculum упорядочивает уже размеченные примеры.
- Перенос обучения: перенос обучения предварительно обучает модель на большом универсальном наборе данных, а затем дообучает её для другой целевой задачи, то есть между этапами меняется сама задача.
- Поиск сложных негативных примеров: при поиске сложных примеров акцент делается на тех, в которых модель чаще всего ошибается, что противоположно curriculum с обучением от простого к сложному. При онлайн-поиске сложных примеров (OHEM) для детекторов Fast R-CNN обратное распространение ошибки выполняется только через регионы-кандидаты с наибольшими значениями функции потерь на каждом изображении.










