Урок по треку Глубокое обучение 7 мин

Эмбеддинги, transfer learning и LoRA за 7 минут

Эмбеддинги слов и предложений, контрастивное обучение, transfer learning, заморозка слоёв, LoRA.

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

Эмбеддинги

Эмбеддинг это плотный вектор, в котором близкие по смыслу объекты оказываются рядом. Слой nn.Embedding это обучаемая таблица векторов по id.

  • word2vec: слова в похожих контекстах получают близкие векторы (skip-gram, CBOW, негативное семплирование). Один вектор на слово, многозначность не различается.
  • Контекстные эмбеддинги трансформеров: вектор токена зависит от всего предложения.
  • Эмбеддинги предложений: pooling выходов энкодера, но лучше модели, дообученные контрастивно.

Контрастивное обучение

Для батча пар (вопрос, правильный ответ) считают матрицу похожестей и учат правильную пару выигрывать у остальных в строке:

L = CE(softmax(sim(qᵢ, dⱼ) / τ), i)

Чем больше батч, тем больше негативов, а трудные негативы особенно полезны. Так обучены модели эмбеддингов для поиска и CLIP (картинка и подпись).

Семантический поиск

  1. Нарезать документы на фрагменты с перекрытием.
  2. Закодировать би-энкодером и положить в ANN-индекс.
  3. Гибрид с BM25 для точных терминов.
  4. Переранжировать топ кросс-энкодером: он видит вопрос и документ вместе и точнее, но дорог.
  5. Оценить recall@k и NDCG на размеченных запросах.

Transfer learning

Предобученная модель уже выучила общие признаки. Стратегии:

  • Feature extraction: замороженная модель и простой классификатор поверх. Сотни примеров, почти бесплатно.
  • Fine-tuning головы, затем разморозка: сначала голова на замороженном бэкбоне, потом верхние блоки с меньшим lr.
  • Полный fine-tuning: лучшее качество при достаточных данных, дорого, риск забывания.

Нормализация входа как при предобучении, lr для энкодеров около 1e-5..5e-5, валидация и early stopping.

При заморозке бэкбона с BatchNorm помните: requires_grad = False не останавливает обновление running-статистик в режиме train.

LoRA

Вместо обновления матрицы W учат добавку низкого ранга:

y = Wx + (α / r) · B·A·x,   B: d_out×r,  A: r×d_in

Для матрицы 4096×4096 при r = 8 обучается 65 536 параметров вместо 16.8 млн, около 0.4%. B инициализируют нулями, чтобы на старте модель совпадала с исходной. Адаптеры весят мегабайты, на одной базе можно держать много задач. QLoRA держит замороженную базу в 4 битах.

Катастрофическое забывание

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

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

  • Большой lr при fine-tuning.
  • Забыть нормализацию входа, на которой предобучен бэкбон.
  • Использовать сырой CLS-вектор BERT как эмбеддинг предложения без дообучения.
  • Чисто векторный поиск там, где важны точные коды и артикулы.

Что спросят на собесе

  • Что такое эмбеддинг, word2vec против контекстных.
  • Как обучают эмбеддинги для поиска.
  • Стратегии дообучения и как выбрать.
  • Как работает LoRA и сколько параметров она экономит.
  • Что такое катастрофическое забывание.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.