03 · Nadzorowane · 4 min czytania · aktualizacja
Czym jest uczenie maszynowe i czym różni się od zwykłego programowania?
W skrócie
Uczenie maszynowe to budowanie programów, które regułę wyprowadzają z przykładów, zamiast dostać ją od programisty. Liczy się trafność na nowych danych.
Co to jest
Uczenie maszynowe (ang. machine learning, ML) to dziedzina informatyki i statystyki, w której program nie dostaje gotowej reguły działania, tylko wyprowadza ją z przykładów. Algorytm wybiera z pewnej rodziny funkcji tę, która najlepiej odwzorowuje dane wejściowe na pożądane wyjście, a o sukcesie decyduje trafność na danych, których wcześniej nie widział.
Klasyczna definicja Toma Mitchella (1997) mówi: program uczy się z doświadczenia E w zadaniu T, mierzonym miarą P, jeśli jego wynik w T, mierzony P, poprawia się wraz z E. Zadaniem może być rozpoznawanie spamu, doświadczeniem — tysiące oznaczonych maili, miarą — odsetek poprawnie rozpoznanych wiadomości.
Różnicę widać najlepiej na tym przykładzie. W tradycyjnym programowaniu ktoś pisze reguły: „jeśli temat zawiera »darmowe« i trzy wykrzykniki, to spam”. W uczeniu maszynowym daje się algorytmowi przykłady z etykietami, a on sam ustala, które słowa i w jakim stopniu świadczą o spamie. Reguła powstaje z danych, a nie z głowy programisty — i dlatego można ją zbudować także tam, gdzie nikt nie umie jej spisać, na przykład przy rozpoznawaniu twarzy.
Mechanizm — dlaczego tak działa
Prawie każdy algorytm uczenia składa się z trzech elementów. Model to rodzina funkcji z regulowanymi parametrami: prosta, drzewo decyzyjne, sieć neuronowa. Funkcja straty mierzy, jak bardzo przewidywania mijają się z prawdą. Optymalizacja przesuwa parametry tak, żeby strata na zbiorze treningowym malała — na przykład metodą spadku gradientu albo zachłannym podziałem danych.
Haczyk polega na tym, że minimalizujemy stratę na danych treningowych, a zależy nam na danych przyszłych. To działa tylko przy założeniu, że przyszłe przypadki pochodzą z tego samego rozkładu co treningowe. Gdy szpital zmieni aparat diagnostyczny albo klienci zmienią zwyczaje, model wytrenowany na starych danych może po cichu tracić trafność.
Drugie źródło trudności: z samych przykładów nie da się jednoznacznie wywnioskować reguły. Przez dowolną skończoną liczbę punktów przechodzi nieskończenie wiele krzywych. Każdy algorytm musi więc coś zakładać o świecie — że zależność jest liniowa, że podobne przypadki mają podobne odpowiedzi, że reguła jest prosta. To tzw. obciążenie indukcyjne (inductive bias). Twierdzenie „no free lunch” mówi, że uśredniając po wszystkich możliwych problemach, żaden algorytm nie jest lepszy od innego; przewaga bierze się z dopasowania założeń do konkretnego problemu.
Z tego wynika podstawowy kompromis. Zbyt sztywna rodzina funkcji nie uchwyci prawdziwej zależności (niedouczenie). Zbyt elastyczna nauczy się na pamięć także szumu i przypadkowych zbiegów okoliczności (przeuczenie). Dlatego dane dzieli się na część treningową i testową, a jakość ocenia się wyłącznie na tej drugiej.
Ważne ograniczenie: model uczy się współwystępowań, nie przyczyn. Jeśli w danych treningowych chorzy częściej mieli zdjęcia z jednego aparatu, model może nauczyć się rozpoznawać aparat zamiast choroby.
Na przykładzie
Zbiór Breast Cancer Wisconsin zawiera 569 guzów piersi opisanych 30 cechami jąder komórkowych z biopsji (promień, tekstura, wklęsłość konturu itd.): 212 złośliwych i 357 łagodnych. Podzieliliśmy go losowo (train_test_split, 25% na test, warstwowo, random_state=0): 426 guzów do nauki, 143 do sprawdzenia. Model, który zawsze mówi „łagodny”, ma na teście 62,9% trafności — to punkt odniesienia, poniżej którego nie wolno zejść.
Jedna reguła progowa wybrana z danych („największy obwód jądra powyżej 106,1 → złośliwy”) daje już 88,8%. Regresja logistyczna, która waży wszystkie 30 cech naraz, osiąga 95,8%: myli się w 6 przypadkach na 143 (3 przeoczone guzy złośliwe, 3 fałszywe alarmy). Na danych treningowych ten sam model ma 99,1% — różnica między tymi liczbami to właśnie koszt uogólniania na nowe przypadki. I ostatnia lekcja: oba rodzaje błędów nie są równie groźne, więc „trafność” to dopiero początek oceny.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
- W scikit-learn każdy model ma ten sam interfejs:
model.fit(X_train, y_train), potemmodel.predict(X_test)lubmodel.predict_proba(X_test). - Zawsze zaczynaj od punktu odniesienia:
DummyClassifier(najczęstsza klasa) alboDummyRegressor(średnia). - Dane dziel przed jakąkolwiek obróbką:
train_test_split(..., stratify=y); skalowanie i imputację zamykaj wPipeline, żeby nie przeciekały informacje z testu. - Do wyboru modelu i hiperparametrów używaj walidacji krzyżowej (
cross_val_score), a zbiór testowy otwieraj raz, na końcu. - Typowy błąd: raportowanie wyniku na danych treningowych albo strojenie modelu tak długo, aż „wyjdzie” na teście.
Najczęstsze pytania
- Czym różni się uczenie maszynowe od sztucznej inteligencji?
- Sztuczna inteligencja to szeroki cel: systemy wykonujące zadania wymagające inteligencji. Uczenie maszynowe to dominująca dziś metoda osiągania tego celu — przez uczenie z danych zamiast ręcznego programowania reguł. Głębokie uczenie (sieci neuronowe o wielu warstwach) jest z kolei podzbiorem uczenia maszynowego.
- Czym uczenie maszynowe różni się od statystyki?
- Narzędzia są w dużej mierze wspólne (regresja, prawdopodobieństwo, estymacja). Statystyka częściej pyta o wnioskowanie — czy efekt istnieje i jak jest duży — a uczenie maszynowe o trafność przewidywań na nowych danych. Granica jest płynna i wiele metod narodziło się na styku obu dziedzin.
- Ile danych potrzeba, żeby model się nauczył?
- Nie ma jednej liczby. Zależy to od złożoności zależności, liczby cech i poziomu szumu: regresja liniowa z kilkoma cechami zadowoli się setkami przykładów, rozpoznawanie obrazów od zera wymaga setek tysięcy. Praktycznie: narysuj krzywą uczenia i sprawdź, czy wynik na walidacji wciąż rośnie z liczbą przykładów.
- Czy model uczenia maszynowego „rozumie” dane?
- Nie w ludzkim sensie. Model znajduje wzorce statystyczne, które pomagały na danych treningowych, i nie wie, które z nich są przyczynowe, a które przypadkowe. Dlatego warto sprawdzać, na czym model opiera decyzje.
Źródła
- Mitchell T. „Machine Learning”, McGraw-Hill, 1997, rozdz. 1.
- James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., 2021, rozdz. 2.
- Hastie T., Tibshirani R., Friedman J. „The Elements of Statistical Learning”, 2nd ed., 2009, rozdz. 2.
- Géron A. „Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow”, 3rd ed., 2022, rozdz. 1.
- Dokumentacja scikit-learn, „Getting Started”: https://scikit-learn.org/stable/getting_started.html