Обсуждение участника:Imil Baltaniazov

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
Строка 1: Строка 1:
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
-
'''Дообучение нейронных сетей''' (''fine-tuning'') — способ обучения модели, при котором в качестве начального приближения параметров берётся не случайная инициализация, а веса модели, уже [[предобучение|предобученной]] на некоторой большой вспомогательной задаче, после чего эти веса дополнительно настраиваются (дообучаются) на данных целевой задачи. Дообучение — центральный приём [[трансферное обучение|трансферного обучения]] и на сегодняшний день стандартный способ адаптации крупных предобученных моделей — как в компьютерном зрении, так и в обработке естественного языка — к конкретным прикладным задачам.
+
'''Дообучение нейронных сетей''' (''fine-tuning'') — процесс адаптации параметров предварительно обученной модели к новой, обычно более узкой задаче путём продолжения обучения на данных этой задачи. Дообучение является ключевым этапом парадигмы [[Трансферное обучение|трансферного обучения]] и на сегодняшний день представляет собой стандартный способ применения глубоких нейронных сетей к прикладным задачам — вместо обучения архитектуры с нуля.
== Введение ==
== Введение ==
-
Идею дообучения проще всего пояснить на бытовом уровне: человек, уже умеющий играть на фортепиано, осваивает орган значительно быстрее, чем человек, никогда не сидевший за клавишным инструментом — общие навыки (координация рук, чтение нот, чувство ритма) переносятся, доучить нужно лишь специфику нового инструмента (педали, регистры). Ровно так же нейронная сеть, обученная на большом и разнообразном датасете, приобретает общие представления о структуре данных предметной области (в изображениях границы, текстуры, части объектов; в текстах — синтаксис, семантика слов, мировые знания), которые затем достаточно лишь адаптировать под конкретную задачу, а не выучивать заново.
+
Схема «[[Предобучение|предобучение]] + дообучение» стала доминирующей практикой в глубоком обучении по простой причине: обучение большой модели с нуля требует огромных объёмов размеченных данных и вычислительных ресурсов, которых часто нет в распоряжении конкретной прикладной задачи. Вместо этого модель сначала обучают на большом, как правило, общедоступном наборе данных (ImageNet для изображений, Wikipedia и Common Crawl для текстов), где она усваивает общие закономерности предметной области — контуры и текстуры для изображений, синтаксис и семантику для языка. Затем эта модель, уже обладающая содержательными внутренними представлениями, дообучается на существенно меньшем наборе данных, специфичном для целевой задачи.
-
Формально дообучение задаётся так. Пусть <tex>\theta_0</tex> — параметры модели, полученные в результате предобучения на вспомогательной задаче с большим датасетом <tex>D_{pre}</tex>. Дообучение находит
+
Такой подход имеет два принципиальных преимущества по сравнению с обучением с нуля. Во-первых, он резко сокращает требуемый объём размеченных данных для целевой задачи: модель начинает не со случайной инициализации весов, а с параметров, уже кодирующих полезные закономерности. Во-вторых, он сокращает вычислительные затраты и время обучения, поскольку большая часть «тяжёлой» работы по извлечению общих признаков уже выполнена на этапе предобучения.
-
:: <tex> \theta^* = \arg\min_{\theta} \frac{1}{n}\sum_{i=1}^n L(f_\theta(x_i), y_i), \qquad \text{инициализация: } \theta = \theta_0 </tex>
+
Дообучение стало практически повсеместным стандартом с распространением [[Трансформер|трансформерных]] архитектур и [[Большая языковая модель|больших языковых моделей]]: модели типа BERT, GPT, ResNet, CLIP выпускаются как общедоступные предобученные чекпоинты, а подавляющее большинство прикладных систем строится путём их дообучения, а не обучения аналогичной по размеру архитектуры заново.
-
на датасете целевой задачи <tex>D_{target} = \{(x_i,y_i)\}_{i=1}^n</tex>, который, как правило, на порядки меньше <tex>D_{pre}</tex>.
+
== Постановка задачи ==
-
Дообучение стало стандартом по трём причинам. Во-первых, обучение крупной модели «с нуля» на каждую новую задачу требует огромных вычислительных ресурсов и датасетов сопоставимого объёма, которых для большинства прикладных задач просто нет. Во-вторых, эмпирически показано, что признаки, извлекаемые нижними и средними слоями предобученной сети, во многом универсальны и слабо зависят от конкретной целевой задачи (см. классическую работу Йосински и соавторов). В-третьих, появление больших моделей ([[большая языковая модель|больших языковых моделей]], крупных сверточных сетей и [[трансформер|трансформеров]] зрения), предобученных на веб-масштабных корпусах, сделало дообучение практически безальтернативным способом получить качественную модель под задачу с ограниченным бюджетом на данные и вычисления.
+
Пусть имеется модель с параметрами <tex>\theta_0</tex>, обученная на большом исходном наборе данных <tex>\mathcal{D}_{src}</tex> для решения некоторой исходной задачи (например, классификации на 1000 классов ImageNet или предсказания следующего токена на корпусе текстов). Требуется адаптировать эту модель к целевой задаче с набором данных <tex>\mathcal{D}_{tgt}</tex>, который, как правило, существенно меньше исходного и может иметь другое распределение признаков, другое число классов или вовсе другой тип разметки.
-
 
+
-
== Постановка задачи ==
+
-
Типичный сценарий дообучения выглядит следующим образом.
+
Формально дообучение сводится к продолжению оптимизации параметров, инициализированных значением <tex>\theta_0</tex>, на функции потерь целевой задачи:
-
# Берётся модель, предобученная на большом, обычно слабо- или самообучаемом датасете общего назначения: ImageNet (14 млн размеченных изображений) для моделей компьютерного зрения, Wikipedia и Common Crawl (сотни миллиардов токенов) для языковых моделей, пары «изображение — подпись» из веба для мультимодальных моделей.
+
:: <tex>\theta^{*} = \arg\min_{\theta} \; \mathcal{L}_{tgt}(\theta), \quad \theta_{init} = \theta_0</tex>
-
# Задача предобучения (классификация на 1000 классов ImageNet, предсказание замаскированного токена, контрастное сопоставление изображения и текста) как правило не совпадает с целевой задачей практика, но заставляет модель выучить содержательные внутренние представления данных.
+
-
# У модели заменяется «голова» (последний слой или несколько слоёв), специфичная для предобучения, на новую голову, соответствующую целевой задаче (например, классификатор на нужное число классов, слой для регрессии, декодер для генерации).
+
-
# Модель дообучается на датасете целевой задачи, который может состоять из нескольких сотен — нескольких десятков тысяч примеров, что на порядки меньше объёма датасета предобучения.
+
-
Ключевое допущение, оправдывающее этот сценарий, — гипотеза о переносимости представлений: признаковое пространство, выученное при решении задачи предобучения, достаточно богато, чтобы линейный или неглубокий классификатор поверх него уже неплохо решал целевую задачу, а дообучение лишь «дошлифовывает» это пространство под её специфику.
+
Ключевое отличие от обучения с нуля — не в формуле, а в начальной точке оптимизации и, как правило, в существенно меньшей скорости обучения, поскольку задача состоит не в том, чтобы заново «выучить» представления, а в том, чтобы аккуратно скорректировать уже накопленные знания под особенности целевого распределения данных, не разрушив их.
== Стратегии дообучения ==
== Стратегии дообучения ==
-
По степени вовлечённости параметров предобученной модели в обновление принято выделять три стратегии.
+
Выбор конкретной стратегии дообучения определяется объёмом целевых данных, степенью их близости к исходному распределению и доступными вычислительными ресурсами.
-
=== Полное дообучение ===
+
'''Полное дообучение''' (full fine-tuning) — обновлению градиентным спуском подвергаются все параметры модели, включая самые ранние слои. Даёт наибольшую гибкость адаптации и, при достаточном объёме целевых данных, как правило, наилучшее итоговое качество. Требует, однако, хранения градиентов и состояний оптимизатора для всех параметров модели, что для современных моделей с миллиардами параметров может быть неподъёмно с точки зрения памяти.
-
При полном дообучении (full fine-tuning) обновляются все параметры модели, включая предобученные слои. Это даёт максимальную гибкость адаптации и, как правило, наилучшее итоговое качество при достаточном объёме данных целевой задачи, но сопряжено с наибольшим риском [[переобучение|переобучения]] на малых датасетах и наибольшими вычислительными затратами — по памяти и по времени приходится хранить и обновлять градиенты по всем параметрам, а для по-настоящему больших моделей (десятки и сотни миллиардов параметров) это становится попросту недоступно на рядовом оборудовании.
+
'''Дообучение только последних слоёв''' (feature extraction, linear probing) все слои, кроме последних (обычно — только классификационная «голова»), замораживаются: их веса не изменяются, через них лишь выполняется прямой проход. Обучению подвергается небольшое число параметров новой головы. Такой подход рассматривает предобученную сеть как фиксированный экстрактор признаков. Он существенно дешевле по вычислениям и памяти, но ограничен в качестве, если целевая задача существенно отличается от исходной по распределению данных.
-
<source lang="python">
+
'''Дообучение с частичной заморозкой''' — промежуточный вариант: замораживаются ранние слои сети (как правило, отвечающие за наиболее общие, низкоуровневые признаки — границы и текстуры в изображениях, базовые синтаксические закономерности в тексте), а более поздние слои, ближе к выходу, дообучаются вместе с новой головой. Постепенная разморозка слоёв (gradual unfreezing), начиная с последних и постепенно продвигаясь к более ранним по мере обучения, — практика, предложенная в методе ULMFiT (Howard & Ruder, 2018) и до сих пор используемая как эвристика для стабилизации дообучения.
-
import torch
+
-
from transformers import AutoModelForSequenceClassification
+
-
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)
+
Выбор между этими стратегиями напрямую связан с объёмом доступных данных целевой задачи и подробнее рассматривается в разделе о связи дообучения с объёмом данных.
-
optimizer = torch.optim.AdamW(model.parameters(), lr=2e-5)
+
-
# все параметры модели, включая предобученные слои трансформера, обновляются
+
-
</source>
+
-
 
