Przejdź do treści głównej

Uczenie półnadzorowane: jak trenować dokładniejsze modele z mniejszą liczbą oznaczonych danych

Uczenie półnadzorowane trenuje modele na mieszance danych oznaczonych i nieoznaczonych, obniżając koszty oznaczania i poprawiając dokładność w zadaniach takich jak klasyfikacja obrazów, analiza tekstu czy diagnostyka medyczna.
Zaktualizowano 4 maj 2026  · 12 min Czytać

Oznaczanie danych jest kosztowne, powolne, zależne od domeny i większości zespołów brakuje ich wystarczającej ilości.

Do trenowania modelu zawsze potrzebne są oznaczone dane, ale ich poprawne oznaczenie wymaga czasu i często eksperta z danej dziedziny. Na przykład obrazy medyczne wymagają radiologów, a dokumenty prawne — prawników. Nawet proste zadania, takie jak analiza sentymentu, wymagają, by ktoś usiadł i ręcznie otagował każdy przykład. W efekcie większość zespołów ML kończy z malutkim zbiorem danych oznaczonych i ogromną ilością danych nieoznaczonych, których nie potrafi wykorzystać.

Uczenie półnadzorowane rozwiązuje ten problem, trenując na obu typach. Bierze niewielki zbiór oznaczonych danych, łączy go z dużym zbiorem danych nieoznaczonych i pozwala modelowi uczyć się wzorców.

W tym artykule wyjaśnię, jak działa uczenie półnadzorowane, omówię najczęstsze techniki i pokażę, kiedy warto je stosować.

Ale czym właściwie jest uczenie nadzorowane? Przeczytaj nasz wpis na blogu, aby poznać działanie kluczowych algorytmów uczenia nadzorowanego.

Czym jest uczenie półnadzorowane?

Uczenie półnadzorowane to podejście w uczeniu maszynowym, które trenuje na mieszance danych oznaczonych i nieoznaczonych.

Jak sugeruje nazwa, plasuje się ono między uczeniem nadzorowanym a nienadzorowanym. Uczenie nadzorowane wymaga oznaczenia każdej próbki. Uczenie nienadzorowane działa bez jakichkolwiek etykiet. Uczenie półnadzorowane wykorzystuje niewielki zbiór przykładów oznaczonych wraz z większą kolekcją przykładów nieoznaczonych.

Dane oznaczone mówią modelowi, czego ma szukać. Dane nieoznaczone pokazują modelowi, jak dane są ustrukturyzowane. Razem dają modelowi więcej informacji niż każdy z tych typów osobno.

Jak działa uczenie półnadzorowane

Proces zaczyna się od niewielkiego zbioru danych oznaczonych — może kilkuset przykładów, dla których znają Państwo poprawne wyjście.

Następnie dołączany jest znacznie większy zbiór danych nieoznaczonych. Mogą to być tysiące, a nawet miliony próbek bez przypisanych etykiet. Model wykorzystuje te dane do nauki ukrytych wzorców i relacji między punktami danych.

Przykłady oznaczone kierują następnie tą strukturą w stronę właściwych odpowiedzi. Model już wie, jak dane są zorganizowane na podstawie próbek nieoznaczonych. Etykiety mówią mu, które obszary tej struktury odpowiadają którym wyjściom.

Oto krótki przykład.

Załóżmy, że klasyfikują Państwo e‑maile jako spam lub niespam. Mają Państwo 100 oznaczonych e‑maili i 10 000 nieoznaczonych. Model najpierw uczy się, jak e‑maile grupują się na podstawie wzorców słów i struktury. Następnie wykorzystuje 100 oznaczonych przykładów, by ustalić, które grupy to spam, a które nie. Efektem jest model, który działa lepiej, niż gdyby był trenowany wyłącznie na tych 100 oznaczonych e‑mailach.

Uczenie półnadzorowane vs nadzorowane vs nienadzorowane

