中文翻译暂不可用,显示俄语原文。

Как вы предотвращаете catastrophic forgetting при fine-tuning?

Краткий тезис

Catastrophic forgetting (катастрофическое забывание) — потеря ранее усвоенных знаний при дообучении модели на новой задаче. Для предотвращения используют комбинацию методов: параметрически fine-tuning|эффективное дообучение (LoRA), регуляризацию важных весов (EWC), воспроизведение исходных данных (replay buffer) и контроль числа эпох. Ключевая практика: всегда проверять, не разучилась ли модель отвечать на базовые вопросы после fine-tuning.

1. Термин: Catastrophic forgetting

Catastrophic forgetting — явление, при котором нейронная сеть, обучаемая на новой задаче, резко теряет способность решать предыдущие. Это происходит из-за перезаписи весов, критически важных для старых знаний. В контексте fine-tuning LLM это особенно опасно: модель может «разучиться» отвечать на общие вопросы или следовать инструкциям, если дообучать её только на узкой предметной области.

Почему это важно:

  • Продуктовая модель должна сохранять базовые знания (факты, грамматику, безопасность).
  • Пользователи ожидают, что после fine-tuning модель не станет хуже на общих запросах.
  • Catastrophic forgetting может привести к деградации качества и репутационным рискам.

2. LoRA (Low-Rank Adaptation) как основной инструмент

LoRA — метод параметрически эффективного дообучения (PEFT). Вместо обновления всех весов модели вносятся низкоранговые адаптеры (матрицы A и B), которые добавляются к исходным весам. Число обучаемых параметров сокращается в сотни раз.

Почему LoRA помогает от забывания:

  • Оригинальные веса модели остаются замороженными, изменяются только адаптеры.
  • Адаптеры имеют низкую ёмкость, поэтому вынуждены запоминать только новую задачу, не перезаписывая старые знания.
  • При инференсе можно отключить адаптеры и вернуться к исходной модели.

Сравнение LoRA и Full fine-tuning:

ХарактеристикаFull fine-tuningLoRA
Число обучаемых параметров100%0.1–1%
Риск catastrophic forgettingВысокийНизкий
Скорость обученияМедленноБыстро
Память (VRAM)МногоМало
Возможность переключать задачиНет (одна версия)Да (адаптеры)

На практике fine-tuning LLM почти всегда делают через LoRA или его варианты (QLoRA, DoRA).

3. Elastic Weight Consolidation (EWC)

EWC — метод регуляризации, который добавляет штраф за изменение весов, важных для предыдущих задач. Идея: оценить важность каждого веса (через диагональ матрицы Фишера) и при обучении на новой задаче увеличивать потери при изменении важных весов.

Формула потерь:

L_total = L_new + λ * Σ_i F_i * (θ_i - θ_A_i)^2

где:

  • L_newloss на новой задаче,
  • F_i — важность параметра θ_i (диагональ матрицы Фишера),
  • θ_A_i — значение параметра после обучения на предыдущей задаче,
  • λ — коэффициент регуляризации.

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

EWC чаще применяется в continuous learning, но может быть комбинирован с LoRA для дополнительной защиты.

4. Replay buffer (воспроизведение исходных данных)

Replay buffer — техника, при которой во время fine-tuning в батчи подмешиваются примеры из исходного обучающего датасета (или из репрезентативной выборки). Это заставляет модель «вспоминать» старые знания.

Варианты реализации:

  • Experience Replay: хранить буфер с примерами из оригинального обучения (если доступен исходный датасет).
  • Generative Replay: использовать генеративную модель (например, саму LLM) для синтеза примеров старых задач.
  • Task-specific Replay: для fine-tuning на одном домене добавлять универсальные датасеты (например, OpenAssistant, Dolly).

Практический совет: смешивать данные в пропорции 80% новых / 20% исходных. Это снижает забывание без сильного замедления сходимости.

5. SLERP при смешивании адаптеров

SLERP (Spherical Linear Interpolation) — метод интерполяции между двумя наборами весов (адаптерами) на сфере. Используется для объединения адаптеров, обученных на разных задачах.

Как это помогает:

  • После fine-tuning на новой задаче можно смешать новый адаптер с исходным (пустым) адаптером с весовым коэффициентом.
  • SLERP даёт более гладкий переход, чем линейная интерполяция, сохраняя норму и направление.
  • Позволяет контролировать степень влияния нового fine-tuning, уменьшая риск забывания.

