COMRAD404 / GLOSSARY

Transfer learning (перенос обучения)

Transfer learning — это перенос знаний из предобученной модели в новую задачу. Он ускоряет обучение и помогает при малом датасете, но не спасает при сильном сдвиге домена.

Transfer learning — это перенос знаний из уже предобученной модели в новую задачу: вместо обучения сети с нуля вы берёте веса, embeddings или признаки, полученные на большом исходном датасете, и адаптируете их под свои данные. Метод особенно полезен, когда размеченных примеров мало или обучение с нуля слишком дорого. Он плохо подходит при сильном различии между исходным и целевым доменами, при несовместимых входных данных, при жёстких требованиях к интерпретируемости и там, где происхождение предобученной модели нельзя юридически или регуляторно проверить.

Простыми словами

Идея простая: если модель уже научилась видеть полезные закономерности на одной задаче, часть этого знания можно использовать в другой. В компьютерном зрении такие знания часто находятся в ранних слоях сети: они выделяют края, текстуры, простые формы. В языковых моделях переносится способность кодировать слова, контекст, синтаксис и устойчивые семантические связи.

На практике это выглядит так: вы берёте готовую модель, заменяете её последний слой или выходную «голову» под свою разметку, а затем либо обучаете только новый слой, либо аккуратно дообучаете часть исходной сети. Поэтому transfer learning часто выбирают там, где данных мало, сроки короткие, а получить базовую рабочую модель нужно быстрее, чем при полном обучении с нуля.

Как это работает

Перенос работает потому, что не все знания модели привязаны к одной-единственной задаче. Нижние и средние слои часто учат более общие представления, а верхние — более специфичные для исходной разметки. В transfer learning мы пытаемся сохранить общую часть и заменить или перенастроить специфичную.

  1. Выбирают источник. Обычно это модель, предобученная на большом и качественном датасете или на большой самообучающей задаче.
  2. Проверяют совместимость. Совпадают ли модальность, формат входа, масштаб изображений, язык, тип токенизации, частота аудио или другие свойства данных.
  3. Адаптируют архитектуру. Заменяют выходной слой, иногда добавляют новую «голову», адаптеры или проекторы.
  4. Сначала замораживают основу. Обучают только новую часть модели, чтобы быстро получить стабильный старт.
  5. Затем при необходимости размораживают часть слоёв. Дообучают их с низкой скоростью обучения, чтобы не разрушить уже полезные представления.
  6. Сравнивают с базой. Проверяют, действительно ли перенос лучше, чем обучение с нуля или более простая модель.
Режим Что переносится Когда подходит
Извлечение признаков Основа модели остаётся замороженной, обучается только новая голова Мало данных, задача близка к исходной, нужен быстрый старт
Частичный fine-tuning Размораживаются верхние блоки, остальное остаётся фиксированным Домен похож, но есть заметные отличия в стиле данных или метках
Полный fine-tuning Дообучается почти вся модель Данных больше, требуется максимум качества, есть ресурсы и аккуратная валидация

Ключевой риск на этом этапе — разрушить полезные представления слишком агрессивным дообучением. Поэтому для размороженных слоёв обычно используют меньшую скорость обучения, чем для новой головы. Ещё один риск — перенести не только полезный сигнал, но и смещения исходного датасета.

Зачем нужно

Transfer learning нужен не «вообще для ускорения», а для конкретной инженерной выгоды.

  • Снижает требования к данным. Для многих прикладных задач достаточно существенно меньшего числа размеченных примеров.
  • Ускоряет запуск. Модель стартует не из случайных весов, а из уже осмысленного состояния.
  • Повышает устойчивость на малых датасетах. Перенесённые представления часто работают как полезная инициализация и частично как регуляризация.
  • Сокращает стоимость экспериментов. Нужно меньше итераций, чтобы проверить гипотезу и понять, жизнеспособна ли задача.

Но перенос не отменяет базовую дисциплину: нужен чистый train-validation-test split, контроль утечек, проверка на сдвиг домена и сравнение с простыми базовыми решениями. Если в целевом домене достаточно собственных качественных данных, обучение с нуля иногда оказывается не хуже или даже лучше.

Пример

Допустим, команде нужно выявлять брак на фотографиях деталей с конвейера. Есть 3000 размеченных изображений, и этого мало для уверенного обучения глубокой CNN с нуля. Берут модель ResNet50, предобученную на ImageNet, удаляют её исходный классификатор и ставят новую голову на два класса: «норма» и «брак».

  1. Изображения приводят к формату, который ожидает модель.
  2. Основу сети сначала замораживают и обучают только новый классификатор.
  3. Смотрят ошибки на валидации: где модель путает загрязнение фона с дефектом, а где пропускает реальные сколы.
  4. Если качества не хватает, размораживают последний блок сети и дообучают его с низкой скоростью обучения.
  5. Отдельно контролируют дисбаланс классов и стабильность на фотографиях из разных смен и с разных камер.

Почему это работает: базовая модель уже умеет выделять формы, контуры, текстуры и локальные структуры. Для производственного брака этого часто достаточно, чтобы быстро адаптироваться. Но если завод переходит с обычной 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 хорош там, где у вас есть умеренно близкий источник предобучения, мало размеченных данных и понятная схема проверки качества. Если источник далёкий, требования к надёжности высокие, а собственных данных достаточно, обучение с нуля или специализированное предобучение могут быть безопаснее.

Читайте также

LINKS