Przejdźmy przez każde podejście, aby zobaczyć, gdzie uczenie półnadzorowane plasuje się względem pozostałych dwóch.

Uczenie nadzorowane

Uczenie nadzorowane trenuje na w pełni oznaczonych danych. Każda próbka w zbiorze ma wejście i znane wyjście. Model uczy się odwzorowania między nimi.

To działa dobrze, gdy mają Państwo wystarczająco dużo oznaczonych przykładów. Jednak „wystarczająco” może oznaczać tysiące, a nawet miliony próbek — w zależności od zadania. To kosztowne i czasem po prostu niemożliwe do uzyskania.

Uczenie nienadzorowane

Uczenie nienadzorowane nie używa żadnych etykiet. Model analizuje surowe dane i samodzielnie znajduje strukturę. Klasyczne przykłady to klasteryzacja i redukcja wymiarowości.

Zaletą jest brak potrzeby posiadania danych oznaczonych. Wadą — model nie wie, co jest dla Państwa faktycznie istotne. Znajduje wzorce, owszem, ale mogą one nie odpowiadać problemowi, który próbują Państwo rozwiązać.

Uczenie półnadzorowane

Uczenie półnadzorowane łączy zalety obu podejść. Dostarczają Państwo niewielki zbiór oznaczonych danych, by zdefiniować zadanie, oraz duży zbiór danych nieoznaczonych, by nauczyć się struktury danych.

Dane oznaczone wskazują modelowi właściwy kierunek. Dane nieoznaczone pokazują, jak poszczególne próbki mają się do siebie. Ta kombinacja często przewyższa uczenie nadzorowane na tym samym małym zbiorze oznaczonym, ponieważ model wykrywa wzorce, których nie zauważyłby bez danych nieoznaczonych.

Oto szybkie porównanie tych trzech podejść:

Tabela porównawcza podejść w uczeniu maszynowym

Tabela porównawcza podejść w uczeniu maszynowym

Podsumowując: jeśli oznaczanie zajmuje zbyt dużo czasu, a mają Państwo dużo danych nieoznaczonych, uczenie półnadzorowane może być warte rozważenia. Pokażę teraz kilka popularnych technik.

Popularne techniki uczenia półnadzorowanego

Istnieje kilka sposobów wdrożenia uczenia półnadzorowanego. Każda technika inaczej traktuje podział na dane oznaczone i nieoznaczone, więc omówmy te najczęstsze.

Samotrenowanie (self‑training)

To najprostsze podejście. Trenują Państwo model na danych oznaczonych, a następnie używają go do przewidywania etykiet dla próbek nieoznaczonych. Najpewniejsze predykcje dodaje się do zbioru oznaczonego jako pseudonaklejki (pseudo‑labels), po czym model trenuje się ponownie na rozszerzonym zbiorze.

Proces powtarza się, aż model przestanie się poprawiać lub aż skończą się dane nieoznaczone. To proste w implementacji, ale jeśli model na początku pomyli się, ten błąd staje się częścią zbioru danych.

Współtrenowanie (co‑training)

Współtrenowanie używa dwóch modeli zamiast jednego. Każdy model trenuje się na innym „widoku” danych. Proszę myśleć o tym jak o innym podzbiorze cech.

Na przykład przy klasyfikacji stron internetowych jeden model może analizować tekst na stronie, a drugi — tekst kotwic linków prowadzących do niej. Każdy model etykietuje próbki nieoznaczone dla drugiego i uczą się wzajemnie przez wiele rund.

Założenie jest takie, że mocne strony jednego modelu kompensują słabości drugiego. Jeśli oba widoki zawierają wystarczająco informacji, współtrenowanie może przewyższyć samotrenowanie, ponieważ błędy jednego modelu są korygowane przez drugi.

Propagacja etykiet

To podejście buduje graf, w którym każdy punkt danych jest węzłem, a krawędzie łączą podobne punkty. Etykiety następnie „rozprzestrzeniają się” z węzłów oznaczonych na ich sąsiadów.

