Koncepcje i strategie uczenia transferowego
Ekstrakcja cech a dostrajanie, zamrożone warstwy, kiedy uczenie transferowe pomaga.
Koncepcje i strategie uczenia transferowego to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Czym jest uczenie transferowe
Uczenie transferowe wykorzystuje model wytrenowany na dużym zbiorze danych jako punkt wyjścia dla nowego, powiązanego zadania. Zamiast uczyć się cech wizualnych od podstaw, korzystasz z cech, których sieć nauczyła się wcześniej.
Znacznie zmniejsza to ilość danych i moc obliczeniową potrzebne do osiągnięcia wysokiej dokładności.
Fundament ImageNet
Większość wstępnie wytrenowanych modeli wizyjnych jest trenowana na zbiorze ImageNet, zawierającym około 1,4 miliona obrazów należących do 1000 klas.
Podczas tego treningu sieć uczy się hierarchii cech: krawędzi i kolorów we wczesnych warstwach, tekstur w warstwach pośrednich oraz części obiektów w warstwach wyższych. Te cechy niskiego poziomu dobrze przenoszą się do niemal każdego zadania związanego z obrazami.
Dlaczego wczesne cechy można przenosić
Pierwsze warstwy konwolucyjne wykrywają ogólne wzorce (krawędzie, plamy i gradienty), które występują na każdym naturalnym obrazie — niezależnie od tego, czy przedstawia on koty, zdjęcia rentgenowskie, czy fotografie satelitarne.
Głębsze warstwy stają się bardziej specyficzne dla zadania (łączą te krawędzie w części obiektów z ImageNet). Dlatego zwykle zachowujemy wczesne warstwy, a późniejsze zastępujemy lub trenujemy ponownie.
Strategia 1: ekstrakcja cech
Ekstrakcja cech zamraża każdą warstwę wstępnie wytrenowanej bazy, więc jej wagi nigdy się nie zmieniają. Baza działa jako stały ekstraktor cech; trenujesz tylko niewielką nową głowicę klasyfikacyjną na jej wyjściu.
Użyj tej strategii, gdy zbiór danych jest mały i podobny do ImageNet. Jest szybka i ogranicza przeuczenie, ponieważ trenowanych jest niewiele parametrów.
base.trainable = False
model = Sequential([
base, # frozen ImageNet features
GlobalAveragePooling2D(),
Dense(num_classes, activation="softmax") # only this trains
])Strategia 2: dostrajanie
Dostrajanie odblokowuje górne warstwy bazy i trenuje je ponownie razem z głowicą, pozwalając sieci dostosować cechy wysokiego poziomu do konkretnych danych.
Użyj tej strategii, gdy masz więcej danych lub Twoja dziedzina różni się od ImageNet (np. obrazy medyczne). Zawsze dostrajaj model przy bardzo małym współczynniku uczenia, aby uniknąć zniszczenia wstępnie wytrenowanych wag.
Ekstrakcja cech a dostrajanie
- Ekstrakcja cech: baza zamrożona, trenowana jest tylko głowica, bardzo szybko, najlepsze rozwiązanie dla małych i podobnych danych.
- Dostrajanie: odblokowane górne warstwy bazy oraz głowica, wolniej, najlepsze rozwiązanie dla większych lub odmiennych danych.
Popularny schemat polega na rozpoczęciu od ekstrakcji cech, a następnie dostrajaniu w drugiej fazie, gdy głowica już się ustabilizuje.
Wymagana ilość danych
To, ile masz danych, decyduje o wyborze strategii:
- Kilkset obrazów: tylko ekstrakcja cech (zamroź wszystko).
- Parę tysięcy: ekstrakcja cech, a następnie dostrajanie kilku najwyższych warstw.
- Dziesiątki tysięcy lub więcej: dostrajanie większej części bazy, a być może całej sieci.
Mniejsza ilość danych oznacza, że należy zamrozić więcej warstw, ponieważ mniejsza liczba trenowanych parametrów ogranicza ryzyko przeuczenia.
Zastępowanie głowicy klasyfikacyjnej
Modele ImageNet zwracają 1000 klas. Twoje zadanie prawdopodobnie ma inną ich liczbę, dlatego usuń oryginalną górną część (include_top=False) i dołącz własną głowicę o rozmiarze dopasowanym do liczby klas.
from tensorflow.keras import layers, Model
x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.2)(x)
outputs = layers.Dense(5, activation="softmax")(x) # 5 custom classes
model = Model(base.input, outputs)Dopasowanie wstępnego przetwarzania
Każda rodzina wstępnie wytrenowanych modeli oczekuje danych wejściowych przeskalowanych w taki sam sposób, jak podczas treningu na ImageNet. Użycie pasującej funkcji preprocess_input jest niezbędne, ponieważ w przeciwnym razie dokładność gwałtownie spadnie.
from tensorflow.keras.applications.resnet50 import preprocess_input
# Scale pixels exactly as ResNet50 expects
x = preprocess_input(raw_image_batch)Dyscyplina współczynnika uczenia
Podczas ekstrakcji cech zwykły współczynnik uczenia (np. 1e-3) jest odpowiedni, ponieważ trenowana jest tylko nowa głowica.
Podczas dostrajania należy zmniejszyć go do bardzo małej wartości, na przykład 1e-5. Duże aktualizacje zatarłyby starannie wyuczone wagi ImageNet — zjawisko to nazywa się katastrofalnym zapominaniem.
Typowy przebieg pracy
- Wczytaj wstępnie wytrenowaną bazę z użyciem
include_top=False. - Zamroź ją i wytrenuj nową głowicę (ekstrakcja cech).
- Odblokuj górne warstwy i trenuj ponownie przy bardzo małym współczynniku uczenia (dostrajanie).
- Oceń model i przekonwertuj go do wdrożenia.
To etapowe podejście zapewnia wysoką dokładność nawet przy umiarkowanych zbiorach danych.
Szybki test
Sprawdź swoje rozumienie strategii uczenia transferowego.
Podsumowanie
Nauczyłeś się, że uczenie transferowe wykorzystuje cechy wstępnie wytrenowane na ImageNet (1,4 miliona obrazów, 1000 klas). Ekstrakcja cech zamraża bazę dla małych i podobnych zbiorów danych, natomiast dostrajanie odblokowuje górne warstwy przy bardzo małym współczynniku uczenia w przypadku większych lub odmiennych danych.
Dopasuj wstępne przetwarzanie do bazy, zastąp głowicę głowicą odpowiednią dla swoich klas i zastosuj etapowy przebieg pracy. Następnie przełożymy to na kod z użyciem VGG16 i ResNet50.
Często zadawane pytania
Czy lekcja „Koncepcje i strategie uczenia transferowego” jest bezpłatna?
Tak — pełny tekst „Koncepcje i strategie uczenia transferowego” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Koncepcje i strategie uczenia transferowego”?
Ekstrakcja cech a dostrajanie, zamrożone warstwy, kiedy uczenie transferowe pomaga. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Koncepcje i strategie uczenia transferowego”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Koncepcje i strategie uczenia transferowego
- Używanie VGG16 i ResNet50 jako modeli bazowych
- Dostrajanie: odmrażanie i ponowne trenowanie
- MobileNet i EfficientNet na potrzeby wdrażania na urządzeniach brzegowych