Transfer Learning
Перенос обучения повторно использует модель, обученную для одной задачи, как отправную точку для другой, поэтому для новой задачи требуется значительно меньше размеченных данных и времени на обучение.
Перенос обучения — это метод машинного обучения, при котором модель, обученную для одной задачи, используют как отправную точку для решения связанной задачи. Обучение нейронной сети со случайными весами требует больших размеченных датасетов и значительных вычислительных ресурсов, тогда как модель, предварительно обученная на миллионах изображений, уже усвоила визуальные признаки, необходимые большинству новых задач. Используя усвоенные веса модели как отправную точку, новая модель достигает высокой точности на гораздо меньшем количестве размеченных изображений и за значительно меньшее время обучения, поэтому перенос обучения — стандартный способ создавать модели компьютерного зрения для пользовательских задач.
Как работает трансферное обучение#
Перенос обучения работает, потому что глубокие сети учатся извлекать признаки иерархически. Первые слои основной сети реагируют на края, цвета и текстуры, встречающиеся почти на любом изображении, а более глубокие слои объединяют их в части объектов и понятия, специфичные для задачи. В исследовании Yosinski и соавторов измерили эту закономерность в сверточных сетях и обнаружили, что признаки первых слоев универсальны, переносимость признаков снижается в более высоких слоях по мере их специализации для исходной задачи, а перенесенные признаки улучшают обобщающую способность даже после дообучения на новом датасете.
Процесс состоит из двух этапов:
- Предобучение: Модель учится извлекать общие представления на большом бенчмарк-датасете, например ImageNet, COCO или Objects365, и получает набор предварительно обученных весов.
- Адаптация: Выходные слои, например классификатор или голова детекции, заменяют или изменяют для новых классов и обучают на целевом датасете. При извлечении признаков предварительно обученные слои замораживают и обучают только новые слои. При дообучении обновляются также некоторые или все предварительно обученные слои, обычно с меньшей скоростью обучения.
Объем сети, которую нужно переобучить, зависит от двух факторов: количества размеченных данных для новой задачи и того, насколько она похожа на данные для предобучения. В заметках Stanford CS231n описаны четыре возможных случая:
Перенос обучения для детекции объектов#
Модели обнаружения почти всегда обучают методом переноса обучения: официальные контрольные точки YOLO26 предварительно обучали на Objects365 в течение 150 эпох, прежде чем дообучать на COCO, как описано в рецепте обучения YOLO26. Если вызвать train() для загруженной контрольной точки с новым набором данных, будут перенесены все совместимые веса. Если число классов меняется, строки выходного слоя, относящиеся к классам, сбрасываются, кроме строк для совпадающих названий классов. Также поддерживается аргумент freeze, который фиксирует ранние слои и особенно полезен для небольших наборов данных.
from ultralytics import YOLO
# Загрузи веса YOLO26n, предварительно обученные на 80 классах COCO
model = YOLO("yolo26n.pt")
# Адаптируй модель к новому датасету с одним классом; freeze=10 фиксирует первые 10 слоев
results = model.train(data="medical-pills.yaml", epochs=20, freeze=10)Предварительно обученная основная сеть уже распознает формы, края и текстуры, поэтому для обучения нужно лишь научиться определять внешний вид таблетки по 92 размеченным обучающим изображениям из датасета Medical Pills.
Перенос обучения и связанные термины#
- Дообучение: Один из способов переноса обучения, при котором веса предварительно обученной модели продолжают обновляться на новых данных. Другой основной способ — извлечение признаков с замороженной основной сетью.
- Адаптация домена: Форма переноса обучения, при которой задача остается прежней, но распределение данных меняется, например при переходе от дневных изображений к ночным; целевых меток при этом часто мало или нет вовсе.
- Обучение с нулевым количеством примеров и обучение на малом количестве примеров: Позволяют работать с новыми классами без размеченных примеров или всего с несколькими примерами, полагаясь на общие знания предварительно обученной модели вместо полноценного этапа адаптации.
- Параметрически эффективное дообучение (PEFT): Адаптирует очень большие предварительно обученные модели, обучая небольшой набор добавленных или выбранных параметров, например матриц LoRA, пока исходные веса остаются замороженными.
- Катастрофическое забывание: Потеря навыков, полученных при решении исходной задачи, когда модель дообучают на новых данных. Этого эффекта можно ограничить, добавив в новый обучающий набор часть изображений исходных классов или заморозив больше слоев.