Założenie brzmi: podobne punkty danych powinny mieć tę samą etykietę. Jeśli oznaczona próbka leży blisko klastra próbek nieoznaczonych, te nieoznaczone najpewniej należą do tej samej klasy. Etykiety propagują się po grafie, aż każdy węzeł ją otrzyma.

Dobrze działa, gdy dane mają wyraźną strukturę klastrów, ale zawodzi, gdy granice między klasami są rozmyte.

Półnadzorowane sieci neuronowe

Uczenie głębokie ma własny zestaw technik półnadzorowanych. Oto kilka najpopularniejszych:

  • Regularyzacja spójności (consistency regularization): Wymusza na modelu identyczny wynik dla danego wejścia nawet po drobnych perturbacjach, takich jak szum czy augmentacja. Idea jest taka, że dobry model nie powinien zmieniać predykcji tylko dlatego, że wejście nieznacznie zmodyfikowano
  • Pseudonaklejki w sieciach neuronowych: Działa jak samotrenowanie, ale na poziomie batchy. Model podczas treningu generuje etykiety dla próbek nieoznaczonych i wykorzystuje je razem z prawdziwymi etykietami w funkcji straty.

Metody takie jak FixMatch i MixMatch łączą te koncepcje i wykazują dobre wyniki na benchmarkach z bardzo niewielką liczbą przykładów oznaczonych.

Dlaczego uczenie półnadzorowane ma znaczenie

Warto się nim zainteresować z jednego powodu: kosztów.

Oznaczanie danych wymaga danych, ekspertów domenowych, czasu i pieniędzy. Uczenie półnadzorowane obniża koszty, wyciskając więcej z mniejszej liczby etykiet.

Dochodzi też kwestia wydajności. Model wytrenowany na 500 oznaczonych próbkach i 50 000 nieoznaczonych często pokona ten sam model trenowany wyłącznie na tych 500 oznaczonych. Dane nieoznaczone dają modelowi pełniejszy obraz rozkładu danych, co przekłada się na lepsze przewidywania.

I wreszcie realia większości zbiorów danych. Dane nieoznaczone są wszędzie. Każda firma ma logi, obrazy, dokumenty i nagrania, których nikt nie ma czasu oznaczać. Uczenie półnadzorowane pozwala wydobyć z tych danych coś użytecznego.

Zastosowania uczenia półnadzorowanego

Uczenie półnadzorowane pojawia się w domenach, w których trudno pozyskać etykiety.

Klasyfikacja obrazów to jedno z najczęstszych zastosowań. Oznaczanie tysięcy obrazów jest żmudne, ale zbieranie nieoznaczonych — łatwe. Metody półnadzorowane pozwalają trenować dokładne klasyfikatory, mając jedynie kilkaset obrazów oznaczonych.

Klasyfikacja tekstu wygląda podobnie. Mogą Państwo mieć miliony recenzji klientów czy zgłoszeń do wsparcia, ale tylko niewielką partię z ręcznymi etykietami. Uczenie półnadzorowane pomoże zbudować klasyfikatory uogólniające na cały zbiór.

Rozpoznawanie mowy to kolejny ciekawy obszar. Ręczna transkrypcja audio jest czasochłonna, ale surowych nagrań jest pod dostatkiem. Nagrania nieoznaczone pomagają modelowi uczyć się wzorców akustycznych, a próbki transkrybowane — właściwych odwzorowań.

Analiza danych medycznych to doskonałe zadanie domenowe. Zaangażowanie lekarza do oznaczania skanów czy kart pacjentów jest kosztowne i powolne, bo mają ważniejsze obowiązki. Szpitale dysponują jednak ogromnymi ilościami nieoznaczonych danych klinicznych. Metody półnadzorowane pomagają budować modele diagnostyczne bez w pełni oznaczonego zbioru.

Zalety uczenia półnadzorowanego

