🎯 Definicja

Transfer Learning (uczenie transferowe) to technika w uczeniu maszynowym, która polega na ponownym wykorzystaniu wiedzy zdobytej przez model podczas rozwiązywania jednego zadania (źródłowego) do przyspieszenia i ulepszenia uczenia się na zadaniu pokrewnym (docelowym).

Zamiast trenować model od zera, stosuje się model wstępnie wytrenowany (pretrained model), który następnie jest dostrajany (fine-tuned) lub wykorzystywany jako ekstraktor cech (feature extractor) dla nowego przypadku użycia.

🔑 Kluczowe punkty

  • Pozwala trenować skuteczne modele przy mniejszej liczbie danych i mniejszym wysiłku obliczeniowym.
  • Powszechnie stosowany w komputerowym rozpoznawaniu obrazów, NLP i audio.
  • Przykład: użycie modelu BERT lub GPT do klasyfikacji tekstu po jego dostrojeniu.
  • Może działać na poziomie:
    • Przeniesienia struktur modelu
    • Przeniesienia wag (weights) i warstw
    • Wykorzystania jako zamrożony ekstraktor cech

📚 Typowe scenariusze Transfer Learning

ScenariuszOpis
Feature ExtractionZamrożenie wag pretrenowanego modelu i wykorzystanie jego wyjść jako cech wejściowych do nowej warstwy klasyfikacji.
Fine-TuningDostosowanie (części lub całości) wag pretrenowanego modelu do nowego zadania na mniejszych danych.
Zero-shot / Few-shotWykorzystywanie modelu bez ponownego treningu, tylko z odpowiednim sformułowaniem promptu (np. LLM).

Proces Transfer Learningu

  1. Wybór modelu pretrenowanego (np. ResNet, BERT, GPT, VGG, ViT).
  2. Zamrożenie wybranych warstw lub pozostawienie ich do dalszego treningu.
  3. Dostosowanie ostatnich warstw do nowej liczby klas lub formy wyjściowej.
  4. Trenowanie nowej głowicy / całego modelu z nowymi danymi.
  5. (Opcjonalnie) eksport i deployment modelu dostrojonego.

🧠 Przykład: NLP

Użycie modelu bert-base-uncased do klasyfikacji recenzji filmu:

from transformers import BertForSequenceClassification, Trainer
 
model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)
# Fine-tuning na zadaniu binarnej klasyfikacji (np. sentyment: pozytywny/negatywny)

🖼️ Przykład: Vision

Dostrajanie ResNet50 do klasyfikacji medycznych obrazów (np. zmiany skórne):

from torchvision.models import resnet50
 
model = resnet50(pretrained=True)
# Zamroź warstwy wcześniej uczone na ImageNet
for param in model.parameters():
    param.requires_grad = False
 
# Trenuj tylko ostatnią (nową) warstwę klasyfikującą
model.fc = torch.nn.Linear(2048, 3)  # np. 3 klasy chorób skóry

💡 Zastosowania

  • Rozpoznawanie obrazów i OCR
  • Klasyfikacja sentymentu i analiza treści tekstowej
  • Medycyna (diagnoza obrazowa, segmentacja)
  • Chatboty i asystenci AI
  • Systemy rekomendacji
  • Detekcja obiektów i transkrypcja audio

✅ Zalety

  • Oszczędność zasobów (czas, dane, moc obliczeniowa)
  • Lepsze wyniki przy ograniczonych danych
  • Łatwiejsza adaptacja modeli uniwersalnych do problemów domenowych

⚠️ Wyzwania

  • Nie dla każdej domeny da się zastosować bez dopasowania
  • Efekt “katastrofalnego zapominania”, jeśli fine-tuning jest agresywny
  • Wymaga wiedzy o strukturze oryginalnego modelu

📌 Źródła

👽 Brudnopis

  • transfer learning = fundamentalna technika XXI w ML
  • GPT = jeden wielki transfer modelu językowego + prompting
  • używany wszędzie: medycyna, NLP, wizja
  • fine-tune = adjust, feature extraction = zamrożenie
  • tensorflow hub, huggingface, torchvision → źródła modeli