Ответ
Fine-tuning — это техника глубокого обучения, при которой предварительно обученную на большой обобщенной задаче модель (например, ResNet для классификации изображений или BERT для обработки языка) дополнительно обучают на меньшем наборе данных для решения конкретной, более узкой задачи.
Зачем это нужно? Обучение современных глубоких сетей с нуля требует огромных данных и вычислительных ресурсов. Fine-tuning позволяет:
- Использовать уже полученные знания: Модель уже умеет выделять низкоуровневые признаки (края, текстуры в CV; синтаксис, семантику в NLP).
- Добиться высокой точности на маленьких датасетах: Часто достаточно нескольких тысяч или даже сотен размеченных примеров.
- Значительно ускорить разработку: Не нужно обучать модель неделями.
Типичный процесс fine-tuning в PyTorch:
import torch
import torch.nn as nn
from torchvision import models, transforms
from torch.optim import AdamW
# 1. Загружаем предобученную модель (например, ResNet50)
model = models.resnet50(pretrained=True)
# 2. Заменяем последний полносвязный слой (классификатор) под наше число классов
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 10) # Допустим, у нас 10 классов
# 3. Стратегия обучения: часто сначала «замораживаем» все слои, кроме последних
for param in model.parameters():
param.requires_grad = False # Отключаем градиенты
for param in model.fc.parameters():
param.requires_grad = True # Включаем градиенты только для нового классификатора
# 4. Используем оптимизатор с маленьким learning rate для аккуратной настройки
optimizer = AdamW(model.fc.parameters(), lr=1e-4)
# 5. После нескольких эпох можно «разморозить» больше слоев для более тонкой настройки
for param in model.layer4.parameters():
param.requires_grad = True
optimizer = AdamW(model.parameters(), lr=1e-5) # Еще меньший LR
Ключевые моменты:
- Learning Rate: Используется значительно меньший, чем при обучении с нуля (например, 1e-4, 1e-5), чтобы не «разрушить» полезные предобученные веса.
- Стратегия заморозки: Часто начинают с обучения только новых, добавленных слоев, затем постепенно размораживают более глубокие слои модели.
- Области применения: Компьютерное зрение (CV), обработка естественного языка (NLP), речевые технологии.