Oto, co sprawia, że uczenie półnadzorowane dobrze pasuje do wielu projektów:

  • Wymaga mniej danych oznaczonych: Dobre wyniki można osiągnąć przy ułamku etykiet potrzebnych w podejściu w pełni nadzorowanym
  • Poprawia uogólnianie: Dane nieoznaczone wystawiają model na szersze spektrum przykładów, co pomaga mu lepiej działać na danych niewidzianych
  • Jest opłacalne: Gdy oznaczanie jest drogie lub czasochłonne — a zwykle tak jest — uczenie półnadzorowane oszczędza czas i budżet, maksymalnie wykorzystując to, co już Państwo mają

Jeśli więc mają Państwo więcej danych niż etykiet, czas rozważyć uczenie półnadzorowane.

Ograniczenia uczenia półnadzorowanego

Uczenie półnadzorowane wiąże się z kilkoma kompromisami, o których warto wiedzieć.

  • Jakość danych nieoznaczonych ma znaczenie: Jeśli Państwa dane nieoznaczone nie pochodzą z tego samego rozkładu co dane oznaczone, model uczy się niewłaściwych wzorców
  • Błędne pseudonaklejki: W metodach takich jak samotrenowanie pewna siebie, ale błędna predykcja jest traktowana jak prawda. Model trenuje na złej etykiecie, co utrwala błąd i pogarsza przyszłe przewidywania
  • Większa złożoność niż w uczeniu nadzorowanym: Jest więcej hiperparametrów do strojenia, więcej decyzji projektowych i więcej potencjalnych punktów awarii. Model nadzorowany jest prostszy do zbudowania i wyjaśnienia. Metody półnadzorowane dodają złożoność, która nie zawsze się opłaca — zwłaszcza jeśli zbiór oznaczony jest już wystarczająco duży

Żadne z powyższych nie jest dyskwalifikujące — to po prostu rzeczy, o których warto wiedzieć przed startem.

Uczenie półnadzorowane w praktyce (przykład w Pythonie)

Zobaczmy uczenie półnadzorowane w akcji na prostym przykładzie w Pythonie z użyciem algorytmu LabelSpreading ze scikit‑learn.

Utworzę zbiór danych, oznaczę tylko jego niewielką część i pozwolę modelowi ustalić resztę.

Przygotowanie danych

Najpierw wygeneruję zbiór danych i zamaskuję większość etykiet, aby zasymulować scenariusz półnadzorowany:

import numpy as np
from sklearn.datasets import make_moons
from sklearn.semi_supervised import LabelSpreading
from sklearn.metrics import accuracy_score

# Generate a dataset with 500 samples
X, y_true = make_moons(n_samples=500, noise=0.2, random_state=42)

# Keep only 10%, mask the rest as -1
rng = np.random.RandomState(42)
labeled_idx = rng.choice(500, size=50, replace=False)
y_train = np.full(500, -1)  # -1 means unlabeled in scikit-learn
y_train[labeled_idx] = y_true[labeled_idx]

print(f"Labeled samples: {np.sum(y_train != -1)}")
print(f"Unlabeled samples: {np.sum(y_train == -1)}")

Liczba próbek danych oznaczonych i nieoznaczonych

Liczba próbek danych oznaczonych i nieoznaczonych

W scikit‑learn wartość -1 oznacza próbkę jako nieoznaczoną. Z 500 próbek tylko 50 ma etykiety. Model musi ustalić pozostałe 450.

Trenowanie i predykcja

Teraz wytrenuję model LabelSpreading i sprawdzę, jak dobrze etykietuje dane nieoznaczone:

model = LabelSpreading(kernel="knn", n_neighbors=7)
model.fit(X, y_train)

y_pred = model.transduction_

# Check accuracy on the originally unlabeled samples
unlabeled_mask = y_train == -1
accuracy = accuracy_score(y_true[unlabeled_mask], y_pred[unlabeled_mask])
print(f"Accuracy on unlabeled samples: {accuracy:.2%}")

