Предобученные модели и трансфер-обучение

Понимаем главную идею экосистемы: учиться не с нуля, а на готовом фундаменте.

Трансфер-обучение (transfer learning) — приём, при котором модель, обученную на большой общей задаче, дообучают под конкретную узкую задачу с малым количеством данных.

Почему не учат с нуля

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

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

Два этапа: предобучение и дообучение

ЭтапКто делаетДанные
Предобучение (pretraining)Крупные лабораторииМиллиарды слов из интернета
Дообучение (fine-tuning)ВыТысячи примеров вашей задачи

Предобучение даёт модели общее «понимание» языка. Дообучение настраивает её под конкретику: классификацию отзывов вашего магазина, извлечение сущностей из медицинских текстов и так далее.

Что значит «общие закономерности»

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

Как работает под капотом

Технически дообучение — это продолжение обучения той же нейросети, но на новых данных и обычно с маленькой скоростью обучения (learning rate), чтобы не «стереть» накопленные знания. Часто к предобученной модели добавляют новую «голову» (последний слой) под конкретную задачу: для классификации это слой, выдающий вероятности классов. Связь с курсами по глубокому обучению и PyTorch здесь прямая — под капотом это обычная нейросеть и градиентный спуск.

Частые ошибки

  • Дообучать на слишком большом learning rate. Модель «забывает» предобученные знания (catastrophic forgetting).
  • Брать модель не для той области. Модель на английском плохо дообучается на русский — лучше взять многоязычную или русскоязычную базу.
  • Думать, что дообучение всегда нужно. Часто готовая модель через pipeline() решает задачу без всякого дообучения.

Итог

  • Предобученная модель уже выучила общие закономерности языка на огромном корпусе.
  • Трансфер-обучение — дообучение такой модели под узкую задачу на малых данных.
  • Это в тысячи раз дешевле обучения с нуля.
  • Маленький learning rate сохраняет накопленные знания.
Проверьте себя
1. Что такое трансфер-обучение?
AОбучение модели с нуля на своих данных
BДообучение предобученной модели под узкую задачу
CПеренос модели на другой сервер
DСжатие модели для мобильных устройств
2. Почему дообучение требует меньше данных, чем обучение с нуля?
AПотому что модель меньше по размеру
BПотому что модель уже выучила общие закономерности языка
CПотому что используется другой алгоритм
DПотому что данные сжимаются
3. Что произойдёт при слишком большом learning rate во время дообучения?
AОбучение ускорится без последствий
BМодель может «забыть» предобученные знания
CМодель станет точнее
DНичего не изменится