+
-
=== Дообучение только последних слоёв (feature extraction) ===
+
-
 
+
-
Противоположный по духу подход — заморозить все предобученные слои (использовать их как неизменный экстрактор признаков) и обучать только новую голову модели. Такой режим требует минимума вычислений и хорошо работает, когда целевая задача близка по природе данных к задаче предобучения, а датасет очень мал.
+
-
 
+
-
<source lang="python">
+
-
for param in model.base_model.parameters():
+
-
param.requires_grad = False
+
-
 
+
-
for param in model.classifier.parameters():
+
-
param.requires_grad = True
+
-
 
+
-
optimizer = torch.optim.AdamW(
+
-
filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3
+
-
)
+
-
</source>
+
-
 
+
-
=== Дообучение с заморозкой части слоёв ===
+
-
 
+
-
Промежуточный вариант — заморозить нижние слои (кодирующие наиболее общие, задаче-независимые признаки) и дообучать верхние слои вместе с новой головой. Часто применяется постепенная разморозка (gradual unfreezing, предложенная в ULMFiT): обучение начинается с замороженными всеми предобученными слоями, затем слои размораживаются постепенно, от верхних к нижним, на протяжении нескольких эпох, что снижает риск разрушения полезных предобученных представлений на ранних, наименее стабильных шагах обучения.
+
== Выбор скорости обучения ==
== Выбор скорости обучения ==
-
Скорость обучения ([[скорость обучения|learning rate]]) при дообучении, как правило, выбирается существенно меньше, чем при обучении с нуля типичные значения лежат в диапазоне <tex>10^{-5}</tex>–<tex>10^{-4}</tex> против <tex>10^{-3}</tex>–<tex>10^{-2}</tex> для обучения с нуля. Причина в том, что предобученные веса уже находятся в содержательной области пространства параметров, и большой шаг градиентного спуска рискует «разрушить» выученные представления раньше, чем модель успеет их полезно адаптировать под новую задачу.
+
Скорость обучения (learning rate) — один из наиболее чувствительных гиперпараметров при дообучении. Слишком большая скорость способна быстро разрушить полезные представления, накопленные на этапе предобучения, — это явление иногда называют «забыванием» уже на первых шагах дообучения. Общая рекомендация — использовать существенно меньшую скорость обучения, чем при обучении с нуля: типичные значения при дообучении трансформеров лежат в диапазоне <tex>10^{-5}</tex>–<tex>10^{-4}</tex>, тогда как обучение с нуля часто ведётся со скоростями порядка <tex>10^{-3}</tex>.
-
Для новой, случайно инициализированной головы модели, напротив, оправдана более высокая скорость обучения её веса ещё не несут полезной информации, и их можно (и нужно) обучать быстрее. Этот принцип формализуется в виде ''дифференциальных скоростей обучения'' (discriminative learning rates, введены в работе Ховарда и Рудера, ULMFiT): каждому слою <tex>l</tex> назначается собственная скорость обучения, убывающая от верхних слоёв к нижним:
+
Естественное развитие этой идеи — '''дифференциальные скорости обучения''' (discriminative learning rates), предложенные в том же ULMFiT: разным слоям сети назначаются разные скорости обучения, при этом более ранним, более «общим» слоям соответствует меньшая скорость, а более поздним, специфичным для задачи слоям (включая новую голову) — большая. Если пронумеровать слои от входа к выходу индексом <tex>l = 1, \dots, L</tex>, типичная схема задаёт скорость обучения слоя <tex>l</tex> как
-
:: <tex> \eta_l = \eta_L \cdot \xi^{\,L-l} </tex>
+
:: <tex>\eta_l = \eta_L \cdot \xi^{\,L-l}</tex>
-
где <tex>L</tex> — номер последнего слоя, <tex>\eta_L</tex> — скорость обучения для последнего (нового) слоя, <tex>\xi < 1</tex> — коэффициент затухания (в оригинальной работе <tex>\xi \approx 1/2.6</tex>).
+
где <tex>\eta_L</tex> — скорость обучения последнего слоя, а <tex>\xi < 1</tex> (типично около 0.9–0.95) — коэффициент затухания скорости при движении к более ранним слоям.
-
<source lang="python">
+
Дополнительно почти всегда используется '''разогрев скорости обучения''' (learning rate warmup) — постепенное увеличение скорости от малого значения до целевого в течение первых итераций дообучения, что снижает риск резкого разрушения предобученных представлений на старте, когда статистики оптимизатора ещё не накоплены, а также последующее плавное затухание скорости (linear или cosine decay) до конца обучения.
-
optimizer = torch.optim.AdamW([
+
-
{"params": model.encoder.layer[:6].parameters(), "lr": 1e-5},
+
-
{"params": model.encoder.layer[6:].parameters(), "lr": 3e-5},
+
-
{"params": model.classifier.parameters(), "lr": 1e-3},
+
-
])
+
-
</source>
+
-
 