Dokładność na próbkach nieoznaczonych

Dokładność na próbkach nieoznaczonych

Model poprawnie oznaczył większość próbek nieoznaczonych, mając tylko 10% danych jako przykłady oznaczone. Na tym polega sedno.

Wizualizacja wyników

Dokładność jest wysoka — niemal 96% — ale przyjrzyjmy się wizualnie, które próbki zostały błędnie sklasyfikowane:

Etykiety rzeczywiste i przewidziane

Etykiety rzeczywiste i przewidziane

Przewidziane etykiety niemal idealnie pokrywają się z etykietami rzeczywistymi, mimo że model zobaczył tylko 50 oznaczonych przykładów na 500. Błędnie sklasyfikowane widać na czerwono na prawym wykresie.

Częste błędy w uczeniu półnadzorowanym

Widzieli Państwo, jak potężne może być uczenie półnadzorowane, ale nie sprawdzi się w każdym scenariuszu. Oto najczęstsze błędy i sposoby, jak ich unikać.

  • Założenie, że dane nieoznaczone zawsze pomagają: Nie zawsze. Jeśli dane nieoznaczone pochodzą z innego rozkładu niż dane oznaczone, model uczy się wzorców, które nie mają zastosowania do rzeczywistego zadania. Zawsze proszę sprawdzić, czy zbiory oznaczony i nieoznaczony pochodzą z tego samego źródła i reprezentują ten sam problem
  • Słaba inicjalizacja modelu: Metody półnadzorowane bazują na początkowym modelu nadzorowanym. Jeśli ten pierwszy model jest słaby — wytrenowany na zbyt małej liczbie próbek lub ze złymi hiperparametrami — każdy kolejny krok dziedziczy te problemy. Proszę zacząć od możliwie najlepszego baseline’u nadzorowanego, zanim dodadzą Państwo dane nieoznaczone
  • Nadmierne poleganie na pseudonaklejkach: Pseudonaklejki są tak dobre, jak model, który je wygenerował. Jeśli zaufać każdej pseudonaklejce, błędy mogą się kumulować w kolejnych rundach treningu. Proszę ustawić wysoki próg pewności i wykorzystywać tylko te pseudonaklejki, co do których model ma dużą pewność. Resztę odrzucać
  • Ignorowanie rozkładu danych: Metody półnadzorowane zakładają, że struktura danych nieoznaczonych niesie użyteczną informację o etykietach. Jeśli Państwa dane nie mają wyraźnych klastrów lub gładkich granic decyzyjnych, to założenie nie będzie spełnione

Aby uniknąć tych czterech błędów, proszę zacząć od mocnego baseline’u nadzorowanego, dodawać dane nieoznaczone stopniowo i sprawdzać, czy wydajność faktycznie poprawia się na każdym etapie.

Kiedy używać uczenia półnadzorowanego

Uczenie półnadzorowane ma sens w trzech sytuacjach:

  • Gdy danych oznaczonych jest mało: Jeśli mają Państwo tylko niewielki zbiór oznaczony, a zdobycie kolejnych etykiet jest kosztowne lub powolne, uczenie półnadzorowane pomoże „wycisnąć” dodatkową dokładność
  • Gdy danych nieoznaczonych jest dużo: Potrzebna jest duża ilość danych nieoznaczonych, aby to zadziałało. Jeśli mają Państwo tylko mały zbiór nieoznaczony, model nie nauczy się dość struktury, by to zrobiło różnicę. Im większa przepaść między rozmiarem zbiorów oznaczonego i nieoznaczonego, tym bardziej metody półnadzorowane mogą pomóc
  • Gdy dane mają wyraźną strukturę: Uczenie półnadzorowane najlepiej działa, gdy podobne punkty danych mają tę samą etykietę. Jeśli dane tworzą klastry lub mają gładkie granice między klasami, dane nieoznaczone uwidocznią te wzorce jeszcze bardziej. Jeśli klasy są wymieszane bez wyraźnych separacji, dane nieoznaczone niewiele wniosą.

