Makine Öğrenmesi
Fine-tuning
Fine-tuning, pre-trained modelin bazı katmanlarını yeniden eğitir.
Fine-tuning
İnce ayar (fine-tuning), önceden eğitilmiş ağırlıklardan başlayıp tüm ağı (ya da üst katmanlarını) yeni veriyle küçük bir öğrenme oranıyla eğitmektir. Küçük oran, değerli genel özelliklerin bozulmasını önler:
opt = torch.optim.Adam([
{"params": govde.parameters(), "lr": 1e-4}, # gövde: küçük adım
{"params": yeni_bas.parameters(), "lr": 1e-3}, # yeni baş: büyük adım
])
Yeni baş rastgele başladığı için daha hızlı öğrenmesi gerekir; gövde ise yalnızca ince düzeltmeler yapar.
Aşamalı ince ayar
Yaygın bir strateji iki aşamalıdır: önce gövde dondurulup yalnızca baş eğitilir; baş makul hale gelince gövde de açılıp küçük oranla birlikte eğitilir:
# 1. aşama
for p in govde.parameters():
p.requires_grad = False
egit(bas, epoch=3)
# 2. aşama
for p in govde.parameters():
p.requires_grad = True
egit(tum_model, epoch=5, lr=1e-4)
Böylece başın rastgele başlangıcı gövdeye zarar veremeden düzelmiş olur.
Uygulama Parametre grupları
govde için lr=1e-4, yeni baş nn.Linear(32, 5) için lr=1e-3 olan bir Adam optimize edici kur. Grup sayısını ve her grubun öğrenme oranını liste olarak aynı satırda yazdır. Ardından her grubun parametre sayısını liste olarak yazdır.
Örnek çözümü göster
import torch
from torch import nn
torch.manual_seed(0)
govde = nn.Sequential(
nn.Conv2d(3, 16, 3, padding=1), nn.ReLU(), nn.MaxPool2d(2),
nn.Conv2d(16, 32, 3, padding=1), nn.ReLU(),
nn.AdaptiveAvgPool2d(1), nn.Flatten())
bas = nn.Linear(32, 1000)
onceden = nn.Sequential(govde, bas)
yeni_bas = nn.Linear(32, 5)
opt = torch.optim.Adam([{"params": govde.parameters(), "lr": 1e-4}, {"params": yeni_bas.parameters(), "lr": 1e-3}])
print(len(opt.param_groups), [g["lr"] for g in opt.param_groups])
print([sum(p.numel() for p in g["params"]) for g in opt.param_groups])
Kendini test et
-
İnce ayarda gövdeye büyük öğrenme oranı vermenin riski nedir?
- Risk yoktur
- Bellek taşması
- Önceden öğrenilmiş özelliklerin bozulması
- Eğitimin yavaşlaması
Cevabı göster
Önceden öğrenilmiş özelliklerin bozulması — Rastgele başın büyük gradyanları ilk adımlarda gövdeyi bozabilir.
-
Gövdeye küçük öğrenme oranı ver.
{"params": govde.parameters(), "____": 1e-4}
Cevabı göster
{"params": govde.parameters(), "lr": 1e-4}
-
Ayarları eşleştir.
- gövde lr
- 1e-4 (küçük)
- baş lr
- 1e-3 (büyük)
- 1. aşama
- Gövde donuk
- 2. aşama
- Tüm model
Sıradaki ders: Feature extraction