+
-
Дополнительно на первых шагах дообучения часто применяется ''разогрев'' (warm-up) скорости обучения — плавный линейный рост от нуля до целевого значения на протяжении первых 5–10 % шагов, что снижает риск дестабилизации предобученных весов в самом начале обучения, когда статистика градиентов ещё нестабильна.
+
== Регуляризация при дообучении ==
== Регуляризация при дообучении ==
-
Так как датасет целевой задачи обычно значительно меньше датасета предобучения, риск переобучения при дообучении выше, а привычные для обучения с нуля значения гиперпараметров регуляризации, как правило, требуют пересмотра.
+
Поскольку целевой набор данных при дообучении, как правило, невелик, а модель обладает большой ёмкостью, риск переобучения на этапе дообучения существенно выше, чем при обучении на большом исходном наборе. Практические приёмы регуляризации при дообучении:
-
* '''Ранняя остановка''' ([[ранняя остановка|early stopping]]) — обучение прерывается по достижении минимума ошибки на отложенной выборке; при дообучении переобучение может наступать уже после одной-двух эпох, поэтому контроль по валидации особенно важен.
+
* '''Ранняя остановка''' (early stopping) — обучение прерывается при первом ухудшении метрики на валидационном наборе, а не по достижении фиксированного числа эпох, что особенно важно при малых целевых наборах данных, где переобучение наступает быстро.
-
* '''Меньший вес регуляризации.''' Так как модель стартует из уже хорошо регуляризованной, содержательной точки пространства параметров, а не из случайной инициализации, типичные веса <tex>L_2</tex>-регуляризации (weight decay) при дообучении берут меньше, чем при обучении с нуля, чтобы не «стягивать» полезные предобученные веса к нулю.
+
* '''Уменьшение веса регуляризации''' — коэффициент weight decay и сила dropout, оптимальные для предобучения на большом наборе, зачастую избыточны для дообучения; их принято уменьшать, поскольку модель уже находится в разумной области пространства параметров и не нуждается в столь сильном сдерживании.
-
* '''Меньший размер батча.''' Малый датасет целевой задачи ограничивает разумный размер батча снизу и сверху одновременно: слишком большой батч на малом датасете даёт мало шагов оптимизации за эпоху и грубую оценку градиента по немногочисленным примерам; на практике для дообучения часто используют батчи меньшего размера, чем при предобучении, компенсируя это большим числом эпох или накоплением градиента (gradient accumulation).
+
* '''Меньший размер батча''' — при малых целевых наборах данных использование меньшего батча увеличивает число шагов оптимизации за эпоху и вносит дополнительный стохастический шум в градиенты, что эмпирически способствует лучшей генерализации и снижает риск резкого переобучения на немногочисленных примерах.
-
* '''Dropout и слой-specific регуляризация''' обычно сохраняются на уровне значений, использованных при предобучении, либо слегка увеличиваются, если целевой датасет заметно меньше.
+
* '''Регуляризация через близость к исходным весам''' — отдельный класс методов (например, L2-SP) добавляет к функции потерь штраф за отклонение текущих параметров от исходных предобученных значений <tex>\theta_0</tex>, явно ограничивая степень «дрейфа» модели от исходного решения.
-
* '''Аугментация данных''' — дополнительный источник эффективной регуляризации при малом объёме целевых данных, подробно описанный в статье [[Аугментация данных]].
+
== Связь с объёмом данных ==
== Связь с объёмом данных ==
-
Выбор между дообучением и обучением с нуля, а также выбор конкретной стратегии дообучения (полное, частичное, feature extraction) существенно зависит от соотношения объёма целевого датасета и степени сходства целевой задачи с задачей предобучения.
+
Решение о выборе стратегии дообучения и о том, оправдано ли дообучение вообще, определяется в первую очередь соотношением объёма целевых данных и степенью их сходства с данными, на которых проводилось предобучение. Удобно рассматривать четыре характерных случая:
-
* '''Малый датасет, задача близка к предобучению''' (например, классификация нового набора классов естественных изображений). Оправдано дообучение только последних слоёв или дообучение с заморозкой большей части сети — риск переобучения при полном дообучении на малом датасете высок, а признаки нижних слоёв уже достаточно универсальны.
+
* '''Много данных, высокое сходство с исходным распределением''' — предпочтительно полное дообучение: данных достаточно, чтобы безопасно адаптировать все слои, а близость распределений снижает риск катастрофического забывания.
-
* '''Малый датасет, задача далека от предобучения''' (например, дообучение модели, предобученной на естественных фотографиях, для задачи на рентгеновских снимках). Это наиболее сложный случай: заморозка нижних слоёв может помешать адаптации к специфике новых данных, но полное дообучение на малом датасете рискует переобучиться. На практике здесь часто выигрывают частичная заморозка с постепенной разморозкой, сильная аугментация и параметро-эффективные методы (см. ниже).
+
* '''Много данных, низкое сходство''' — полное дообучение также оправдано, а в отдельных случаях объём данных может быть достаточен и для обучения с нуля, хотя дообучение обычно всё равно даёт выигрыш по скорости сходимости.
-
* '''Большой датасет, задача близка к предобучению.''' Полное дообучение обычно даёт наилучший результат — данных достаточно, чтобы аккуратно адаптировать все параметры без переобучения.
+
* '''Мало данных, высокое сходство''' — рекомендуется дообучение только последних слоёв (feature extraction) либо частичная заморозка: близость распределений позволяет полагаться на предобученные признаки без риска, а малый объём данных делает полное дообучение опасным с точки зрения переобучения.
-
* '''Большой датасет, задача далека от предобучения.''' При достаточно большом объёме целевых данных выигрыш от предобучения снижается, а иногда обучение с нуля даёт сопоставимое или лучшее качество (см. обсуждение в работе Корнблита и соавторов о переносимости моделей ImageNet), хотя предобучение обычно всё равно ускоряет сходимость.
+
* '''Мало данных, низкое сходство''' — наиболее сложный случай: полное дообучение рискует переобучиться на малом наборе, а заморозка ранних слоёв может оказаться неоптимальной, поскольку предобученные признаки плохо соответствуют новой предметной области. На практике здесь часто применяют частичную разморозку средних слоёв, сильную аугментацию данных и параметро-эффективные методы адаптации.
-
Общее эмпирическое правило: чем меньше целевой датасет и чем ближе он по природе данных к датасету предобучения, тем осторожнее (меньше обучаемых параметров, меньшая скорость обучения, сильнее регуляризация) должно быть дообучение.
+
Общее эмпирическое правило: обучение с нуля становится предпочтительнее дообучения только тогда, когда целевой набор данных сопоставим по объёму с исходным набором предобучения либо когда предметная область целевой задачи настолько специфична (например, узкоспециализированные медицинские или спутниковые изображения), что предобученные признаки почти не переносятся.
== Параметро-эффективные методы дообучения ==
== Параметро-эффективные методы дообучения ==
-
Полное дообучение крупных моделей (сотни миллионов сотни миллиардов параметров) требует хранения градиентов и состояний оптимизатора для каждого параметра, что для по-настоящему больших моделей становится вычислительно неподъёмным, а при необходимости хранить отдельную копию весов под каждую задачу — ещё и неподъёмным по памяти на диске. Параметро-эффективные методы дообучения (parameter-efficient fine-tuning, PEFT) решают эту проблему, замораживая почти все веса предобученной модели и добавляя небольшое число новых, обучаемых параметров.
+
С ростом размеров моделей — в первую очередь [[Большая языковая модель|больших языковых моделей]] с миллиардами параметров — полное дообучение становится дорогостоящим не только по вычислениям, но и по памяти, поскольку требует хранения градиентов и состояний оптимизатора для каждого параметра. Это привело к развитию '''параметро-эффективных методов дообучения''' (parameter-efficient fine-tuning, PEFT), обновляющих лишь малую долю параметров модели или добавляющих небольшое число новых, при этом сохраняя основные веса замороженными.
-
=== Адаптеры (Adapters) ===
+
'''Адаптеры''' (adapters, Houlsby et al., 2019) — небольшие обучаемые модули (обычно двухслойные MLP с узким «бутылочным горлышком»), вставляемые внутрь каждого слоя предобученной сети, как правило, после блока внимания и после полносвязного блока трансформера. При дообучении обновляются только веса адаптеров, основная сеть остаётся замороженной. Недостаток — дополнительная задержка на этапе инференса, так как адаптеры увеличивают глубину вычислительного графа.
-
Метод, предложенный Хоулсби и соавторами, вставляет в каждый блок трансформера небольшие полносвязные модули-«бутылочные горлышки» (adapter modules), которые обучаются, тогда как исходные веса модели остаются замороженными:
+
'''Префиксное обучение''' (prefix-tuning, Li & Liang, 2021) и близкий к нему метод обучаемых промптов (prompt tuning) добавляют небольшое число обучаемых векторов («виртуальных токенов») к входу или к ключам и значениям механизма внимания на каждом слое, оставляя все исходные веса модели неизменными. Обучению подвергаются только эти добавленные векторы, что делает метод крайне экономным по памяти, хотя часто уступающим по качеству адаптерам и LoRA при сопоставимом числе обучаемых параметров.
-
:: <tex> h \leftarrow h + f\bigl(h\, W_{down}\bigr) W_{up} </tex>
+
'''LoRA''' (Low-Rank Adaptation, Hu et al., 2021) — один из наиболее распространённых на сегодняшний день методов PEFT для больших моделей, в частности для [[Адаптация низкого ранга|адаптации низкого ранга]]. Идея состоит в том, что изменение весовой матрицы слоя <tex>\Delta W</tex>, необходимое для адаптации к целевой задаче, представляется в виде произведения двух матриц низкого ранга:
-
где <tex>W_{down} \in \mathbb{R}^{d \times r}</tex>, <tex>W_{up} \in \mathbb{R}^{r \times d}</tex>, <tex>r \ll d</tex>, <tex>f</tex> — нелинейность. Число обучаемых параметров пропорционально <tex>r</tex> и составляет обычно единицы процентов от размера исходной модели, при почти сопоставимом с полным дообучением качестве.
+
:: <tex>W = W_0 + \Delta W = W_0 + BA, \qquad B \in \mathbb{R}^{d \times r}, \; A \in \mathbb{R}^{r \times k}, \; r \ll \min(d,k)</tex>
-
=== Префиксное обучение (Prefix-Tuning) ===
+
где <tex>W_0</tex> — исходная, замороженная матрица весов, а обучению подвергаются только матрицы <tex>A</tex> и <tex>B</tex> существенно меньшей размерности, задаваемой рангом <tex>r</tex> (типичные значения — от 4 до 64). Это резко сокращает число обучаемых параметров (зачастую на два-три порядка по сравнению с полным дообучением) без дополнительной задержки на инференсе, поскольку после обучения матрицу <tex>BA</tex> можно один раз сложить с <tex>W_0</tex>, полностью устранив дополнительные вычисления.
-
Ли и Лян предложили не изменять веса модели вовсе, а добавлять к последовательности небольшое число обучаемых «виртуальных токенов» (префикс), которые подаются на вход каждого слоя внимания трансформера в качестве дополнительных ключей и значений. Модель как таковая остаётся полностью замороженной, а под задачу обучается лишь сам префикс — это даёт наибольшую экономию памяти на хранение весов (одна копия базовой модели обслуживает множество задач с разными префиксами), но обычно уступает адаптерам и LoRA в качестве на сложных генеративных задачах.
+
Сравнение параметро-эффективных методов между собой и с полным дообучением — в таблице ниже.
-
 
