Трансферное обучение: что это, как работает и для чего нужно
Ещё одна причина, почему нейросети развиваются так быстро.


Иллюстрация: Оля Ежак для Skillbox Media
Обучать нейросети долго и дорого: нужно собрать много данных, разметить их, запустить модель и ждать, пока она научится принимать правильные решения. Но в некоторых случаях можно схитрить: взять уже обученную, «умную» модель и использовать её знания. В этой статье рассказываем про трансферное обучение — метод повторного использования обученных нейросетей для решения смежных задач.
Содержание
- Что такое трансферное обучение
- Подходы к трансферному обучению
- Плюсы и минусы трансферного обучения
- Где используют трансферное обучение

Иван Сметанников
Тимлид команды машинного обучения и искусственного интеллекта в Serokell, кандидат технических наук, работал доцентом на факультете информационных технологий и программирования ИТМО.
Что такое трансферное обучение
Трансферное обучение (transfer learning) — это подход в машинном обучении, в котором уже обученную нейросеть используют для тренировки нового навыка. Это позволяет сэкономить время и ресурсы, так как модель не приходится учить всему с нуля.
Представьте, что шеф-повар пиццерии попросил вас разработать нейросеть, которая могла бы по фотографии отличать пиццу «Пепперони» от «Гавайской».
В классическом подходе вам пришлось бы собрать большой датасет, обучить нейросеть распознавать изображения и только после этого объяснить ИИ, чем различаются две пиццы. Это заняло бы много времени, а итоговая модель могла бы решать только одну задачу. Например, если в меню появится пицца «Четыре сыра», то весь процесс обучения придётся начинать сначала.
В случае с трансферным обучением можно взять уже готовую нейросеть для работы с изображениями и дообучить её определять начинку пиццы, а в будущем адаптировать для распознавания других блюд. Идея простая: система уже знает, как классифицировать изображения определённого типа, поэтому этот навык можно будет применить к любым картинкам.
«Модель уже научилась понимать, что картинки ― это картинки и что на них бывают признаки, на которые надо смотреть: линии, формы и чёрточки. Часть из них она переиспользует, когда начинает дообучаться на новых данных. Благодаря трансферному обучению мы можем быстро получать точные результаты».
Иван Сметанников, data science team lead в Serokell
Подходы к трансферному обучению
В трансферном обучении есть несколько основных подходов, которые применяют в зависимости от задач.
Выделение признаков
Выделение признаков (feature extraction) — подход, в котором заранее обученную нейросеть используют для извлечения из данных универсальных числовых представлений (признаков). После этого обучают небольшую модель-классификатор, которая генерирует ответы на основе полученных ранее признаков.
Представьте, что нам надо создать нейросеть для поиска на изображениях кошек и собак. У нас уже есть размеченный датасет с фотографиями животных, но данных слишком мало, что обучить модель с нуля. В этом случае можно использовать метод выделения признаков.
Для этого возьмём модель ResNet, которую до нас уже обучили распознавать картинки и выделять из них универсальные векторные признаки, например края, текстуры и формы. В ней мы «заморозим» веса классификационных слоёв, чтобы на выходе получать только массивы векторных признаков.
Такая система будет принимать на вход датасет, извлекать из каждого изображения ключевые признаки и сохранять их в векторном виде, который хорошо понимают нейросети. После на полученных данных можно переобучить классификационные слои ResNet с заморозкой базовых. Так нейросеть научится различать кошек и собак на фотографиях и не забудет, как выделять векторные признаки изображений.
«Заморозка слоёв — это приостановка обновления весов в некоторых слоях, чтобы они не менялись во время обучения на новых данных. На первых этапах мы используем лишь часть старой сети, например 20% начальных слоёв, а остальную часть заменяем случайными числами.
Если начать обучение без заморозки, то случайные значения повлияют на веса начальных слоёв и нейросеть перестанет распознавать базовые признаки изображений. Позже слои можно разморозить и слегка дообучить, чтобы улучшить качество работы сети».
Иван Сметанников, data science team lead в Serokell
Файн-тюнинг
Файн-тюнинг (fine-tuning) — способ адаптации нейросети под новую задачу с помощью изменения части её весов. Обычно корректируют только верхние слои модели, которые отвечают за принятие итогового решения, а нижние веса определения базовых признаков не трогают.
Представьте, что нам надо обучить нейросеть определять, какая тональность у отзывов на сайте: нейтральная, положительная или отрицательная. Для этого, например, можно использовать BERT — языковую модель, которая уже умеет анализировать текст. Ещё потребуется размеченный датасет, состоящий из примеров отзывов с одной из возможных оценок. Чем больше данных будет в обучающем наборе, тем лучше BERT будет определять тональность текста.
У языковой модели уже есть собственный токенизатор, поэтому нам не придётся его создавать самим. Надо будет только поверх предобученной нейросети установить дополнительный слой-классификатор с числом выходных нейронов, равных количеству возможных оценок тональности отзыва, и запустить обучение. BERT уже очень многое умеет, поэтому во время файн-тюнинга можно выбрать меньший learning rate и запускать обучение всего на паре эпох.
Для ещё большего ускорения можно также заморозить нижние слои. В BERT они определяют базовые языковые конструкции, например порядок слов в предложении. Мы не собираемся заново учить нейросеть понимать текст, поэтому достаточно будет обучить только верхние слои.
В результате у нас получится всё та же языковая модель BERT со всеми своими лингвистическими знаниями, но лучше определяющая тональность отзывов. При этом благодаря файн-тюнингу мы сэкономили время на обучении.
Адаптация предметной области
Адаптация предметной области (domain adaptation) — процесс переноса знаний нейросети из одной предметной области (домена) в смежную. Например, модель для распознавания животных на фотографиях высокого качества можно научить искать зверей на снимках с камер видеонаблюдения с низким разрешением.
В этом случае надо будет работать с двумя доменами: исходным и целевым. В исходном собраны данные, на которых нейросеть уже обучена, а в целевом — для которых хотим адаптировать систему. Во время дообучения в нейросеть подаются батчи как из исходного, так и из целевого домена, чтобы модель научилась выявлять закономерности.
Межъязыковой трансфер
Межъязыковой трансфер (cross-lingual transfer learning) — метод обучения нейросети пониманию нового языка. Так, если модель уже умеет работать с текстами на английском, то её можно адаптировать под русский язык или любой другой.
Например, нам всё так же надо обучить нейросеть определять тональность отзывов на сайте, но уже на корейском языке. У нас есть два размеченных датасета: в первом несколько десятков тысяч отзывов на русском, которые мы собрали на маркетплейсах, а во втором всего несколько тысяч отзывов на корейском. Обучить с нуля нейросеть для работы с корейским языком мы не можем — слишком мало данных. Поэтому используем межъязыковой трансфер.
Для этого обучим BERT определять тональность отзывов на русском языке, как уже делали в примере с файн-тюнингом, и запустим дообучение на датасете с корейскими отзывами. Нейросеть с самого начала умела работать с текстами — просто мы перенесли умение на новый язык.
Главная фишка метода в том, что нейросети не надо знать корейский язык, чтобы научиться с ним работать. Модель уже хорошо работает с русским, а во время дообучения найдёт паттерны и поймёт, как их можно использовать с другим языком.

