Transfer learning — это перенос знаний из уже предобученной модели в новую задачу: вместо обучения сети с нуля вы берёте веса, embeddings или признаки, полученные на большом исходном датасете, и адаптируете их под свои данные. Метод особенно полезен, когда размеченных примеров мало или обучение с нуля слишком дорого. Он плохо подходит при сильном различии между исходным и целевым доменами, при несовместимых входных данных, при жёстких требованиях к интерпретируемости и там, где происхождение предобученной модели нельзя юридически или регуляторно проверить.
Простыми словами
Идея простая: если модель уже научилась видеть полезные закономерности на одной задаче, часть этого знания можно использовать в другой. В компьютерном зрении такие знания часто находятся в ранних слоях сети: они выделяют края, текстуры, простые формы. В языковых моделях переносится способность кодировать слова, контекст, синтаксис и устойчивые семантические связи.
На практике это выглядит так: вы берёте готовую модель, заменяете её последний слой или выходную «голову» под свою разметку, а затем либо обучаете только новый слой, либо аккуратно дообучаете часть исходной сети. Поэтому transfer learning часто выбирают там, где данных мало, сроки короткие, а получить базовую рабочую модель нужно быстрее, чем при полном обучении с нуля.
Как это работает
Перенос работает потому, что не все знания модели привязаны к одной-единственной задаче. Нижние и средние слои часто учат более общие представления, а верхние — более специфичные для исходной разметки. В transfer learning мы пытаемся сохранить общую часть и заменить или перенастроить специфичную.
- Выбирают источник. Обычно это модель, предобученная на большом и качественном датасете или на большой самообучающей задаче.
- Проверяют совместимость. Совпадают ли модальность, формат входа, масштаб изображений, язык, тип токенизации, частота аудио или другие свойства данных.
- Адаптируют архитектуру. Заменяют выходной слой, иногда добавляют новую «голову», адаптеры или проекторы.
- Сначала замораживают основу. Обучают только новую часть модели, чтобы быстро получить стабильный старт.
- Затем при необходимости размораживают часть слоёв. Дообучают их с низкой скоростью обучения, чтобы не разрушить уже полезные представления.
- Сравнивают с базой. Проверяют, действительно ли перенос лучше, чем обучение с нуля или более простая модель.
| Режим | Что переносится | Когда подходит |
|---|---|---|
| Извлечение признаков | Основа модели остаётся замороженной, обучается только новая голова | Мало данных, задача близка к исходной, нужен быстрый старт |
| Частичный fine-tuning | Размораживаются верхние блоки, остальное остаётся фиксированным | Домен похож, но есть заметные отличия в стиле данных или метках |
| Полный fine-tuning | Дообучается почти вся модель | Данных больше, требуется максимум качества, есть ресурсы и аккуратная валидация |
Ключевой риск на этом этапе — разрушить полезные представления слишком агрессивным дообучением. Поэтому для размороженных слоёв обычно используют меньшую скорость обучения, чем для новой головы. Ещё один риск — перенести не только полезный сигнал, но и смещения исходного датасета.
Зачем нужно
Transfer learning нужен не «вообще для ускорения», а для конкретной инженерной выгоды.
- Снижает требования к данным. Для многих прикладных задач достаточно существенно меньшего числа размеченных примеров.
- Ускоряет запуск. Модель стартует не из случайных весов, а из уже осмысленного состояния.
- Повышает устойчивость на малых датасетах. Перенесённые представления часто работают как полезная инициализация и частично как регуляризация.
- Сокращает стоимость экспериментов. Нужно меньше итераций, чтобы проверить гипотезу и понять, жизнеспособна ли задача.
Но перенос не отменяет базовую дисциплину: нужен чистый train-validation-test split, контроль утечек, проверка на сдвиг домена и сравнение с простыми базовыми решениями. Если в целевом домене достаточно собственных качественных данных, обучение с нуля иногда оказывается не хуже или даже лучше.
Пример
Допустим, команде нужно выявлять брак на фотографиях деталей с конвейера. Есть 3000 размеченных изображений, и этого мало для уверенного обучения глубокой CNN с нуля. Берут модель ResNet50, предобученную на ImageNet, удаляют её исходный классификатор и ставят новую голову на два класса: «норма» и «брак».
- Изображения приводят к формату, который ожидает модель.
- Основу сети сначала замораживают и обучают только новый классификатор.
- Смотрят ошибки на валидации: где модель путает загрязнение фона с дефектом, а где пропускает реальные сколы.
- Если качества не хватает, размораживают последний блок сети и дообучают его с низкой скоростью обучения.
- Отдельно контролируют дисбаланс классов и стабильность на фотографиях из разных смен и с разных камер.
Почему это работает: базовая модель уже умеет выделять формы, контуры, текстуры и локальные структуры. Для производственного брака этого часто достаточно, чтобы быстро адаптироваться. Но если завод переходит с обычной RGB-камеры на тепловизор или рентген, перенос с модели, обученной на обычных фотографиях, может стать слабым или вредным. В таком случае нужен более близкий источник предобучения или другая архитектура.
Заблуждения и ограничения
Главный технический риск — negative transfer, когда знания из исходной задачи мешают, а не помогают. Это происходит, если домены слишком разные, метки противоречат друг другу или переносится неподходящий индуктивный bias.
- «Предобученная модель всегда лучше». Нет. Если целевой домен далёк от исходного, качество может упасть по сравнению с обучением с нуля.
- «Достаточно заменить последний слой». Не всегда. Иногда нужно частично размораживать верхние блоки, менять препроцессинг или даже архитектуру головы.
- «Transfer learning решает проблему маленького датасета автоматически». Нет. Он уменьшает потребность в данных, но не исправляет плохую разметку, перекос классов и утечки между выборками.
- «Предобучение нейтрально по смещениям». Нет. Вместе с полезными признаками можно перенести bias исходного датасета, что особенно критично в HR, медицине, безопасности и кредитном скоринге.
- «Подходит для любых входов». Нет. Если тип сигнала другой — например, вы хотите перенести веса с натуральных изображений на спектрограммы, лидар или медицинские томограммы, — совместимость надо доказывать экспериментально.
- «Это всегда дешёво». Не обязательно. Дообучение больших трансформеров всё ещё требует памяти, времени и аккуратной настройки.
- «Можно не думать о лицензии и происхождении модели». Нельзя. Для некоторых проектов критичны лицензия, разрешённые способы использования, источник данных предобучения и требования регулятора.
Именно поэтому transfer learning плохо подходит как «дефолт без проверки». Его стоит применять тогда, когда есть разумная гипотеза о близости доменов и понятный план валидации.
Частые вопросы
- Чем transfer learning отличается от fine-tuning?
Transfer learning — общий подход переноса знаний из одной задачи в другую.
Fine-tuning— один из способов его реализации, когда предобученную модель дополнительно дообучают на целевых данных. - Когда достаточно заморозить основу модели?
Когда целевая задача близка к исходной, а данных мало. Тогда модель используют как экстрактор признаков: обучают только новую голову и получают быстрый, обычно стабильный базовый результат.
- Нужна ли предобученная модель именно из той же области?
Желательно, но не обязательно. Чем ближе домен, тип сигнала и характер разметки, тем выше шанс полезного переноса и ниже риск negative transfer.
- Можно ли применять transfer learning вне нейросетей?
Да. В широком смысле можно переносить признаки, представления, параметры или priors и в других методах. Но в современной практике термин чаще всего относится к глубокому обучению.
- Как понять, что перенос не подходит?
Если валидация не улучшается по сравнению с обучением с нуля, модель нестабильна на новых поднаборах, а ошибки систематически связаны со сдвигом домена, перенос, вероятно, выбран неудачно.
Связанные понятия
- Pretraining — исходный этап обучения модели на большом датасете или самообучающей задаче, из которого потом делают перенос.
- Fine-tuning — дообучение предобученной модели на целевой задаче.
- Feature extraction — использование предобученной модели как фиксированного экстрактора признаков без обновления её основной части.
- Domain adaptation — методы адаптации к новому домену, часто при различии распределений между источником и целью.
- Few-shot learning — подходы, которые стремятся решать задачу по очень малому числу примеров; transfer learning часто выступает их практической основой.
Если нужен короткий критерий выбора, он такой: transfer learning хорош там, где у вас есть умеренно близкий источник предобучения, мало размеченных данных и понятная схема проверки качества. Если источник далёкий, требования к надёжности высокие, а собственных данных достаточно, обучение с нуля или специализированное предобучение могут быть безопаснее.