Uczenie maszynowe: program uczony przykładami, a nie regułami

👁 147 przeczytań
- Uczenie maszynowe to budowanie programów przez pokazywanie przykładów, nie zapisywanie reguł - np. 10 000 zdjęć kotów zamiast opisu cech kota.
- Uczenie maszynowe dzieli się na trzy rodzaje: nadzorowane (z odpowiedziami), nienadzorowane (szukanie struktury) i ze wzmocnieniem (nagroda i kara).
- Model z 99,9% skutecznością może być całkowicie bezużyteczny - np. przy zdarzeniu raz na 1000 przypadków wystarczy zawsze odpowiadać 'nie ma'.
Uczenie maszynowe (ang. machine learning, ML) to sposób budowania programów, w którym nie zapisujesz reguł, tylko pokazujesz przykłady, a komputer sam wyprowadza z nich regułę. Na tym działają filtry spamu, rekomendacje w sklepach, wykrywanie oszustw kartowych i modele językowe, takie jak ChatGPT. Niżej: definicja bez wzorów, trzy rodzaje uczenia, różnica między AI, ML i deep learningiem, przykłady z Polski, od czego zacząć naukę i krótki kod w Pythonie, który sam uruchomiłem, z prawdziwym wynikiem.
Stan na 4 października 2026
- Definicja w jednym zdaniu: program uczy się zależności z danych zamiast wykonywać reguły zapisane przez człowieka.
- Trzy rodzaje: nadzorowane (dane z odpowiedziami), nienadzorowane (dane bez odpowiedzi), ze wzmocnieniem (nagroda za działanie).
- Mój przykład: 25 linijek w Pythonie i scikit-learn 1.9 rozpoznaje odręcznie pisane cyfry z trafnością 96,7 procent (15 pomyłek na 450 obrazkach).
- Na start za darmo: kurs Elements of AI po polsku, Kaggle Learn, dokumentacja scikit-learn.
Co to jest uczenie maszynowe
W klasycznym programowaniu człowiek pisze reguły: „jeśli w temacie maila jest słowo »wygrana« i nadawca jest nieznany, przenieś do spamu”. W uczeniu maszynowym dajesz programowi dziesięć tysięcy maili oznaczonych jako spam i dziesięć tysięcy oznaczonych jako zwykłe, a on sam znajduje cechy, które je odróżniają. Wynikiem jest model: funkcja, która dla nowego maila zwraca odpowiedź „spam” albo „nie spam” wraz z pewnością.
Tej reguły nie da się potem przeczytać jak kodu. To jednocześnie źródło całej mocy tego podejścia (model wyłapuje zależności, których człowiek by nie zapisał) i wszystkich jego kłopotów (nie zawsze wiadomo, dlaczego model zdecydował tak, a nie inaczej).
Każdy projekt ML składa się z tych samych kroków:
- Dane - zebranie przykładów i ich uporządkowanie. To zwykle większość pracy.
- Cechy - wybór tego, co model ma brać pod uwagę (np. piksele obrazka, kwota i godzina transakcji).
- Trening - dopasowanie modelu do części danych.
- Test - sprawdzenie na danych, których model nie widział. Bez tego kroku wynik jest bezwartościowy.
- Wdrożenie i pilnowanie - model działa na nowych danych, a ktoś mierzy, czy nie traci skuteczności.
Trzy rodzaje uczenia maszynowego
Uczenie nadzorowane
Dane mają odpowiedzi: zdjęcia z podpisami, maile oznaczone jako spam, mieszkania z cenami. Model uczy się przewidywać odpowiedź dla nowych przypadków. Gdy odpowiedź to kategoria (spam/nie spam), mówimy o klasyfikacji, gdy liczba (cena mieszkania) - o regresji. To zdecydowana większość zastosowań w firmach i to właśnie robi mój przykład w Pythonie niżej.
Uczenie nienadzorowane
Odpowiedzi nie ma, jest tylko zbiór. Model szuka w nim struktury: grupuje podobnych klientów (klasteryzacja), wykrywa nietypowe transakcje (wykrywanie anomalii), upraszcza dane o setkach kolumn do kilku najważniejszych wymiarów. Używa się go, gdy nie wiadomo z góry, czego się szuka.
Uczenie ze wzmocnieniem
Model (tu nazywany agentem) działa w jakimś środowisku, dostaje nagrodę albo karę i szuka sposobu na maksymalizację nagrody. Tak uczą się programy grające w szachy i go, roboty i systemy sterowania. W uproszczeniu tak dostraja się też zachowanie dzisiejszych modeli językowych, żeby odpowiadały pomocnie, a nie tylko poprawnie gramatycznie.
Między nadzorowanym a nienadzorowanym jest jeszcze uczenie samonadzorowane: odpowiedzi tworzy się z samych danych. Model językowy dostaje zdanie z zakrytym ostatnim słowem i zgaduje je - etykieta „za darmo” jest w tekście. Na tym zbudowano wszystkie duże modele językowe.
AI, uczenie maszynowe, deep learning: czym się różnią
Te pojęcia są zagnieżdżone jak matrioszki: sztuczna inteligencja zawiera uczenie maszynowe, uczenie maszynowe zawiera uczenie głębokie, a modele językowe są zastosowaniem uczenia głębokiego.
| Pojęcie | Co obejmuje | Przykład | Ile danych potrzebuje |
|---|---|---|---|
| Sztuczna inteligencja (AI) | cała dziedzina: każdy program wykonujący zadania kojarzone z inteligencją, także oparty na ręcznie pisanych regułach | system ekspercki do diagnozy usterek, program do szachów z lat 90. | od zera (reguły) do dowolnie wielu |
| Uczenie maszynowe (ML) | metody, w których program uczy się z danych | scoring kredytowy, filtr spamu, prognoza popytu | od setek do milionów przykładów |
| Uczenie głębokie (deep learning) | ML oparte na sieciach neuronowych z wieloma warstwami | rozpoznawanie mowy, tłumaczenie, rozpoznawanie obrazów | zwykle miliony przykładów i karty graficzne |
| Duże modele językowe (LLM) | sieci głębokie trenowane na bilionach tokenów tekstu | ChatGPT, Claude, Gemini, Bielik | biliony tokenów, tysiące kart graficznych |
Kiedy ktoś mówi „to AI”, zwykle ma na myśli uczenie maszynowe, a najczęściej jego głęboką odmianę. Szersze wprowadzenie do całej dziedziny napisałem w tekście o sztucznej inteligencji, a sylwetki ludzi, którzy zbudowali uczenie głębokie, w tekstach o Geoffreyu Hintonie, Yannie LeCunie i Yoshui Bengio.
Ważna praktyczna uwaga: przy danych w tabelach (Excel, baza klientów, transakcje) klasyczne metody ML, takie jak lasy losowe i boosting gradientowy, wciąż często wygrywają z sieciami neuronowymi, a są szybsze i tańsze. Sieci głębokie dominują przy obrazie, dźwięku i tekście.
Uczenie maszynowe na co dzień w Polsce
- Poczta. Filtry spamu w Gmailu, Outlooku i polskich skrzynkach to klasyczne uczenie nadzorowane na milionach oznaczonych maili.
- Bank. Gdy bank blokuje płatność kartą w nietypowym miejscu i pyta SMS-em, czy to Ty, za decyzją zwykle stoi model wykrywania anomalii. Ten sam typ modeli pomaga ocenić ryzyko przy wniosku kredytowym.
- Zakupy i rozrywka. Polecane produkty w sklepach internetowych, kolejne odcinki w serwisach wideo i utwory w aplikacjach muzycznych dobierają systemy rekomendacyjne.
- Telefon. Odblokowanie twarzą, rozpoznawanie mowy w dyktowaniu, grupowanie zdjęć według osób, tłumaczenie tekstu z aparatu.
- Urzędy. Asystent w aplikacji mObywatel od końca 2025 roku odpowiada na pytania, korzystając z polskiego modelu PLLuM.
- Medycyna. Modele wspierające opis zdjęć RTG i tomografii, które podpowiadają radiologowi podejrzane miejsca. Decyzję podejmuje lekarz.
Mój przykład w Pythonie: rozpoznawanie cyfr w 25 linijkach
Żeby pokazać, jak to wygląda w praktyce, napisałem najprostszy możliwy przykład uczenia nadzorowanego. Biblioteka scikit-learn ma wbudowany zbiór 1797 obrazków odręcznie pisanych cyfr o rozdzielczości 8 na 8 pikseli, każdy z poprawną odpowiedzią. Model uczy się na 75 procentach obrazków, a sprawdzam go na pozostałych 25 procentach, których wcześniej nie widział. Dla porównania dodałem „model”, który zawsze odpowiada najczęstszą cyfrą.
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.dummy import DummyClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
X, y = load_digits(return_X_y=True) # 1797 obrazków 8x8 + poprawne odpowiedzi
print("Przykładów:", len(X), "| cech na obrazek:", X.shape[1])
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.25, random_state=42, stratify=y)
zgadywacz = DummyClassifier(strategy="most_frequent").fit(X_train, y_train)
print("Trafność 'zawsze ta sama cyfra':",
round(accuracy_score(y_test, zgadywacz.predict(X_test)), 3))
model = RandomForestClassifier(n_estimators=200, random_state=42).fit(X_train, y_train)
pred = model.predict(X_test)
print("Trafność lasu losowego:", round(accuracy_score(y_test, pred), 3))
print("Pomyłek na", len(y_test), "obrazkach testowych:", int((pred != y_test).sum()))
cm = confusion_matrix(y_test, pred)
pary = [(cm[i, j], i, j) for i in range(10) for j in range(10) if i != j and cm[i, j] > 0]
for n, i, j in sorted(pary, reverse=True)[:3]:
print(f"Najczęstsza pomyłka: {i} wzięte za {j} - {n} raz(y)")Uruchomiłem to 4 października 2026 na Windows 11, Python 3.13 i scikit-learn 1.9.0 (instalacja: pip install scikit-learn). Wynik, skopiowany z konsoli:
Przykładów: 1797 | cech na obrazek: 64
Trafność 'zawsze ta sama cyfra': 0.102
Trafność lasu losowego: 0.967
Pomyłek na 450 obrazkach testowych: 15
Najczęstsza pomyłka: 8 wzięte za 1 - 3 raz(y)
Najczęstsza pomyłka: 5 wzięte za 9 - 2 raz(y)
Najczęstsza pomyłka: 0 wzięte za 4 - 2 raz(y)Co z tego wynika:
- Las losowy trafił w 96,7 procent przypadków, czyli pomylił się 15 razy na 450 obrazków. Cały skrypt, razem z wczytaniem bibliotek, wykonał się w 2,5 sekundy na procesorze, bez udziału karty graficznej.
- Zgadywacz miał 10,2 procent, czyli tyle, ile daje losowanie jednej z dziesięciu cyfr. To jest punkt odniesienia: wynik modelu ma sens tylko w porównaniu z najgłupszym możliwym rozwiązaniem.
- Pomyłki są „ludzkie”: ósemka wzięta za jedynkę, piątka za dziewiątkę. Przy 64 pikselach część cyfr jest naprawdę niejednoznaczna.
- Parametr
random_state=42ustala losowość podziału i lasu. Z inną wartością wynik będzie minimalnie inny, ale w tym samym rejonie.
Ten sam schemat (dane, podział na trening i test, model, ocena) zostaje w każdym projekcie. Zmieniają się dane i rodzaj modelu.
Gdzie uczenie maszynowe zawodzi
Nie przepłacaj za te subskrypcje
Prowadzę sklep z rocznymi dostępami do narzędzi AI - te same konta, o których piszę wyżej, tylko taniej niż w cenniku producenta.
- Model dziedziczy uprzedzenia danych. Jeśli w historycznych decyzjach kredytowych była nierówność, model nauczy się jej i będzie ją powtarzał, tyle że szybciej i pod pozorem obiektywności liczby.
- Wysoka trafność bywa złudzeniem. Przy zjawisku występującym raz na tysiąc przypadków model, który zawsze odpowiada „nie ma”, osiąga 99,9 procent trafności i jest całkowicie bezużyteczny. Dlatego przy rzadkich zdarzeniach patrzy się na precyzję i czułość, a nie samą trafność. Mój zgadywacz z przykładu to ta sama pułapka w łagodnej wersji.
- Świat się zmienia, model nie. Model wytrenowany na danych sprzed dwóch lat po cichu traci skuteczność, gdy zmieniają się zachowania klientów albo rynek. Nic tego nie sygnalizuje samo z siebie, trzeba to mierzyć.
- Nie wiadomo, dlaczego. Przy decyzjach dotyczących ludzi, jak kredyt czy rekrutacja, przepisy (w tym unijny AI Act) coraz częściej wymagają wyjaśnienia wyniku. To bywa trudniejsze niż zbudowanie samego modelu.
- Przeuczenie. Model, który „wkuł” dane treningowe na pamięć, świetnie wypada na nich i słabo na nowych. Dlatego test zawsze robi się na danych odłożonych na bok.
Jak zacząć uczyć się uczenia maszynowego
Nie od matematyki, tylko od danych i jednego działającego przykładu, takiego jak ten wyżej. Jakość danych decyduje o wyniku bardziej niż wybór metody, a większość pracy to porządkowanie, nie modelowanie. Kolejność, którą polecam:
- Pojęcia bez kodu: darmowy kurs Elements of AI Uniwersytetu Helsińskiego, dostępny po polsku od 2020 roku. Pierwsza część nie wymaga programowania. Do pojęć przyda się też mój słownik AI.
- Podstawy Pythona: zmienne, listy, pętle, funkcje. Wystarczy kilka tygodni.
- Pierwszy model: darmowy kurs Intro to Machine Learning na Kaggle (około 3 godzin, po angielsku) uczy scikit-learn i pandas w notatnikach w przeglądarce, bez instalowania czegokolwiek.
- Teoria: Machine Learning Specialization Andrew Ng (DeepLearning.AI, po angielsku). Na Coursera od 2025 roku za darmo można obejrzeć tylko pierwszy moduł kursu, pełny dostęp jest płatny.
- Własny projekt: weź arkusz z czymś, co znasz (wydatki, wyniki sportowe, ceny mieszkań z ogłoszeń) i spróbuj przewidzieć jedną kolumnę na podstawie pozostałych.
Biblioteki, które warto znać:
| Biblioteka | Do czego | Dla kogo |
|---|---|---|
| scikit-learn | klasyczne ML: klasyfikacja, regresja, klasteryzacja, ocena modeli | start, dane w tabelach |
| pandas | wczytywanie i porządkowanie danych w tabelach | każdy |
| XGBoost, LightGBM | boosting gradientowy, najlepsze wyniki na danych tabelarycznych | średniozaawansowani |
| PyTorch | sieci neuronowe i uczenie głębokie | obraz, dźwięk, tekst |
| Hugging Face Transformers | gotowe modele językowe i wizyjne do pobrania i dostrojenia | praca z modelami językowymi |
Do eksperymentów bez instalacji przydadzą się notatniki Google Colab i Kaggle, a do pisania kodu z pomocą AI - Google AI Studio albo Replit. Jeśli myślisz o studiach, porównałem kierunki w tekście studia AI w Polsce.
Najczęstsze pytania
Co to jest uczenie maszynowe w prostych słowach?
To metoda, w której komputer uczy się z przykładów zamiast wykonywać reguły napisane przez programistę. Pokazujesz mu dane z odpowiedziami, a on buduje model, który odpowiada na nowe, podobne pytania.
Czym różni się uczenie maszynowe od sztucznej inteligencji?
Sztuczna inteligencja to cała dziedzina, a uczenie maszynowe to jej najważniejsza dziś część. Każde ML jest AI, ale nie każde AI jest ML: program grający w szachy według ręcznie zapisanych reguł to AI bez uczenia maszynowego.
Czym jest uczenie głębokie (deep learning)?
To odmiana uczenia maszynowego oparta na sieciach neuronowych z wieloma warstwami. Sprawdza się przy obrazach, dźwięku i tekście, ale potrzebuje dużo danych i mocy obliczeniowej. Na nim zbudowane są modele językowe i generatory obrazów.
Czy do uczenia maszynowego trzeba znać matematykę?
Do używania gotowych bibliotek wystarczy matematyka z liceum: średnia, procent, wykres funkcji. Do rozumienia, dlaczego modele działają, i do pracy badawczej potrzebna jest algebra liniowa, rachunek prawdopodobieństwa i podstawy analizy.
Jaki język programowania wybrać do uczenia maszynowego?
Python. Ma najwięcej bibliotek (scikit-learn, PyTorch, pandas), kursów i przykładów. R jest popularny w statystyce, a Julia w obliczeniach naukowych, ale na start nie ma powodu wybierać inaczej.
Czy ChatGPT to uczenie maszynowe?
Tak. ChatGPT działa na dużym modelu językowym, a ten powstał w trzech etapach uczenia maszynowego: samonadzorowanym pretreningu na tekstach, nadzorowanym dostrajaniu na przykładach rozmów i uczeniu ze wzmocnieniem na ocenach odpowiedzi. Szczegóły w tekście LLM: co to jest.
Ile czasu zajmuje nauka uczenia maszynowego?
Pierwszy działający model zbudujesz w jedno popołudnie, korzystając z przykładu wyżej albo kursu Kaggle. Poziom pozwalający samodzielnie prowadzić prosty projekt na własnych danych to zwykle kilka miesięcy regularnej nauki, przy założeniu podstaw Pythona.
Google · Twoje źródłaPromptowy wyżej w Twoim Google - jednym kliknięciemDodaj do preferowanych źródeł →Źródła i data sprawdzenia
Sprawdzone 4 października 2026. Kod uruchomiłem lokalnie (Python 3.13, scikit-learn 1.9.0).
- scikit-learn: zbiór load_digits i dokumentacja lasów losowych
- Elements of AI po polsku
- Kaggle Learn: Intro to Machine Learning
- DeepLearning.AI: Machine Learning Specialization
- Coursera: zmiana trybu audytu na podgląd pierwszego modułu
Cały tydzień w AI, w jednym mailu
Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.
Zapisz się za darmo →


