Czym jest uczenie maszynowe

🎯 Po co Ci to?

Zanim zagłębisz się w to, jak konkretnie sieć neuronowa się uczy (Działy 10 i 11), warto zapytać szerzej: czym w ogóle jest „uczenie maszynowe" i jakie są jego rodzaje? To pojęcie znacznie szersze niż sieci neuronowe — obejmuje całą rodzinę metod, z których sieci neuronowe są tylko jedną, dziś najsłynniejszą, gałęzią. Ten słownik przyda Ci się do końca tej książki.

✅ Czego się nauczysz

Po tej lekcji potrafisz:

  • zdefiniować uczenie maszynowe i wyjaśnić, czym różni się od klasycznego programowania;
  • rozróżnić uczenie nadzorowane, nienadzorowane i ze wzmocnieniem oraz podać przykład każdego;
  • wskazać, do jakiego typu uczenia należał Perceptron z Działu 8.

🔁 Przypomnij sobie

W Dziale 8 poznałeś Perceptron Rosenblatta — sieć, która uczyła się rozpoznawać litery na podstawie przykładów z poprawnymi etykietami („to jest litera A", „to jest litera B"). Zapamiętaj to słowo: etykieta. Będzie kluczowe za chwilę.

📘 Uczenie maszynowe — programowanie na przykładach, nie na regułach