+
-
=== LoRA (Low-Rank Adaptation) ===
+
-
 
+
-
LoRA (Ху и соавторы) исходит из наблюдения, что эффективное изменение весов при дообучении обладает низким рангом: вместо явного обновления матрицы весов <tex>W_0</tex> целиком, LoRA представляет добавку в виде произведения двух малоранговых матриц:
+
-
 
+
-
:: <tex> W = W_0 + \Delta W = W_0 + BA, \qquad B \in \mathbb{R}^{d\times r},\ A \in \mathbb{R}^{r\times k},\ r \ll \min(d,k) </tex>
+
-
 
+
-
Матрица <tex>W_0</tex> остаётся замороженной, обучаются только <tex>A</tex> и <tex>B</tex>, число параметров которых на порядки меньше числа параметров <tex>W_0</tex>. После обучения матрицы <tex>A</tex> и <tex>B</tex> можно слить с <tex>W_0</tex> (<tex>W_0 + BA</tex>), что не добавляет дополнительной задержки на этапе применения модели — в отличие от адаптеров, которые вносят небольшой, но ненулевой оверхед на инференсе. Это свойство сделало LoRA одним из самых распространённых способов дообучения больших языковых моделей на потребительском оборудовании.
+
-
 
+
-
<source lang="python">
+
-
from peft import LoraConfig, get_peft_model
+
-
 
+
-
config = LoraConfig(
+
-
r=8,
+
-
lora_alpha=16,
+
-
target_modules=["q_proj", "v_proj"],
+
-
lora_dropout=0.05,
+
-
bias="none",
+
-
task_type="CAUSAL_LM",
+
-
)
+
-
 
+
-
model = get_peft_model(base_model, config)
+
-
model.print_trainable_parameters()
+
-
</source>
+
-
 
