Главная Веб-разработка Трансферное обучение: что это, как работает и для чего нужно

Трансферное обучение: что это, как работает и для чего нужно

от admin

Ещё одна причина, почему нейросети развиваются так быстро.

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

Трансферное обучение: что это, как работает и для чего нужно

Иван Сметанников

Тимлид команды машинного обучения и искусственного интеллекта в Serokell, кандидат технических наук, работал доцентом на факультете информационных технологий и программирования ИТМО.

Что такое трансферное обучение

Представьте, что шеф-повар пиццерии попросил вас разработать нейросеть, которая могла бы по фотографии отличать пиццу «Пепперони» от «Гавайской».

В классическом подходе вам пришлось бы собрать большой датасет, обучить нейросеть распознавать изображения и только после этого объяснить ИИ, чем различаются две пиццы. Это заняло бы много времени, а итоговая модель могла бы решать только одну задачу. Например, если в меню появится пицца «Четыре сыра», то весь процесс обучения придётся начинать сначала.

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

Модель уже научилась понимать, что картинки ― это картинки и что на них бывают признаки, на которые надо смотреть: линии, формы и чёрточки. Часть из них она переиспользует, когда начинает дообучаться на новых данных. Благодаря трансферному обучению мы можем быстро получать точные результаты.

Трансферное обучение: что это, как работает и для чего нужно

Подходы к трансферному обучению

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

Выделение признаков

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

Для этого возьмём модель ResNet, которую до нас уже обучили распознавать картинки и выделять из них универсальные векторные признаки, например края, текстуры и формы. В ней мы «заморозим» веса классификационных слоёв, чтобы на выходе получать только массивы векторных признаков.

Такая система будет принимать на вход датасет, извлекать из каждого изображения ключевые признаки и сохранять их в векторном виде, который хорошо понимают нейросети. После на полученных данных можно переобучить классификационные слои ResNet с заморозкой базовых. Так нейросеть научится различать кошек и собак на фотографиях и не забудет, как выделять векторные признаки изображений.

Заморозка слоёв — это приостановка обновления весов в некоторых слоях, чтобы они не менялись во время обучения на новых данных. На первых этапах мы используем лишь часть старой сети, например 20% начальных слоёв, а остальную часть заменяем случайными числами.

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

Файн-тюнинг

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

У языковой модели уже есть собственный токенизатор, поэтому нам не придётся его создавать самим. Надо будет только поверх предобученной нейросети установить дополнительный слой-классификатор с числом выходных нейронов, равных количеству возможных оценок тональности отзыва, и запустить обучение. BERT уже очень многое умеет, поэтому во время файн-тюнинга можно выбрать меньший learning rate и запускать обучение всего на паре эпох.

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

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

Адаптация предметной области

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

Межъязыковой трансфер

Например, нам всё так же надо обучить нейросеть определять тональность отзывов на сайте, но уже на корейском языке. У нас есть два размеченных датасета: в первом несколько десятков тысяч отзывов на русском, которые мы собрали на маркетплейсах, а во втором всего несколько тысяч отзывов на корейском. Обучить с нуля нейросеть для работы с корейским языком мы не можем — слишком мало данных. Поэтому используем межъязыковой трансфер.

Читать также:
Трудности разработчиков, провал Copilot и вызовы ИИ в Африке

Для этого обучим BERT определять тональность отзывов на русском языке, как уже делали в примере с файн-тюнингом, и запустим дообучение на датасете с корейскими отзывами. Нейросеть с самого начала умела работать с текстами — просто мы перенесли умение на новый язык.

Главная фишка метода в том, что нейросети не надо знать корейский язык, чтобы научиться с ним работать. Модель уже хорошо работает с русским, а во время дообучения найдёт паттерны и поймёт, как их можно использовать с другим языком.

Трансферное обучение: что это, как работает и для чего нужно

Zero-shot-обучение

С такими задачами хорошо справляется ChatGPT — языковая модель, которую уже обучили на большом количестве текстов. Например, нам надо разделить электронные письма по трём классам: запрос на возврат, вопрос о продукте и жалоба на качество. Мы можем просто текстом описать классы и попросить ChatGPT рассортировать их.

Трансферное обучение: что это, как работает и для чего нужно

Описать классы можно так:

  • класс 1: «Электронное письмо связано с запросом на возврат»;
  • класс 2: «Электронное письмо связано с жалобой на качество»;
  • класс 3: «Электронное письмо связано с вопросом о продукте».

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

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

Плюсы и минусы трансферного обучения

Плюсы:

  • Экономия ресурсов. Обучать нейросети с нуля долго и дорого. Если использовать предобученные модели, то можно значительно уменьшить затраты.
  • Нужно меньше данных. Для трансферного обучения можно использовать небольшие датасеты. Основная нейросеть уже умеет выполнять базовые задачи, поэтому её надо только адаптировать.
  • Удобство прототипирования. На базе уже готовой модели можно быстро создать прототип и протестировать его на реальных задачах. Благодаря этому становится проще экспериментировать с нейросетями.

Минусы:

  • Зависимость от предобученных моделей. Не для каждой задачи есть базовая нейросеть с открытым исходным кодом, которую можно дообучить на собственных данных.
  • Проблемы совместимости. Если предобученная нейросеть работает со специфическим форматом данных, то придётся адаптировать весь датасет.
  • Риск переобучить нейрость. Во время трансферного обучения можно случайно задеть важные знания базовой модели, что плохо скажется на качестве ответов нейросети.

Где используют трансферное обучение

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

  • Компьютерное зрение. Если надо создать нейросеть для классификации изображений или обнаружения объектов, то за основу можно взять модель, которая уже умеет работать с картинками.
  • Обработка текстов. Трансферное обучение подходит для подстройки больших языковых моделей под конкретные задачи. Например, так создают чат-ботов для генерации кода.
  • Генерация изображений. Большую нейросеть для генерации картинок можно дообучить создавать работы в стиле известных художников.
  • Распознавание речи. Если нейросеть уже умеет обрабатывать речь, то можно дополнительно научить её понимать специфические термины.
  • Рекомендательные системы. Нейросети в онлайн-магазинах анализируют паттерны поведения пользователя в одной категории товаров, а после применяют их для рекомендации чего-то нового.

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

Что в итоге

  • Трансферное обучение — это подход в машинном обучении, когда модель переиспользует имеющиеся знания, чтобы решить новую задачу.
  • Благодаря этому подходу разработчики могут быстрее обучать нейросети, экономить ресурсы и использовать меньше данных в датасетах.
  • Трансферное обучение используется в компьютерном зрении, обработке естественного языка, медицине и других сферах.
  • Сильные стороны метода — высокая точность, быстрая адаптация и возможность работы с малым объёмом данных.
  • Слабые стороны метода — низкая эффективность при большой разнице между исходными и целевыми задачами.

Датасет — структурированный набор данных, который используют для обучения нейросетей.

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

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

Токенизатор — система, которая разбивает текст на небольшие части, токены. Токенами могут быть слова, слоги или даже отдельные символы.

Learning rate, или темп обучения, — параметр, который определяет, насколько сильно надо изменять веса модели после ошибки. Чем выше темп, тем быстрее обучается нейросеть.

Эпоха (epoch) — цикл, за который датасет проходит через нейросеть.

Батч — небольшая часть датасета, которая проходит через нейросеть за одну итерацию.

Похожие статьи