Jeśli spełnione są wszystkie trzy warunki, uczenie półnadzorowane warto wypróbować.

Wnioski

Mówiąc prosto: uczenie półnadzorowane pozwala trenować lepsze modele bez oznaczania wszystkiego. Bierze się mały zbiór oznaczony, łączy z dużym nieoznaczonym i pozwala modelowi uczyć się z obu.

Korzyści są jasne: mniej czasu na oznaczanie, szybsze wejście na rynek, niższe koszty i lepsza wydajność niż w trenowaniu wyłącznie na ograniczonych etykietach. W dziedzinach takich jak medycyna, prawo czy NLP — gdzie oznaczanie wymaga ekspertów domenowych — to duża sprawa.

Jeśli mają Państwo ogromną ilość danych nieoznaczonych, proszę spróbować uczenia półnadzorowanego. Proszę zacząć od dobrego baseline’u nadzorowanego, dobrać technikę pasującą do struktury danych i zmierzyć, czy dane nieoznaczone faktycznie pomagają. LabelSpreading ze scikit‑learn to dobre pierwsze podejście, ale warto też eksperymentować z metodami FixMatch i MixMatch.

Jeśli chcą Państwo być gotowi do pracy w 2026 roku, proszę wybrać naszą ścieżkę Machine Learning Engineer. Obejmuje wszystko — od podstaw po MLOps.

FAQ

Czym jest uczenie półnadzorowane?

Uczenie półnadzorowane to podejście w uczeniu maszynowym, w którym modele trenuje się na niewielkim zbiorze danych oznaczonych i dużym zbiorze danych nieoznaczonych. Dane oznaczone mówią modelowi, czego ma szukać, a dane nieoznaczone pomagają mu zrozumieć ogólną strukturę danych. Dzięki temu uzyskuje się lepsze wyniki niż przy trenowaniu wyłącznie na danych oznaczonych.

Czym uczenie półnadzorowane różni się od nadzorowanego i nienadzorowanego?

Uczenie nadzorowane wykorzystuje wyłącznie dane oznaczone, gdzie każda próbka ma znane wyjście. Uczenie nienadzorowane używa tylko danych nieoznaczonych i samodzielnie znajduje wzorce. Uczenie półnadzorowane używa niewielkiego zbioru danych oznaczonych do zdefiniowania zadania oraz dużego zbioru danych nieoznaczonych do nauki struktury danych.

Kiedy powinienem/powinnam używać uczenia półnadzorowanego?

Proszę go używać, gdy mają Państwo niewielką ilość danych oznaczonych, dużą ilość danych nieoznaczonych oraz gdy dane mają wyraźną strukturę, np. naturalne klastry lub gładkie granice między klasami. Jeśli oznaczanie jest kosztowne lub wymaga ekspertów domenowych — jak w obrazowaniu medycznym czy analizie tekstów prawnych — uczenie półnadzorowane pomaga budować dokładne modele bez konieczności oznaczania wszystkiego.

Czym jest samotrenowanie (self‑training) w uczeniu półnadzorowanym?

Samotrenowanie to technika, w której model najpierw trenuje na danych oznaczonych, a następnie przewiduje etykiety dla próbek nieoznaczonych. Najpewniejsze predykcje trafiają do zbioru oznaczonego jako pseudonaklejki, a model trenuje się ponownie na rozszerzonym zbiorze. Ryzyko polega na tym, że wczesne błędne predykcje mogą się utrwalać w kolejnych rundach, dlatego warto ustawić wysoki próg pewności.

Tematy

Ucz się z DataCamp

course

Unsupervised Learning in Python

4 godz.
176.9K
Learn how to cluster, transform, visualize, and extract insights from unlabeled datasets using scikit-learn and scipy.
Zobacz szczegółyRight Arrow
Rozpocznij kurs
Zobacz więcejRight Arrow