+
-
== Сравнение стратегий дообучения ==
+
{| class="wikitable"
{| class="wikitable"
-
|+ Сравнение стратегий дообучения нейронных сетей
+
! Метод !! Доля обучаемых параметров !! Задержка на инференсе !! Типичное качество !! Особенности
-
! Стратегия !! Что обучается !! Доля обучаемых параметров !! Требования к данным !! Риск переобучения !! Типичное применение
+
|-
|-
-
| Полное дообучение || Все веса модели || 100 % || Умеренный — большой датасет || Высокий на малых датасетах || Достаточно большой целевой датасет, задача существенно отличается от предобучения
+
| Полное дообучение || 100% || Без изменений || Максимальное (при достаточных данных) || Требует наибольшей памяти под градиенты и оптимизатор
|-
|-
-
| Дообучение последних слоёв (feature extraction) || Только новая голова || Доли процента || Малый датасет достаточен || Низкий || Малый датасет, задача близка к предобучению
+
| Дообучение последних слоёв || < 1% || Без изменений || Ниже при сильном расхождении задач || Минимальные вычислительные затраты
|-
|-
-
| Дообучение с частичной заморозкой || Верхние слои и голова || От единиц до десятков процентов || Небольшой — умеренный датасет || Средний || Промежуточный случай, постепенная адаптация
+
| Адаптеры || 1–5% || Небольшое увеличение || Близко к полному дообучению || Модульность, лёгкость переключения между задачами
|-
|-
-
| Параметро-эффективные методы (LoRA, адаптеры, prefix-tuning) || Небольшой набор добавленных параметров || Обычно менее 1 % || Малый — умеренный датасет || Низкий || Дообучение очень крупных моделей при ограниченных вычислительных ресурсах, многозадачное обслуживание одной базовой модели
+
| Prefix/Prompt-tuning || < 1% || Небольшое увеличение (за счёт длины последовательности) || Уступает адаптерам и LoRA на сложных задачах || Наиболее компактен по числу параметров
 +
|-
 +
| LoRA || 0.1–1% || Без изменений после слияния весов || Сопоставимо с полным дообучением на многих задачах || Наиболее распространён для больших языковых моделей
|}
|}
== Примеры из практики ==
== Примеры из практики ==
-
=== Дообучение BERT для задач NLP ===
+
'''Дообучение BERT для задач NLP.''' Предобученная на корпусах Wikipedia и BookCorpus модель BERT (Devlin et al., 2019) дообучается на конкретной задаче — классификации тональности текста, извлечении именованных сущностей, ответах на вопросы — путём добавления небольшой линейной головы поверх выходного представления специального токена [CLS] или токенов последовательности и полного дообучения всей модели на размеченном наборе целевой задачи, обычно за 2–4 эпохи с малой скоростью обучения порядка <tex>2\cdot10^{-5}</tex>.
-
Модель BERT, предобученная на задачах предсказания замаскированного токена и предсказания следующего предложения на текстах Wikipedia и BookCorpus, дообучается под конкретную задачу добавлением небольшой головы поверх векторного представления специального токена (классификация текста, определение сходства пары предложений) либо поверх представлений отдельных токенов (извлечение именованных сущностей, ответы на вопросы). Типичное дообучение BERT занимает 2–4 эпохи со скоростью обучения порядка <tex>2\cdot 10^{-5}</tex>–<tex>5\cdot 10^{-5}</tex>; более длительное обучение на небольших датасетах, как правило, приводит к переобучению.
+
'''Дообучение ResNet для классификации медицинских изображений.''' Свёрточная сеть, предобученная на ImageNet, дообучается на существенно меньшем и специфичном наборе медицинских снимков (рентгеновские снимки, гистологические срезы). Из-за заметного расхождения распределений (естественные фотографии против медицинских изображений) и, как правило, ограниченного объёма размеченных данных типична стратегия частичной заморозки: ранние свёрточные слои, кодирующие общие низкоуровневые признаки (границы, текстуры), замораживаются, поздние слои и классификационная голова дообучаются, часто в сочетании с сильной аугментацией данных.
-
=== Дообучение ResNet для классификации медицинских изображений ===
+
'''Дообучение CLIP для мультимодальных задач.''' Предобученная модель [[CLIP]] дообучается для узкоспециализированных задач сопоставления изображений и текста — например, для доменов с нетипичной для веб-данных лексикой (медицинские изображения с диагностическими описаниями, спутниковые снимки с географическими подписями). Ввиду масштаба модели и её мультимодальной природы для CLIP особенно часто применяются параметро-эффективные методы, в частности LoRA, накладываемые на энкодеры изображения и текста.
-
Сети семейства ResNet, предобученные на ImageNet, широко используются как основа для классификации медицинских изображений (рентгеновские снимки, гистологические срезы), несмотря на существенное различие статистики естественных фотографий и медицинских изображений. Типичная практика — заморозить нижние сверточные блоки (кодирующие универсальные примитивы вроде границ и текстур) и дообучать верхние блоки вместе с новой головой классификации, дополнительно применяя специфичную для медицинских изображений аугментацию и усиленный контроль по валидационной выборке ввиду типично небольшого объёма размеченных медицинских данных.
+
== Дообучение с подкреплением из обратной связи человека (RLHF) ==
-
=== Дообучение CLIP для мультимодальных задач ===
+
Особый и отдельно выделяемый случай дообучения — '''обучение с подкреплением из обратной связи человека''' (Reinforcement Learning from Human Feedback, RLHF), применяемое при доводке [[Большая языковая модель|больших языковых моделей]] после этапа предобучения на предсказание следующего токена. Классическая схема RLHF (Ouyang et al., 2022, метод InstructGPT) состоит из трёх последовательных этапов:
-
CLIP, предобученный контрастным сопоставлением изображений и текстовых описаний на масштабном веб-корпусе пар «изображение подпись», дообучается под специфические мультимодальные задачи (поиск изображений по тексту в узкой предметной области, классификация с нестандартным набором классов через текстовые запросы). Из-за масштаба модели и общей природы контрастной задачи предобучения для CLIP особенно часто применяют параметро-эффективные методы дообучения или дообучение исключительно линейного классификатора (linear probing) поверх замороженного визуального энкодера, что зачастую даёт качество, близкое к полному дообучению, при кратно меньших вычислительных затратах.
+
# '''Дообучение с учителем''' (supervised fine-tuning, SFT) — модель дообучается на наборе демонстраций «инструкция — качественный ответ», подготовленных людьми-разметчиками, что задаёт базовый формат следования инструкциям.
 +
# '''Обучение модели вознаграждения''' (reward model) отдельная модель обучается предсказывать предпочтения людей: разметчики сравнивают пары ответов модели на одну инструкцию, и модель вознаграждения обучается присваивать более высокую оценку предпочитаемому ответу.
 +
# '''Оптимизация политики''' — исходная дообученная на этапе SFT модель далее дообучается алгоритмом обучения с подкреплением оригинальной работе — PPO) так, чтобы максимизировать оценку, выдаваемую моделью вознаграждения, при этом штрафуется чрезмерное отклонение от политики SFT-этапа (обычно через KL-дивергенцию), что предотвращает вырождение в ответы, эксплуатирующие слабости модели вознаграждения.
-
== RLHF: дообучение с подкреплением из обратной связи человека ==
+
RLHF отличается от рассмотренных выше стратегий тем, что обучающий сигнал для последнего этапа поступает не напрямую из размеченных пар «вход выход», а опосредованно, через выученную модель предпочтений, что делает эту форму дообучения существенно сложнее с точки зрения инженерии и устойчивости обучения.
-
 
+
-
Особый случай дообучения — обучение с подкреплением из обратной связи человека (Reinforcement Learning from Human Feedback, RLHF), применяемое для приведения поведения [[большая языковая модель|больших языковых моделей]] в соответствие с предпочтениями людей после этапа предобучения и обычного дообучения с учителем (supervised fine-tuning, SFT). Метод, восходящий к работе Кристиано и соавторов и получивший широкую известность благодаря InstructGPT (Оуян и соавторы), состоит из трёх этапов.
+
-
 
+
-
# '''Supervised fine-tuning''' — обычное дообучение предобученной модели на датасете примеров «запрос — качественный ответ», размеченных людьми.
+
-
# '''Обучение модели вознаграждения''' (reward model) — на датасете пар ответов, ранжированных людьми по предпочтению, обучается отдельная модель, предсказывающая скалярную оценку качества ответа.
+
-
# '''Дообучение политики методом обучения с подкреплением''' (обычно PPO) языковая модель дообучается так, чтобы максимизировать предсказанное моделью вознаграждения качество ответов, с дополнительным штрафом за отклонение от SFT-модели (обычно в виде KL-дивергенции), предотвращающим слишком резкий уход политики от исходного, лингвистически естественного распределения ответов.
+
-
 
+
-
RLHF отличается от рассмотренных выше стратегий не техникой обновления весов (это может быть как полное, так и параметро-эффективное дообучение), а природой обучающего сигнала: вместо фиксированной размеченной обучающей выборки используется сигнал, получаемый через обучаемую модель вознаграждения, что относит задачу к области обучения с подкреплением, а не классического обучения с учителем.
+
== Ограничения и риски ==
== Ограничения и риски ==
-
* '''Катастрофическое забывание''' (catastrophic forgetting) — при дообучении модель может утратить часть навыков, приобретённых на этапе предобучения или на предыдущих задачах, если новые данные существенно смещают распределение весов. Явление известно с конца 1980-х годов (Маккласки и Коэн) и остаётся актуальным для современных крупных моделей; частичные решения включают заморозку части слоёв, малую скорость обучения, регуляризацию весов относительно исходной точки (например, Elastic Weight Consolidation) и ограничение числа шагов дообучения.
+
* '''Катастрофическое забывание''' (catastrophic forgetting) — при дообучении, особенно полном и с высокой скоростью обучения, модель может утратить полезные знания, накопленные на этапе предобучения, если целевая задача существенно уже или отличается по распределению от исходной; это особенно критично, когда от модели впоследствии ожидается сохранение широких, «общих» способностей наравне со специализацией.
-
 