Читайте также:
Zero-shot-обучение
Zero-shot-обучение (zero-shot learning), или обучение без примеров, — метод, который позволяет нейросети классифицировать данные, которых не было в обучающем датасете. Для него не надо собирать новые данные, размечать их, запускать обучение.
С такими задачами хорошо справляется ChatGPT — языковая модель, которую уже обучили на большом количестве текстов. Например, нам надо разделить электронные письма по трём классам: запрос на возврат, вопрос о продукте и жалоба на качество. Мы можем просто текстом описать классы и попросить ChatGPT рассортировать их.
Описать классы можно так:
- класс 1: «Электронное письмо связано с запросом на возврат»;
- класс 2: «Электронное письмо связано с жалобой на качество»;
- класс 3: «Электронное письмо связано с вопросом о продукте».
С этими вводными нейросеть будет читать письма и на основе содержания определять их в соответствующую группу. Например, письмо с текстом «Здравствуйте, я хочу вернуть бракованный товар» попадёт в первый класс. Изначально нейросеть не учили сортировать письма, но она умеет анализировать текст и понимает его смысл.
«В этом примере лучше обрабатывать данные в два этапа. Сначала использовать большую языковую модель для сбора данных, а после обучить на них небольшую и шуструю нейросеть для классификации отзывов по тональности. В долгосрочной перспективе это поможет сэкономить ресурсы без снижения качества».
Иван Сметанников, data science team lead в Serokell
Плюсы и минусы трансферного обучения
Плюсы:
- Экономия ресурсов. Обучать нейросети с нуля долго и дорого. Если использовать предобученные модели, то можно значительно уменьшить затраты.
- Нужно меньше данных. Для трансферного обучения можно использовать небольшие датасеты. Основная нейросеть уже умеет выполнять базовые задачи, поэтому её надо только адаптировать.
- Удобство прототипирования. На базе уже готовой модели можно быстро создать прототип и протестировать его на реальных задачах. Благодаря этому становится проще экспериментировать с нейросетями.
Минусы:
- Зависимость от предобученных моделей. Не для каждой задачи есть базовая нейросеть с открытым исходным кодом, которую можно дообучить на собственных данных.
- Проблемы совместимости. Если предобученная нейросеть работает со специфическим форматом данных, то придётся адаптировать весь датасет.
- Риск переобучить нейрость. Во время трансферного обучения можно случайно задеть важные знания базовой модели, что плохо скажется на качестве ответов нейросети.
Где используют трансферное обучение
Разработчики используют трансферное обучение в задачах, в которых мало данных для обучения нейросети, но их можно получить из других моделей:
- Компьютерное зрение. Если надо создать нейросеть для классификации изображений или обнаружения объектов, то за основу можно взять модель, которая уже умеет работать с картинками.
- Обработка текстов. Трансферное обучение подходит для подстройки больших языковых моделей под конкретные задачи. Например, так создают чат-ботов для генерации кода.
- Генерация изображений. Большую нейросеть для генерации картинок можно дообучить создавать работы в стиле известных художников.
- Распознавание речи. Если нейросеть уже умеет обрабатывать речь, то можно дополнительно научить её понимать специфические термины.
- Рекомендательные системы. Нейросети в онлайн-магазинах анализируют паттерны поведения пользователя в одной категории товаров, а после применяют их для рекомендации чего-то нового.
«Чаще всего трансферное обучение используют в компьютерном зрении и обработке языков. В других сферах метод плохо прижился. В частных задачах до сих пор вручную анализируют данные и создают признаки».
Иван Сметанников, data science team lead в Serokell
Что в итоге
- Трансферное обучение — это подход в машинном обучении, когда модель переиспользует имеющиеся знания, чтобы решить новую задачу.
- Благодаря этому подходу разработчики могут быстрее обучать нейросети, экономить ресурсы и использовать меньше данных в датасетах.
- Трансферное обучение используется в компьютерном зрении, обработке естественного языка, медицине и других сферах.
- Сильные стороны метода — высокая точность, быстрая адаптация и возможность работы с малым объёмом данных.
- Слабые стороны метода — низкая эффективность при большой разнице между исходными и целевыми задачами.
Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!