W klasycznym programowaniu (Dział 4–6, „noga symboliczna") programista z góry zapisuje wszystkie reguły działania programu. Chcesz sprawdzić, czy liczba jest parzysta? Piszesz regułę: „jeśli reszta z dzielenia przez 2 wynosi 0, to parzysta". Ale co, jeśli zadanie jest tak skomplikowane, że nikt nie potrafi zapisać reguły wprost? Na przykład: jak rozpoznać kota na zdjęciu? Nikt nie potrafi wypisać skończonej listy reguł opisujących „koci kształt" — kotów jest zbyt wiele odmian, ras, póz i oświetleń.

Uczenie maszynowe (ang. machine learning, ML) odwraca ten schemat: zamiast wpisywać regułę wprost, dajemy systemowi dużo przykładów i pozwalamy mu samodzielnie „wydedukować" regułę, która najlepiej je opisuje.

💭 Pomyśl: Nauczyciel nigdy formalnie nie definiuje dziecku, czym jest „pies" wzorem matematycznym — po prostu pokazuje mu wiele psów (na zdjęciach, w parku, w książkach) i mówi „to pies". Po jakimś czasie dziecko samo rozpoznaje nowe, niewidziane wcześniej psy. Czym ten proces przypomina uczenie maszynowe, a czym się od niego różni?

Sprawdź odpowiedź

Podobieństwo jest uderzające: w obu przypadkach system (dziecko albo algorytm) nie dostaje formalnej definicji, lecz uczy się z przykładów z etykietami — „to pies", „to nie pies" — i sam wypracowuje wewnętrzne kryteria rozpoznawania, których nikt mu jawnie nie podał. Różnica jest w mechanizmie: mózg dziecka uczy się poprzez procesy neurobiologiczne (m.in. te opisane w Dziale 8 — wzmacnianie połączeń synaptycznych), a algorytm uczenia maszynowego robi to poprzez matematyczną optymalizację — systematyczne dostrajanie parametrów liczbowych (wag), by zminimalizować liczbę błędów na przykładach treningowych. Cel jest ten sam (uogólnić z przykładów na nowe przypadki), mechanizm — inny.

Efektem uczenia się człowieka są modele — wewnętrzne mapy fragmentów świata, które pozwalają nam przewidywać („jeśli puszczę kubek, spadnie") i rozpoznawać („to pies, choć takiego jeszcze nie widziałem"). Uczenie maszynowe stawia sobie ten sam cel: zbudować w komputerze model, który uogólnia poza obejrzane przykłady.

Modele — wewnętrzne mapy świata, które budujemy, ucząc się
Modele — wewnętrzne mapy świata, które budujemy, ucząc się

📐 DEFINICJA — uczenie maszynowe (machine learning): dziedzina informatyki zajmująca się tworzeniem systemów, które poprawiają swoje działanie na podstawie danych (przykładów), zamiast działać według reguł zapisanych wprost przez programistę.

Po ludzku: zamiast mówić komputerowi „rób dokładnie to", pokazujesz mu dużo przykładów i pozwalasz mu samemu wywnioskować regułę. Czym to NIE jest: to nie znaczy, że w uczeniu maszynowym nie ma żadnego kodu ani matematyki — cały proces uczenia się jest precyzyjnie zdefiniowanym algorytmem. Zmienia się tylko to, co jest w tym kodzie zapisane: nie gotowa reguła, lecz procedura znajdowania reguły z danych.

📘 Trzy rodzaje uczenia maszynowego

Nie każde uczenie maszynowe wygląda tak samo. Rozróżnia się trzy główne podejścia, w zależności od tego, jakiego rodzaju informację zwrotną dostaje system podczas uczenia.

Uczenie nadzorowane (ang. supervised learning): system dostaje dane wejściowe razem z poprawną odpowiedzią (etykietą) — na przykład zdjęcie kota razem z etykietą „kot", albo cena mieszkania razem z jego metrażem i lokalizacją. Zadaniem systemu jest znaleźć regułę łączącą wejście z etykietą, tak dokładnie, by potem — dostając nowe, niewidziane wcześniej wejście bez etykiety — potrafić samodzielnie odgadnąć poprawną odpowiedź. Perceptron z Działu 8 uczył się dokładnie w ten sposób.

Uczenie nienadzorowane (ang. unsupervised learning): system dostaje same dane wejściowe — bez żadnych etykiet — i ma za zadanie samodzielnie odkryć w nich strukturę: pogrupować podobne przypadki, wykryć wzorce, uprościć dane do najważniejszych cech. To trochę jak posortowanie stosu zdjęć na kategorie, gdy nikt nie powiedział Ci wcześniej, ile kategorii ma być ani jak je nazwać — sam musisz rozpoznać, co łączy poszczególne grupy.

Uczenie ze wzmocnieniem (ang. reinforcement learning): system (nazywany tu zwykle agentem) nie dostaje ani gotowych etykiet, ani gołych danych do posegregowania — zamiast tego wykonuje działania w pewnym środowisku i dostaje za nie nagrodę albo karę, z którą musi eksperymentalnie powiązać swoje przyszłe decyzje. To dokładnie ten sam mechanizm nagrody, który poznałeś przy SNARC w Dziale 8 — tylko dziś realizowany na dużo większą skalę i z użyciem znacznie potężniejszej matematyki.

💭 Pomyśl: Sklep internetowy chce zaproponować Ci produkty, które mogą Cię zainteresować, analizując miliony wcześniejszych zamówień klientów — bez żadnej wcześniej zdefiniowanej etykiety typu „ten klient lubi elektronikę". Program szachowy uczy się grać, rozgrywając miliony partii samego ze sobą i dostając „punkt" za wygraną, a „karę" za przegraną. Do którego z trzech rodzajów uczenia maszynowego pasuje każdy z tych przykładów?

Sprawdź odpowiedź

Sklep analizujący wzorce zakupowe bez z góry zdefiniowanych kategorii to klasyczny przykład uczenia nienadzorowanego — system sam odkrywa grupy podobnych klientów albo produktów, bez etykiet podanych z góry. Program szachowy uczący się przez rozgrywanie partii i otrzymywanie nagrody za wygraną (lub kary za przegraną) to podręcznikowy przykład uczenia ze wzmocnieniem — agent (program) podejmuje decyzje (ruchy) w środowisku (szachownicy) i optymalizuje swoje zachowanie na podstawie opóźnionej informacji zwrotnej (wynik całej partii), a nie natychmiastowej „poprawnej odpowiedzi" na każdy pojedynczy ruch.

📐 DEFINICJA — trzy rodzaje uczenia maszynowego:

  • Nadzorowane — system uczy się z par (dane wejściowe, poprawna odpowiedź).
  • Nienadzorowane — system uczy się z samych danych wejściowych, bez podanych odpowiedzi, i sam odkrywa w nich strukturę.
  • Ze wzmocnieniem — system (agent) uczy się metodą prób i błędów, otrzymując nagrody i kary za swoje działania w pewnym środowisku.

Po ludzku: nadzorowane to nauka „z kluczem odpowiedzi", nienadzorowane to samodzielne odkrywanie porządku w chaosie, a ze wzmocnieniem to nauka metodą prób i błędów, jak w grze planszowej.

⚠️ Uwaga, pułapka

Łatwo pomyśleć, że „sieć neuronowa" i „uczenie maszynowe" to synonimy. To błąd: sieci neuronowe to tylko jedna z wielu rodzin metod uczenia maszynowego (obok np. drzew decyzyjnych czy maszyn wektorów nośnych) — a każda z tych rodzin może działać w trybie nadzorowanym, nienadzorowanym lub ze wzmocnieniem. Sieci neuronowe stały się dziś dominującym podejściem w wielu zastosowaniach (zobaczysz dlaczego w Działach 10–11 i 13), ale nie są jedynym możliwym narzędziem uczenia maszynowego — ani jego definicją. Do metod bez sieci — drzew decyzyjnych i najbliższych sąsiadów — wrócimy w Jednostce 9.5.

🌍 Powiązania

Perceptron z Działu 8 to przykład uczenia nadzorowanego — uczył się rozpoznawać litery na podstawie przykładów z podanymi etykietami. W następnej jednostce zejdziemy o poziom niżej: zobaczysz, co dokładnie musimy przygotować, żeby jakiekolwiek uczenie było w ogóle możliwe. A jak dokładnie, matematycznie, wygląda korekta błędów w sieci z wieloma warstwami — to Dział 11; tam wróci brakujący element, którego brak w 1969 roku zablokował rozwój sieci neuronowych.

📐 Definicje tej lekcji

  • Uczenie maszynowe — tworzenie systemów, które poprawiają swoje działanie na podstawie danych, zamiast reguł zapisanych wprost.
  • Uczenie nadzorowane — uczenie z par (dane, poprawna odpowiedź).
  • Uczenie nienadzorowane — uczenie z samych danych, bez podanych odpowiedzi; system sam odkrywa strukturę.
  • Uczenie ze wzmocnieniem — uczenie metodą prób i błędów, z nagrodami i karami za działania w środowisku.

📌 Najważniejsze w pigułce

  • Uczenie maszynowe: system uczy się reguł z przykładów, zamiast dostawać je zapisane wprost przez programistę.
  • Uczenie nadzorowane: dane z etykietami (poprawnymi odpowiedziami) — np. Perceptron rozpoznający litery.
  • Uczenie nienadzorowane: same dane, system sam odkrywa w nich strukturę.
  • Uczenie ze wzmocnieniem: nauka metodą prób, błędów, nagród i kar — jak SNARC z Działu 8, tylko na większą skalę.
  • Sieci neuronowe to jedna z wielu rodzin metod uczenia maszynowego, nie jego synonim.

🎒 Zadania

Zadanie 9.1.1. System ma za zadanie przewidzieć, czy dany e-mail jest spamem, na podstawie zbioru tysięcy e-maili, z których każdy ma dołączoną etykietę „spam" albo „nie spam". Do jakiego rodzaju uczenia maszynowego należy to zadanie? Uzasadnij.

Pokaż rozwiązanie

To uczenie nadzorowane — system dostaje dane wejściowe (treść e-maila) razem z poprawną odpowiedzią (etykietą „spam" / „nie spam") i ma za zadanie znaleźć regułę łączącą jedno z drugim, tak by potem samodzielnie klasyfikować nowe, nieoznaczone e-maile. Obecność gotowych etykiet w danych treningowych to definicyjna cecha uczenia nadzorowanego.

Zadanie 9.1.2. Wyjaśnij, dlaczego uczenie ze wzmocnieniem jest trudniejszym problemem niż uczenie nadzorowane — odwołaj się do przykładu programu grającego w szachy, który dostaje informację zwrotną dopiero po zakończeniu całej partii, a nie po każdym pojedynczym ruchu.

Pokaż rozwiązanie

W uczeniu nadzorowanym system dostaje natychmiastową, jednoznaczną informację zwrotną dla każdego pojedynczego przykładu: „to jest błąd, popraw tę konkretną decyzję". W uczeniu ze wzmocnieniem informacja zwrotna (wygrana/przegrana) przychodzi dopiero po całej sekwencji wielu decyzji — a system musi sam „domyślić się", które z dziesiątek wcześniejszych ruchów faktycznie przyczyniły się do wygranej, a które były neutralne albo wręcz szkodliwe. To tzw. problem przypisania zasługi (który ruch „zasłużył" na nagrodę?) — znacznie trudniejszy obliczeniowo niż bezpośrednie porównanie odpowiedzi z gotową etykietą.

Zadanie 9.1.3. Podaj własny przykład (spoza lekcji) zadania, które najlepiej pasuje do uczenia nienadzorowanego, i wyjaśnij, dlaczego brak etykiet jest w tym przypadku naturalny (a nie tylko brakiem danych).

Pokaż rozwiązanie

Przykładowa odpowiedź: analiza dużego zbioru artykułów prasowych w celu automatycznego wykrycia głównych „tematów" poruszanych w danym miesiącu — bez wcześniejszego ustalania listy możliwych tematów. Brak etykiet jest tu naturalny, bo z góry nie wiadomo, ile tematów będzie i jak je nazwać — to właśnie system, analizując podobieństwa słownictwa między artykułami, ma sam zaproponować pogrupowanie. Próba „dorobienia" etykiet na siłę (np. z góry ustalona lista dziesięciu tematów) zniekształciłaby zadanie, sprowadzając je sztucznie do uczenia nadzorowanego.

🔍 Sprawdź, czy umiesz

  • [ ] Zdefiniować uczenie maszynowe i wyjaśnić, czym różni się od klasycznego programowania.
  • [ ] Rozróżnić uczenie nadzorowane, nienadzorowane i ze wzmocnieniem, podając przykład każdego.
  • [ ] Wskazać, do jakiego rodzaju uczenia należał Perceptron z Działu 8.
  • [ ] Wyjaśnić, dlaczego „sieć neuronowa" i „uczenie maszynowe" to nie synonimy.

Ucz się tej jednostki z asystentem