Пример кода:

import torch
def slerp(t, v0, v1):
    # v0, v1 — веса, t ∈ [0,1]
    omega = torch.acos(torch.clamp(torch.dot(v0, v1), -1, 1))
    if omega == 0:
        return v0 * (1 - t) + v1 * t
    return (torch.sin((1 - t) * omega) / torch.sin(omega)) * v0 + (torch.sin(t * omega) / torch.sin(omega)) * v1

SLERP часто применяется при merging адаптеров или при пост-обработке fine-tuned моделей.

6. Ограничение числа эпоф (1–3)

Большое число эпох — прямой путь к overfitting на новой задаче и забыванию старой. Для LLM fine-tuning достаточно 1–3 эпоф на большинстве датасетов.

Почему мало эпоф:

  • LLM уже имеет обширные знания; новая задача — лишь адаптация.
  • Каждая дополнительная эпоха увеличивает риск переобучения.
  • Используйте early stopping по метрике на валидационном наборе, который включает как новую задачу, так и общие вопросы.

7. Проверка на здравомыслие (sanity check)

После fine-tuning обязательно тестируйте модель на наборе базовых вопросов, не связанных с дообучаемой задачей. Примеры:

  • "Кто президент США?"
  • "Сколько будет 2+2?"
  • "Напиши короткое стихотворение."

Если качество ответов на эти вопросы упало — catastrophic forgetting произошёл. В таком случае:

  • Уменьшите число эпоф или learning rate.
  • Увеличьте долю replay данных.
  • Проверьте, не слишком ли велик rank LoRA.
  • Рассмотрите использование EWC.

Создайте eval set из 50–100 универсальных вопросов и отслеживайте метрики до/после fine-tuning.

8. Дополнительные методы

  • Progressive Neural Networks: отдельные сети для каждой задачи (память велика, редко используется в LLM).
  • Memory Aware Synapses (MAS): похож на EWC, но оценивает важность по чувствительности выхода.
  • Learning without Forgetting (LwF): дистилляция — используем старую модель как teacher для новой.
  • Regularization: L2-регуляризация на отклонение от исходных весов (weight decay, delta regularization).

На практике комбинируют 2–3 метода: LoRA + replay buffer + sanity check.

9. Практический чек-лист для предотвращения catastrophic forgetting

  1. Использовать LoRA (или QLoRA) вместо full fine-tuning.
  2. Ограничить 1–3 эпохи, применить early stopping.
  3. Подмешивать 20% исходных данных в батчи (replay).
  4. Настроить learning rate (обычно 1e-4 для LoRA).
  5. После обучения провести sanity check на универсальных вопросах.
  6. При необходимости применить SLERP с исходным адаптером.
  7. Если забывание сильное — добавить EWC или увеличить λ.

Пет-проект для закрепления

Задача: Дообучить небольшую LLM (например, GPT-2 или DistilBERT) на датасете с медицинскими вопросами и проверить, не забыла ли она отвечать на общие вопросы.

Инструменты: Python, Hugging Face Transformers, PEFT (LoRA), Datasets, PyTorch.

Шаги:

  1. Взять предобученную модель (distilgpt2).
  2. Подготовить датасет: 1000 медицинских вопросов-ответов (можно взять из MedQuad).
  3. Собрать sanity set: 50 общих вопросов (например, "What is the capital of France?").
  4. Замерить baseline — точность на sanity set до fine-tuning.
  5. Обучить LoRA адаптер на медицинском датасете (3 эпохи, LR=5e-4).
  6. Оценить модель на sanity set после fine-tuning. Если точность упала — применить replay (добавить 20% общих вопросов в тренировочный микс) и переобучить.
  7. Сравнить результаты: таблица метрик до, после, после с replay.

Ожидаемый результат: Модель должна сохранить >90% точности на общих вопросах, но улучшить точность на медицинских.

Связь с другими вопросами

ВопросТема
25Основы fine-tuning LLM
27Выбор данных для fine-tuning
28Гиперпараметры fine-tuning
30Смешивание и слияние адаптеров
31Оценка fine-tuned модели
32Развертывание fine-tuned моделей

Навигация