Предобученные модели и трансфер-обучение
Понимаем главную идею экосистемы: учиться не с нуля, а на готовом фундаменте.
Трансфер-обучение (transfer learning) — приём, при котором модель, обученную на большой общей задаче, дообучают под конкретную узкую задачу с малым количеством данных.
Почему не учат с нуля
Обучение большой языковой модели с нуля стоит миллионы долларов и требует огромных датасетов и недель работы кластеров GPU. Для большинства задач это абсурдно дорого. Вместо этого берут предобученную модель — она уже «прочитала» гигантский корпус текстов и выучила общие закономерности языка: грамматику, связи между словами, факты о мире.
Аналогия: чтобы научить человека писать юридические заключения, не нужно заново учить его читать и говорить. Достаточно человека, который уже владеет языком, и дать ему специализацию. Предобученная модель — это «человек, который уже умеет читать».
Два этапа: предобучение и дообучение
| Этап | Кто делает | Данные |
| Предобучение (pretraining) | Крупные лаборатории | Миллиарды слов из интернета |
| Дообучение (fine-tuning) | Вы | Тысячи примеров вашей задачи |
Предобучение даёт модели общее «понимание» языка. Дообучение настраивает её под конкретику: классификацию отзывов вашего магазина, извлечение сущностей из медицинских текстов и так далее.
Что значит «общие закономерности»
Во время предобучения модель решает простую задачу — например, предсказать пропущенное или следующее слово. Чтобы делать это хорошо, ей приходится выучить структуру языка. Эти знания хранятся в миллионах числовых параметров (весов). При дообучении большая часть этих весов остаётся, а корректируются они лишь слегка — поэтому хватает небольшого датасета.
Как работает под капотом
Технически дообучение — это продолжение обучения той же нейросети, но на новых данных и обычно с маленькой скоростью обучения (learning rate), чтобы не «стереть» накопленные знания. Часто к предобученной модели добавляют новую «голову» (последний слой) под конкретную задачу: для классификации это слой, выдающий вероятности классов. Связь с курсами по глубокому обучению и PyTorch здесь прямая — под капотом это обычная нейросеть и градиентный спуск.
Частые ошибки
- Дообучать на слишком большом learning rate. Модель «забывает» предобученные знания (catastrophic forgetting).
- Брать модель не для той области. Модель на английском плохо дообучается на русский — лучше взять многоязычную или русскоязычную базу.
- Думать, что дообучение всегда нужно. Часто готовая модель через
pipeline()решает задачу без всякого дообучения.
Итог
- Предобученная модель уже выучила общие закономерности языка на огромном корпусе.
- Трансфер-обучение — дообучение такой модели под узкую задачу на малых данных.
- Это в тысячи раз дешевле обучения с нуля.
- Маленький learning rate сохраняет накопленные знания.