+
* '''Переобучение на малом целевом наборе''' — при малом объёме данных целевой задачи и высокой ёмкости модели риск переобучения существенно выше, чем на этапе предобучения; отсюда потребность в усиленной регуляризации, ранней остановке и, зачастую, в параметро-эффективных методах, ограничивающих число степеней свободы.
-
:: <tex> L(\theta) = L_{new}(\theta) + \frac{\lambda}{2}\sum_i F_i\,(\theta_i - \theta_{0,i})^2 </tex>
+
* '''Вычислительные затраты''' — полное дообучение крупных моделей требует значительных объёмов видеопамяти для хранения градиентов и состояний оптимизатора по всем параметрам, что при современных масштабах моделей становится узким местом и мотивирует использование параметро-эффективных методов.
-
 
+
* '''Чувствительность к гиперпараметрам''' — качество дообучения существенно зависит от выбора скорости обучения, длительности разогрева, стратегии заморозки слоёв; неудачный выбор способен либо разрушить предобученные представления, либо не дать модели адаптироваться к целевой задаче в достаточной мере.
-
* '''Переобучение на малом датасете.''' Чем меньше целевой датасет, тем выше риск, что модель «запомнит» его специфические особенности вместо того, чтобы обобщить их; см. раздел [[#Регуляризация при дообучении|«Регуляризация при дообучении»]].
+
* '''Утрата калибровки и смещение распределения ответов''' — в частности при RLHF отмечается риск чрезмерной оптимизации под модель вознаграждения (reward hacking), приводящей к ответам, формально получающим высокую оценку, но не отражающим подлинные предпочтения пользователей.
-
* '''Несоответствие распределений''' (distribution shift) между данными предобучения и целевой задачи снижает пользу от предобучения и в крайних случаях делает его бесполезным или даже вредным (отрицательный перенос, negative transfer).
+
-
* '''Вычислительные и инфраструктурные затраты.''' Полное дообучение крупных моделей требует значительных объёмов видеопамяти для хранения градиентов и состояний оптимизатора; хранение отдельной полной копии весов под каждую дообученную задачу дорого масштабируется при большом числе задач — именно эта проблема мотивирует параметро-эффективные методы.
+
-
* '''Чувствительность к выбору гиперпараметров.''' Качество дообученной модели существенно зависит от скорости обучения, числа эпох и стратегии заморозки слоёв; в отличие от обучения с нуля, здесь неудачный выбор гиперпараметров может не просто замедлить сходимость, а необратимо испортить полезные предобученные представления.
+
== См. также ==
== См. также ==
-
 
* [[Трансферное обучение]]
* [[Трансферное обучение]]
* [[Предобучение]]
* [[Предобучение]]
Строка 204: Строка 130:
== Литература ==
== Литература ==
-
 
+
# Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL. — 2019.
-
# ''Yosinski J., Clune J., Bengio Y., Lipson H.'' How Transferable Are Features in Deep Neural Networks? // Advances in Neural Information Processing Systems (NeurIPS). — 2014.
+
# Howard J., Ruder S. Universal Language Model Fine-tuning for Text Classification (ULMFiT) // ACL. — 2018.
-
# ''Howard J., Ruder S.'' Universal Language Model Fine-tuning for Text Classification // Proceedings of ACL. — 2018.
+
# Houlsby N., Giurgiu A., Jastrzębski S. et al. Parameter-Efficient Transfer Learning for NLP // ICML. — 2019.
-
# ''Devlin J., Chang M.-W., Lee K., Toutanova K.'' BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // Proceedings of NAACL-HLT. — 2019.
+
# Li X.L., Liang P. Prefix-Tuning: Optimizing Continuous Prompts for Generation // ACL. — 2021.
-
# ''Radford A., Kim J. W., Hallacy C. et al.'' Learning Transferable Visual Models From Natural Language Supervision // Proceedings of ICML. — 2021.
+
# Hu E.J., Shen Y., Wallis P. et al. LoRA: Low-Rank Adaptation of Large Language Models // ICLR. — 2022.
-
# ''Houlsby N., Giurgiu A., Jastrzebski S. et al.'' Parameter-Efficient Transfer Learning for NLP // Proceedings of ICML. — 2019.
+
# Ouyang L., Wu J., Jiang X. et al. Training Language Models to Follow Instructions with Human Feedback // NeurIPS. — 2022.
-
# ''Li X. L., Liang P.'' Prefix-Tuning: Optimizing Continuous Prompts for Generation // Proceedings of ACL-IJCNLP. — 2021.
+
# Yosinski J., Clune J., Bengio Y., Lipson H. How Transferable Are Features in Deep Neural Networks? // NeurIPS. — 2014.
-
# ''Hu E. J., Shen Y., Wallis P. et al.'' LoRA: Low-Rank Adaptation of Large Language Models // International Conference on Learning Representations (ICLR). — 2022.
+
# Xuhong L., Grandvalet Y., Davoine F. Explicit Inductive Bias for Transfer Learning with Convolutional Networks (L2-SP) // ICML. — 2018.
-
# ''Christiano P., Leike J., Brown T. et al.'' Deep Reinforcement Learning from Human Preferences // Advances in Neural Information Processing Systems (NeurIPS). — 2017.
+
-
# ''Ouyang L., Wu J., Jiang X. et al.'' Training Language Models to Follow Instructions with Human Feedback // Advances in Neural Information Processing Systems (NeurIPS). — 2022.
+
-
# ''McCloskey M., Cohen N. J.'' Catastrophic Interference in Connectionist Networks: The Sequential Learning Problem // Psychology of Learning and Motivation. — 1989. — Vol. 24.
+
-
# ''Kirkpatrick J., Pascanu R., Rabinowitz N. et al.'' Overcoming Catastrophic Forgetting in Neural Networks // Proceedings of the National Academy of Sciences (PNAS). — 2017.
+
-
# ''Kornblith S., Shlens J., Le Q. V.'' Do Better ImageNet Models Transfer Better? // Proceedings of CVPR. — 2019.
+
-
# ''Raffel C., Shazeer N., Roberts A. et al.'' Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer // Journal of Machine Learning Research (JMLR). — 2020.
+
-
# ''Goodfellow I., Bengio Y., Courville A.'' Deep Learning. — MIT Press, 2016.
+
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
-
[[Категория:Нейронные сети]]
+
[[Категория:Глубокое обучение]]
-
[[Категория:Энциклопедия анализа данных]]
+
[[Категория:Трансферное обучение]]
-
[[Категория:Популярные и обзорные статьи]]
+

Версия 12:45, 11 июля 2026

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)


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

Содержание

Введение

Схема «предобучение + дообучение» стала доминирующей практикой в глубоком обучении по простой причине: обучение большой модели с нуля требует огромных объёмов размеченных данных и вычислительных ресурсов, которых часто нет в распоряжении конкретной прикладной задачи. Вместо этого модель сначала обучают на большом, как правило, общедоступном наборе данных (ImageNet для изображений, Wikipedia и Common Crawl для текстов), где она усваивает общие закономерности предметной области — контуры и текстуры для изображений, синтаксис и семантику для языка. Затем эта модель, уже обладающая содержательными внутренними представлениями, дообучается на существенно меньшем наборе данных, специфичном для целевой задачи.

Такой подход имеет два принципиальных преимущества по сравнению с обучением с нуля. Во-первых, он резко сокращает требуемый объём размеченных данных для целевой задачи: модель начинает не со случайной инициализации весов, а с параметров, уже кодирующих полезные закономерности. Во-вторых, он сокращает вычислительные затраты и время обучения, поскольку большая часть «тяжёлой» работы по извлечению общих признаков уже выполнена на этапе предобучения.

Дообучение стало практически повсеместным стандартом с распространением трансформерных архитектур и больших языковых моделей: модели типа BERT, GPT, ResNet, CLIP выпускаются как общедоступные предобученные чекпоинты, а подавляющее большинство прикладных систем строится путём их дообучения, а не обучения аналогичной по размеру архитектуры заново.

Постановка задачи

Пусть имеется модель с параметрами \theta_0, обученная на большом исходном наборе данных \mathcal{D}_{src} для решения некоторой исходной задачи (например, классификации на 1000 классов ImageNet или предсказания следующего токена на корпусе текстов). Требуется адаптировать эту модель к целевой задаче с набором данных \mathcal{D}_{tgt}, который, как правило, существенно меньше исходного и может иметь другое распределение признаков, другое число классов или вовсе другой тип разметки.

Формально дообучение сводится к продолжению оптимизации параметров, инициализированных значением \theta_0, на функции потерь целевой задачи:

\theta^{*} = \arg\min_{\theta} \; \mathcal{L}_{tgt}(\theta), \quad \theta_{init} = \theta_0

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

Стратегии дообучения

Выбор конкретной стратегии дообучения определяется объёмом целевых данных, степенью их близости к исходному распределению и доступными вычислительными ресурсами.

Полное дообучение (full fine-tuning) — обновлению градиентным спуском подвергаются все параметры модели, включая самые ранние слои. Даёт наибольшую гибкость адаптации и, при достаточном объёме целевых данных, как правило, наилучшее итоговое качество. Требует, однако, хранения градиентов и состояний оптимизатора для всех параметров модели, что для современных моделей с миллиардами параметров может быть неподъёмно с точки зрения памяти.

Дообучение только последних слоёв (feature extraction, linear probing) — все слои, кроме последних (обычно — только классификационная «голова»), замораживаются: их веса не изменяются, через них лишь выполняется прямой проход. Обучению подвергается небольшое число параметров новой головы. Такой подход рассматривает предобученную сеть как фиксированный экстрактор признаков. Он существенно дешевле по вычислениям и памяти, но ограничен в качестве, если целевая задача существенно отличается от исходной по распределению данных.

Дообучение с частичной заморозкой — промежуточный вариант: замораживаются ранние слои сети (как правило, отвечающие за наиболее общие, низкоуровневые признаки — границы и текстуры в изображениях, базовые синтаксические закономерности в тексте), а более поздние слои, ближе к выходу, дообучаются вместе с новой головой. Постепенная разморозка слоёв (gradual unfreezing), начиная с последних и постепенно продвигаясь к более ранним по мере обучения, — практика, предложенная в методе ULMFiT (Howard & Ruder, 2018) и до сих пор используемая как эвристика для стабилизации дообучения.

Выбор между этими стратегиями напрямую связан с объёмом доступных данных целевой задачи и подробнее рассматривается в разделе о связи дообучения с объёмом данных.

Выбор скорости обучения

Скорость обучения (learning rate) — один из наиболее чувствительных гиперпараметров при дообучении. Слишком большая скорость способна быстро разрушить полезные представления, накопленные на этапе предобучения, — это явление иногда называют «забыванием» уже на первых шагах дообучения. Общая рекомендация — использовать существенно меньшую скорость обучения, чем при обучении с нуля: типичные значения при дообучении трансформеров лежат в диапазоне 10^{-5}10^{-4}, тогда как обучение с нуля часто ведётся со скоростями порядка 10^{-3}.

Естественное развитие этой идеи — дифференциальные скорости обучения (discriminative learning rates), предложенные в том же ULMFiT: разным слоям сети назначаются разные скорости обучения, при этом более ранним, более «общим» слоям соответствует меньшая скорость, а более поздним, специфичным для задачи слоям (включая новую голову) — большая. Если пронумеровать слои от входа к выходу индексом l = 1, \dots, L, типичная схема задаёт скорость обучения слоя l как

\eta_l = \eta_L \cdot \xi^{\,L-l}

где \eta_L — скорость обучения последнего слоя, а \xi < 1 (типично около 0.9–0.95) — коэффициент затухания скорости при движении к более ранним слоям.

Дополнительно почти всегда используется разогрев скорости обучения (learning rate warmup) — постепенное увеличение скорости от малого значения до целевого в течение первых итераций дообучения, что снижает риск резкого разрушения предобученных представлений на старте, когда статистики оптимизатора ещё не накоплены, а также последующее плавное затухание скорости (linear или cosine decay) до конца обучения.

Регуляризация при дообучении

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

  • Ранняя остановка (early stopping) — обучение прерывается при первом ухудшении метрики на валидационном наборе, а не по достижении фиксированного числа эпох, что особенно важно при малых целевых наборах данных, где переобучение наступает быстро.
  • Уменьшение веса регуляризации — коэффициент weight decay и сила dropout, оптимальные для предобучения на большом наборе, зачастую избыточны для дообучения; их принято уменьшать, поскольку модель уже находится в разумной области пространства параметров и не нуждается в столь сильном сдерживании.
  • Меньший размер батча — при малых целевых наборах данных использование меньшего батча увеличивает число шагов оптимизации за эпоху и вносит дополнительный стохастический шум в градиенты, что эмпирически способствует лучшей генерализации и снижает риск резкого переобучения на немногочисленных примерах.
  • Регуляризация через близость к исходным весам — отдельный класс методов (например, L2-SP) добавляет к функции потерь штраф за отклонение текущих параметров от исходных предобученных значений \theta_0, явно ограничивая степень «дрейфа» модели от исходного решения.

Связь с объёмом данных

Решение о выборе стратегии дообучения и о том, оправдано ли дообучение вообще, определяется в первую очередь соотношением объёма целевых данных и степенью их сходства с данными, на которых проводилось предобучение. Удобно рассматривать четыре характерных случая:

  • Много данных, высокое сходство с исходным распределением — предпочтительно полное дообучение: данных достаточно, чтобы безопасно адаптировать все слои, а близость распределений снижает риск катастрофического забывания.
  • Много данных, низкое сходство — полное дообучение также оправдано, а в отдельных случаях объём данных может быть достаточен и для обучения с нуля, хотя дообучение обычно всё равно даёт выигрыш по скорости сходимости.
  • Мало данных, высокое сходство — рекомендуется дообучение только последних слоёв (feature extraction) либо частичная заморозка: близость распределений позволяет полагаться на предобученные признаки без риска, а малый объём данных делает полное дообучение опасным с точки зрения переобучения.
  • Мало данных, низкое сходство — наиболее сложный случай: полное дообучение рискует переобучиться на малом наборе, а заморозка ранних слоёв может оказаться неоптимальной, поскольку предобученные признаки плохо соответствуют новой предметной области. На практике здесь часто применяют частичную разморозку средних слоёв, сильную аугментацию данных и параметро-эффективные методы адаптации.

Общее эмпирическое правило: обучение с нуля становится предпочтительнее дообучения только тогда, когда целевой набор данных сопоставим по объёму с исходным набором предобучения либо когда предметная область целевой задачи настолько специфична (например, узкоспециализированные медицинские или спутниковые изображения), что предобученные признаки почти не переносятся.

Параметро-эффективные методы дообучения

С ростом размеров моделей — в первую очередь больших языковых моделей с миллиардами параметров — полное дообучение становится дорогостоящим не только по вычислениям, но и по памяти, поскольку требует хранения градиентов и состояний оптимизатора для каждого параметра. Это привело к развитию параметро-эффективных методов дообучения (parameter-efficient fine-tuning, PEFT), обновляющих лишь малую долю параметров модели или добавляющих небольшое число новых, при этом сохраняя основные веса замороженными.

Адаптеры (adapters, Houlsby et al., 2019) — небольшие обучаемые модули (обычно двухслойные MLP с узким «бутылочным горлышком»), вставляемые внутрь каждого слоя предобученной сети, как правило, после блока внимания и после полносвязного блока трансформера. При дообучении обновляются только веса адаптеров, основная сеть остаётся замороженной. Недостаток — дополнительная задержка на этапе инференса, так как адаптеры увеличивают глубину вычислительного графа.

Префиксное обучение (prefix-tuning, Li & Liang, 2021) и близкий к нему метод обучаемых промптов (prompt tuning) добавляют небольшое число обучаемых векторов («виртуальных токенов») к входу или к ключам и значениям механизма внимания на каждом слое, оставляя все исходные веса модели неизменными. Обучению подвергаются только эти добавленные векторы, что делает метод крайне экономным по памяти, хотя часто уступающим по качеству адаптерам и LoRA при сопоставимом числе обучаемых параметров.

LoRA (Low-Rank Adaptation, Hu et al., 2021) — один из наиболее распространённых на сегодняшний день методов PEFT для больших моделей, в частности для адаптации низкого ранга. Идея состоит в том, что изменение весовой матрицы слоя \Delta W, необходимое для адаптации к целевой задаче, представляется в виде произведения двух матриц низкого ранга:

W = W_0 + \Delta W = W_0 + BA, \qquad B \in \mathbb{R}^{d \times r}, \; A \in \mathbb{R}^{r \times k}, \; r \ll \min(d,k)

где W_0 — исходная, замороженная матрица весов, а обучению подвергаются только матрицы A и B существенно меньшей размерности, задаваемой рангом r (типичные значения — от 4 до 64). Это резко сокращает число обучаемых параметров (зачастую на два-три порядка по сравнению с полным дообучением) без дополнительной задержки на инференсе, поскольку после обучения матрицу BA можно один раз сложить с W_0, полностью устранив дополнительные вычисления.

Сравнение параметро-эффективных методов между собой и с полным дообучением — в таблице ниже.

Метод Доля обучаемых параметров Задержка на инференсе Типичное качество Особенности
Полное дообучение 100% Без изменений Максимальное (при достаточных данных) Требует наибольшей памяти под градиенты и оптимизатор
Дообучение последних слоёв < 1% Без изменений Ниже при сильном расхождении задач Минимальные вычислительные затраты
Адаптеры 1–5% Небольшое увеличение Близко к полному дообучению Модульность, лёгкость переключения между задачами
Prefix/Prompt-tuning < 1% Небольшое увеличение (за счёт длины последовательности) Уступает адаптерам и LoRA на сложных задачах Наиболее компактен по числу параметров
LoRA 0.1–1% Без изменений после слияния весов Сопоставимо с полным дообучением на многих задачах Наиболее распространён для больших языковых моделей

Примеры из практики

Дообучение BERT для задач NLP. Предобученная на корпусах Wikipedia и BookCorpus модель BERT (Devlin et al., 2019) дообучается на конкретной задаче — классификации тональности текста, извлечении именованных сущностей, ответах на вопросы — путём добавления небольшой линейной головы поверх выходного представления специального токена [CLS] или токенов последовательности и полного дообучения всей модели на размеченном наборе целевой задачи, обычно за 2–4 эпохи с малой скоростью обучения порядка 2\cdot10^{-5}.

Дообучение ResNet для классификации медицинских изображений. Свёрточная сеть, предобученная на ImageNet, дообучается на существенно меньшем и специфичном наборе медицинских снимков (рентгеновские снимки, гистологические срезы). Из-за заметного расхождения распределений (естественные фотографии против медицинских изображений) и, как правило, ограниченного объёма размеченных данных типична стратегия частичной заморозки: ранние свёрточные слои, кодирующие общие низкоуровневые признаки (границы, текстуры), замораживаются, поздние слои и классификационная голова дообучаются, часто в сочетании с сильной аугментацией данных.

Дообучение CLIP для мультимодальных задач. Предобученная модель CLIP дообучается для узкоспециализированных задач сопоставления изображений и текста — например, для доменов с нетипичной для веб-данных лексикой (медицинские изображения с диагностическими описаниями, спутниковые снимки с географическими подписями). Ввиду масштаба модели и её мультимодальной природы для CLIP особенно часто применяются параметро-эффективные методы, в частности LoRA, накладываемые на энкодеры изображения и текста.

Дообучение с подкреплением из обратной связи человека (RLHF)

Особый и отдельно выделяемый случай дообучения — обучение с подкреплением из обратной связи человека (Reinforcement Learning from Human Feedback, RLHF), применяемое при доводке больших языковых моделей после этапа предобучения на предсказание следующего токена. Классическая схема RLHF (Ouyang et al., 2022, метод InstructGPT) состоит из трёх последовательных этапов:

  1. Дообучение с учителем (supervised fine-tuning, SFT) — модель дообучается на наборе демонстраций «инструкция — качественный ответ», подготовленных людьми-разметчиками, что задаёт базовый формат следования инструкциям.
  2. Обучение модели вознаграждения (reward model) — отдельная модель обучается предсказывать предпочтения людей: разметчики сравнивают пары ответов модели на одну инструкцию, и модель вознаграждения обучается присваивать более высокую оценку предпочитаемому ответу.
  3. Оптимизация политики — исходная дообученная на этапе SFT модель далее дообучается алгоритмом обучения с подкреплением (в оригинальной работе — PPO) так, чтобы максимизировать оценку, выдаваемую моделью вознаграждения, при этом штрафуется чрезмерное отклонение от политики SFT-этапа (обычно через KL-дивергенцию), что предотвращает вырождение в ответы, эксплуатирующие слабости модели вознаграждения.

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

Ограничения и риски

  • Катастрофическое забывание (catastrophic forgetting) — при дообучении, особенно полном и с высокой скоростью обучения, модель может утратить полезные знания, накопленные на этапе предобучения, если целевая задача существенно уже или отличается по распределению от исходной; это особенно критично, когда от модели впоследствии ожидается сохранение широких, «общих» способностей наравне со специализацией.
  • Переобучение на малом целевом наборе — при малом объёме данных целевой задачи и высокой ёмкости модели риск переобучения существенно выше, чем на этапе предобучения; отсюда потребность в усиленной регуляризации, ранней остановке и, зачастую, в параметро-эффективных методах, ограничивающих число степеней свободы.
  • Вычислительные затраты — полное дообучение крупных моделей требует значительных объёмов видеопамяти для хранения градиентов и состояний оптимизатора по всем параметрам, что при современных масштабах моделей становится узким местом и мотивирует использование параметро-эффективных методов.
  • Чувствительность к гиперпараметрам — качество дообучения существенно зависит от выбора скорости обучения, длительности разогрева, стратегии заморозки слоёв; неудачный выбор способен либо разрушить предобученные представления, либо не дать модели адаптироваться к целевой задаче в достаточной мере.
  • Утрата калибровки и смещение распределения ответов — в частности при RLHF отмечается риск чрезмерной оптимизации под модель вознаграждения (reward hacking), приводящей к ответам, формально получающим высокую оценку, но не отражающим подлинные предпочтения пользователей.

См. также

Литература

  1. Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL. — 2019.
  2. Howard J., Ruder S. Universal Language Model Fine-tuning for Text Classification (ULMFiT) // ACL. — 2018.
  3. Houlsby N., Giurgiu A., Jastrzębski S. et al. Parameter-Efficient Transfer Learning for NLP // ICML. — 2019.
  4. Li X.L., Liang P. Prefix-Tuning: Optimizing Continuous Prompts for Generation // ACL. — 2021.
  5. Hu E.J., Shen Y., Wallis P. et al. LoRA: Low-Rank Adaptation of Large Language Models // ICLR. — 2022.
  6. Ouyang L., Wu J., Jiang X. et al. Training Language Models to Follow Instructions with Human Feedback // NeurIPS. — 2022.
  7. Yosinski J., Clune J., Bengio Y., Lipson H. How Transferable Are Features in Deep Neural Networks? // NeurIPS. — 2014.
  8. Xuhong L., Grandvalet Y., Davoine F. Explicit Inductive Bias for Transfer Learning with Convolutional Networks (L2-SP) // ICML. — 2018.
Личные инструменты