Transfer learning to jedna z najważniejszych technik współczesnego uczenia maszynowego. Zamiast trenować model od zera — co wymaga ogromnych zbiorów danych i mocy obliczeniowej — wykorzystujemy wiedzę z modelu wstępnie wytrenowanego (pretrained model) na dużym, ogólnym zbiorze danych i dostosowujemy go do nowego, konkretnego zadania. To drastycznie redukuje czas treningu, wymaganą ilość danych i koszty obliczeniowe.
Motywacja
Trenowanie głębokiej sieci neuronowej od zera wymaga:
- Dużo danych — tysiące do milionów etykietowanych przykładów
- Dużo mocy obliczeniowej — godziny/dni na GPU
- Ekspertyzy — dobór architektury, hiperparametrów, strategii treningu
W wielu praktycznych scenariuszach mamy jedynie kilkaset lub kilka tysięcy etykietowanych przykładów. Trenowanie od zera na tak małym zbiorze prowadzi do overfittingu. Transfer learning rozwiązuje ten problem.
Biologiczna analogia
Ludzki mózg również stosuje transfer learning. Dziecko, które nauczyło się rozpoznawać psy, szybciej nauczy się rozpoznawać koty — bo już opanowało pojęcia „łapy", „ogon", „sierść". Nie uczy się widzenia od zera dla każdego zwierzęcia.
Jak działa transfer learning?
Kluczowe założenie
Głębokie sieci neuronowe uczą się hierarchii cech:
- Wczesne warstwy — ogólne cechy niskiego poziomu (krawędzie, tekstury, kolory w wizji; n-gramy, składnia w NLP)
- Środkowe warstwy — bardziej złożone wzorce (części obiektów, frazy)
- Późne warstwy — cechy specyficzne dla zadania (klasy obiektów, kategorie sentymentu)
Cechy z wczesnych i środkowych warstw są uniwersalne — krawędzie i tekstury są użyteczne niezależnie od tego, czy rozpoznajemy psy, samochody czy guzy nowotworowe. Transfer learning wykorzystuje tę uniwersalność.
Strategie transfer learningu
1. Feature Extraction
Używamy wytrenowanego modelu jako stałego ekstraktora cech. Zamrażamy wszystkie warstwy modelu (nie aktualizujemy ich wag) i trenujemy jedynie nową warstwę klasyfikacyjną na wierzchu.
Procedura:
- Weź model wytrenowany na dużym zbiorze (np. ResNet-50 na ImageNet)
- Usuń ostatnią warstwę klasyfikacyjną
- Zamroź wszystkie warstwy (freeze weights)
- Dodaj nową warstwę klasyfikacyjną dostosowaną do zadania (np. 10 klas zamiast 1000)
- Trenuj tylko nową warstwę na swoich danych
Kiedy stosować: Mały zbiór danych, zadanie podobne do oryginalnego.
2. Fine-tuning
Oprócz trenowania nowej warstwy klasyfikacyjnej, odmrażamy (unfreeze) część warstw wytrenowanego modelu i trenujemy je z niskim learning rate.
Procedura:
- Weź model wytrenowany na dużym zbiorze
- Zastąp warstwę klasyfikacyjną
- Zamroź wczesne warstwy (ogólne cechy)
- Odmroź późne warstwy (specyficzne cechy)
- Trenuj odmrożone warstwy + nową klasyfikacyjną z niskim LR
Kiedy stosować: Średni zbiór danych, zadanie różniące się od oryginalnego.
3. Pełny fine-tuning
Wszystkie warstwy modelu są odmrożone i trenowane z niskim learning rate. Zachowujemy inicjalizację z pretrenowanego modelu — lepsza niż losowa.
Kiedy stosować: Duży zbiór danych, istotne różnice między zadaniami.
Discriminative Learning Rates
Technika zaproponowana przez Jeremy'ego Howarda (fastai): różne warstwy modelu trenowane z różnymi learning rate. Wczesne warstwy (ogólne cechy) z bardzo niskim LR, późne warstwy z wyższym. Zapobiega zapomnieniu wczesnych reprezentacji przy agresywnym fine-tuningu.
Gradual Unfreezing
Stopniowe odmrażanie warstw — najpierw trenujemy tylko nową warstwę, potem odmrażamy ostatnią warstwę pretrained modelu, potem przedostatnią itd. Daje czas na adaptację warstw na siebie.
Transfer learning w wizji komputerowej
Modele bazowe
Popularne modele wytrenowane na ImageNet (14 mln obrazów, 1000 klas):
- ResNet (50, 101, 152) — rezidualne sieci, solidna wydajność
- EfficientNet — optymalna relacja jakość/rozmiar
- Vision Transformer (ViT) — transformerowa architektura dla wizji
- ConvNeXt — zmodernizowane CNN
Zastosowania
- Diagnostyka medyczna — klasyfikacja zdjęć dermatoskopowych, RTG, skanów CT z kilkuset etykietowanymi obrazami
- Kontrola jakości — detekcja defektów na linii produkcyjnej
- Rolnictwo — rozpoznawanie chorób roślin ze zdjęć liści
- Satellite imagery — klasyfikacja użytkowania ziemi
Praktyczny przykład (PyTorch)
import torchvision.models as models
import torch.nn as nn
# Wczytaj wytrenowany ResNet-50
model = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V2)
# Zamroź wszystkie warstwy
for param in model.parameters():
param.requires_grad = False
# Zastąp ostatnią warstwę (1000 klas → 5 klas)
model.fc = nn.Linear(model.fc.in_features, 5)
# Trenuj tylko nową warstwę
optimizer = torch.optim.Adam(model.fc.parameters(), lr=1e-3)
Transfer learning w NLP
Transfer learning zrewolucjonizował przetwarzanie języka naturalnego jeszcze bardziej niż wizję komputerową.
Ewolucja
- Word2Vec, GloVe (2013-2014) — pretrenowane embeddingi słów. Prosty transfer: użyj gotowych wektorów jako inicjalizacji warstwy embeddingów
- ELMo (2018) — kontekstowe embeddingi z dwukierunkowego LSTM
- BERT, GPT (2018) — transformerowe modele językowe z pretreningiem na ogromnych korpusach tekstu
- GPT-3, GPT-4, Claude — modele foundation o miliardach parametrów, adaptowane do zadań przez prompt engineering lub fine-tuning
Pretrenowanie + fine-tuning w BERT
- Pretrenowanie: BERT trenowany na miliardach słów (Wikipedia + BookCorpus) z dwoma zadaniami — masked language modeling (przewidywanie zakrytych słów) i next sentence prediction
- Fine-tuning: dodanie warstwy klasyfikacyjnej i trening na kilku tysiącach etykietowanych przykładów (np. analiza sentymentu, NER, QA)
BERT z fine-tuningiem na kilku tysiącach przykładów bije modele trenowane od zera na dziesiątkach tysięcy.
Transfer learning w audio
- Wav2Vec 2.0 — pretrenowany na nieoznaczonym audio, fine-tunowany do rozpoznawania mowy z minutami etykietowanych danych
- Whisper (OpenAI) — wielojęzyczny model mowy, adaptowalny do specyficznych domen
- CLAP — contrastive language-audio pretraining
Kiedy transfer learning nie działa?
- Zbyt duża różnica domen — np. model wytrenowany na zdjęciach z Internetu do analizy obrazów medycznych z ultrasonografu. Cechy niskiego poziomu mogą być zbyt różne
- Negative transfer — transfer może pogorszyć wyniki, jeśli źródłowe i docelowe zadanie wymagają konfliktujących reprezentacji
- Bardzo duży zbiór docelowy — przy milionach przykładów trening od zera może dać lepsze wyniki, bo model dostosowuje się w pełni do danych
Jak ocenić przydatność transferu?
- Podobieństwo domen — im bardziej podobne, tym lepiej
- Rozmiar zbioru docelowego — mały → feature extraction, średni → fine-tuning, duży → trening od zera
- Eksperyment — porównaj fine-tuning z treningiem od zera na walidacji
Foundation Models i transfer learning
Współczesne foundation models (GPT-4, Claude, Gemini, Llama) to transfer learning doprowadzony do ekstremum:
- Pretrenowanie na bilionach tokenów tekstu z Internetu
- Transfer do dowolnego zadania przez prompt engineering (zero-shot) lub fine-tuning
- Emergentne zdolności pojawiające się dopiero przy odpowiedniej skali
To zmiana paradygmatu: zamiast trenować model per zadanie, mamy jeden model adaptowalny do tysięcy zadań.
Podsumowanie
Transfer learning zmienił oblicze uczenia maszynowego — od kosztownego treningu od zera do efektywnego adaptowania wytrenowanych modeli. Feature extraction, fine-tuning i prompt engineering to trzy poziomy transferu, odpowiednie dla różnych rozmiarów danych i specyfiki zadania. Foundation models to kulminacja tej idei: jeden model, wiele zastosowań.