Как дообучить предобученную модель (ResNet, BERT) на своей задаче?
- Что такое transfer learning?
- Зачем замораживать слои?
Предобученная модель уже умеет извлекать общие признаки (края и формы для изображений, смысл слов для текста). Её берут как основу, заменяют выходной слой под свои классы и дообучают на своих данных. Мало данных — заморозить основу и учить только голову; больше данных — размораживать верхние слои с малым learning rate, чтобы не разрушить выученное. Предобработка входа — та же, что при предобучении (нормализация изображений, токенизатор модели).
- Сотни–тысячи примеров часто дают качество, недостижимое обучением с нуля
- Learning rate для основы обычно в 10–100 раз меньше, чем для головы
- Библиотеки: torchvision, timm, Hugging Face Transformers
А ещё Для текстов на русском берут модели, предобученные на русском или многоязычные
Подробно
Пример (изображения):
import torchvision
model = torchvision.models.resnet50(weights="DEFAULT")
for p in model.parameters():
p.requires_grad = False
model.fc = torch.nn.Linear(model.fc.in_features, n_classes)
Текст (Transformers):
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"имя-модели", num_labels=5)
Порядок: обучить голову → разморозить верхние слои → дообучить всё с малым шагом и ранней остановкой; сравнивать с базовой линией на отложенной выборке.
Что хотят услышать
- Замена головы и дообучение.
- Заморозка и малый learning rate.
- Предобработка как при предобучении.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Всегда дообучать все слои сразу с большим learning rate
- ✗Предобработку входа можно выбрать любую — модель адаптируется
- ✓Новый выходной слой, основу сначала заморозить, затем малый шаг
- ✗Transfer learning требует больше данных, чем обучение с нуля
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.