Что такое Catastrophic Forgetting при fine-tuning? Как его предотвратить (EWC, replay, LoRA)?
1. Модель забывает старые знания при обучении на новых
Традиционное дообучение предполагает, что модель настраивается на новом датасете с помощью обратного распространения ошибки и оптимизатора (например, AdamW). При этом градиенты обновляют все веса сети, стремясь минимизировать лосс на новой задаче. Проблема в том, что веса, отвечающие за старые навыки (грамматика, фактологические знания, общая логика), могут сильно измениться, если новая задача имеет другой распределение данных или требует иного поведения.
1.1 Причина: перекрытие репрезентаций
В LLM знания хранятся не локально, а распределённо в матрицах весов. При обучении на новой задаче градиенты «наезжают» на области весового пространства, которые ранее отвечали за старые функции. Если число слоёв и параметров велико, модель может адаптироваться к новому датасету ценой разрушения старых, так как нет явного механизма, удерживающего старые знания.
1.2 Пример
Представим, что BERT-base дообучен на задаче анализа тональности. Затем его дообучают на задаче извлечения именованных сущностей (NER) без сохранения данных тональности. После второго этапа модель может показывать высокое качество на NER, но точность на тональности падает с 95% до 30%. Это и есть катастрофическое забывание.
1.3 Ключевые факторы влияния
| Фактор | Влияние |
|---|---|
| Размер нового датасета | Больший датасет → большее смещение весов |
| Схожесть задач | Разные домены (медицина → право) → сильнее забывание |
| Число эпох | Много эпох → переобучение под новую задачу |
| Скорость обучения | Высокий LR → резкие изменения весов |
2. EWC: штраф за изменение важных весов
Elastic Weight Consolidation (EWC) – метод регуляризации, предложенный для последовательного обучения (continual learning). Идея: для каждого параметра модели оценить его «важность» для предыдущих задач, и при обучении на новой задаче штрафовать отклонение важных параметров от старых значений.
2.1 Математическая основа
EWC добавляет к стандартному loss дополнительный регуляризирующий член:
[ L_{[text](/wiki/text){EWC}}(\theta) = L_{[text](/wiki/text){new}}(\theta) + \frac{\lambda}{2} \sum_i F_i (\theta_i - \theta_i^{*})^2 ]
где:
- ( \theta_i ) – текущее значение i-го параметра,
- ( \theta_i^{*} ) – значение параметра после обучения на предыдущей задаче,
- ( F_i ) – диагональный элемент матрицы Фишера, оценивающий важность параметра,
- ( \lambda ) – коэффициент регуляризации.
2.2 Вычисление важности
Матрица Фишера аппроксимируется как:
[ F_i = \mathbb{E}_{x \sim [text](/wiki/text){data}} \left[ \left( \frac{\partial \log p(y|x, \theta^*)}{\partial \theta_i} \right)^2 \right] ]
На практике F_i вычисляется один раз после первой задачи и сохраняется вместе с (\theta^*). Чем больше F_i, тем сильнее штрафуется изменение данного веса.
2.3 Преимущества и недостатки
| Плюсы | Минусы |
|---|---|
| Работает без хранения старых данных (только веса и F) | Сложность вычисления матрицы Фишера (особенно для LLM с миллиардами параметров) |
| Гибкий контроль λ | Не предотвращает забывание полностью при сильно различающихся задачах |
| Теоретически обоснован | Для больших моделей требует много памяти на хранение F_i (диагональ) |
3. Replay: смешиваем старые данные
Replay (или Experience Replay) – метод, при котором в обучающий набор на новой задаче добавляются образцы из предыдущих задач. Это позволяет модели «вспоминать» старые паттерны, одновременно осваивая новые. Различают два подхода:
3.1 Буферный replay (Store & Replay)
На этапе первой задачи сохраняется небольшое число примеров (например, 5–10% от исходного датасета) в буфере. При обучении на второй задаче из буфера случайным образом подмешиваются батчи. Эффективность зависит от размера буфера и стратегии его пополнения (часто reservior sampling).
3.2 Генеративный replay
Вместо хранения реальных данных используется генеративная модель (например, вариационный автоэнкодер или диффузионная модель), обученная на первой задаче. На второй задаче она генерирует синтетические образцы, которые подаются в смесь. Этот вариант уменьшает затраты памяти, но требует дополнительной модели.
3.3 Плюсы и минусы
| Плюсы | Минусы |
|---|---|
| Простота реализации | Необходимость хранения данных (особенно если задачи конфиденциальны) |
| Работает в широком спектре задач | Размер буфера может значительно влиять на качество |
| Хорошо комбинируется с EWC (EWC+Replay) | Высокие требования к памяти при большом числе задач |
4. LoRA: меньше изменяет base модель
Low-Rank Adaptation (LoRA) – метод параметро-эффективного дообучения (PEFT), который позволяет адаптировать большие модели, не изменяя исходные веса. Вместо этого обучаются низкоранговые матрицы, добавляемые к преобразованиям. Это кардинально снижает объём изменяемых параметров (в 10 000 раз меньше), что автоматически уменьшает риск катастрофического забывания.
4.1 Принцип работы
Для матрицы весов ( W \in \mathbb{R}^{d \times k} ) (например, в слое self-attention) LoRA вводит две маленькие матрицы ( A \in \mathbb{R}^{r \times k} ) и ( B \in \mathbb{R}^{d \times r} ), где ранг ( r \ll \min(d, k) ). Прямой проход вычисляется как:
[ h = Wx + BAx ]
Исходная матрица W заморожена, обучаются только A и B. При инференсе вес ( W + BA ) может быть объединён без накладных расходов.
4.2 Связь с забыванием
Поскольку LoRA изменяет лишь малую часть параметров (ранг обычно 4–64), а большая часть сети остаётся неизменной, старые знания сохраняются почти нетронутыми. Эксперименты показывают, что LoRA практически не вызывает CF на типовых задачах (например, MNLI, SQuAD). Более того, при необходимости можно обучать несколько отдельных LoRA-модулей для разных задач и комбинировать их (композиция LoRA).
4.3 Сравнение методов предотвращения CF
| Метод | Изменяемые параметры | Необходимость старых данных | Вычислительная нагрузка | Уровень CF (низкий/средний/высокий) |
|---|---|---|---|---|
| Full fine-tuning | Все | Нет | Высокая | Высокий |
| EWC | Все | Только матрица Фишера | Средняя (вычисление F) | Средний |
| Replay | Все | Да (буфер) | Высокая (больше данных) | Средний–Низкий |
| LoRA | Малые (A, B) | Нет | Низкая | Низкий |
5. Пет-проект для закрепления
Задача: Сравнить устойчивость T5-small к катастрофическому забыванию при последовательном дообучении на двух датасетах (например, сначала SAMSum – суммаризация диалогов, затем CNN/Daily Mail – суммаризация новостей) в четырёх конфигурациях: full fine-tuning, full fine-tuning с EWC, full fine-tuning с Replay (10% буфер) и LoRA (r=8).
Инструменты:
- Python 3.10+
- Transformers 4.30+
- PyTorch 2.0+
- PEFT (для LoRA)
- Evaluate (оценка метрик ROUGE, BERTScore)
- Google Colab или локальный GPU.
Шаги:
- Загрузка T5-small и датасетов.
- Обучение первой задачи (SAMSum, 2 эпохи, lr=3e-5 для full, lr=1e-4 для LoRA).
- Измерение метрик на тестовой части SAMSum (сохранение).
- Дообучение на CNN/Daily Mail с четырьмя вариантами:
- После второго этапа заново оцениваем метрики на SAMSum.
- Строим график «сохранение качества SAMSum» (ROUGE-L) для каждого метода.
Ожидаемый результат: Full fine-tuning покажет падение метрик на SAMSum на 20–40% (CF). EWC и Replay частично сохранят (падение 5–15%). LoRA продемонстрирует минимальное падение (менее 5%). В отчёте указать также время обучения и объём используемой памяти.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 26 | Определение процесса дообучения, из которого возникает CF |
| 965 | Предшествующий вопрос: разбор только EWC (здесь он включён как метод) |
| 967. PEFT vs Full | Следующий вопрос: сравнение PEFT и full fine-tuning, важно для понимания LoRA |
Навигация
- Предыдущий: 965
- Следующий: 967
- Индекс: 00. Индекс разборов