Każda inteligentna istota uczy się. Dziś wiemy, że nauka to element inteligencji. Uczą się oczywiście ludzie, a także zwierzęta – psy, koty, czy nawet ptaki.
Uczenie się to zdobywanie nowej wiedzy i umiejętności. Rozwijamy się dzięki temu, że się uczymy. Jest to bardzo ważne dla naszej kariery zawodowej i wpływa na nasz komfort życia.
Maszyny, choć nie są istotami żywymi także się uczą. Dzięki temu potrafią coraz lepiej wykonywać skomplikowane zadania i są coraz „mądrzejsze”.
Dlaczego uczenie maszynowe?
Wyobraźmy sobie, że mamy sklep internetowy z odzieżą.
Logujemy się do sklepu i wprowadzamy towar, który sprzedajemy. Dodajemy zdjęcia i dane o rozmiarach czy kolorach ubrań. Musimy także nadać ubraniom odpowiednie kategorie, np. koszulki, koszule czy bluzy. Kategorię musimy nadać każdemu rodzajowi odzieży. Jeśli zrobimy to dobrze, klienci znajdą w naszym sklepie dokładnie to, czego szukają.
Wprowadzanie kilkunastu ubrań do sklepu nie zajmie dużo czasu. Im będzie ich więcej, tym więcej czasu trzeba będzie poświęcić na ich kategoryzowanie.
A jak radzą sobie z tym giganty odzieżowe, które sprzedają setki marek i tysiące ubrań dziennie? Wbrew pozorom nie zatrudniają do takich czynności więcej ludzi. Program sklepu to sztuczna inteligencja, więc uczy się go, co jest koszulą, a co koszulką. Tak jest łatwiej, szybciej i taniej. ak odbywa się taka nauka?
Trzy rodzaje uczenia maszynowego
Wiemy już, że maszyna liczy, kiedy wykonuje jakieś zadanie. Podobnie jest, gdy się uczy – także liczy. Podstawą uczenia maszynowego jest statystyka.
Statystyka to wydobywanie wiedzy z danych, które maszyna ma lub które jej dajemy. Najpierw przedstawimy na czym polegają różne rodzaje uczenia maszynowego, a potem przejdziemy do statystyki.
Uczenie nadzorowane
Odbywa się pod kontrolą człowieka. Wyjaśnimy to na przykładzie wspomnianego już sklepu odzieżowego.
Chcemy nauczyć maszynę, żeby rozpoznawała koszulki, bo nie chce nam się za każdym razem przypisywać produktu do kategorii. Zaczynamy od treningu. Pokazujemy jej bardzo dużo zdjęć różnych koszulek, które nazywa się danymi wejściowymi. Każde zdjęcie ma etykietkę „koszulka”. Maszyna „ogląda” coraz więcej zdjęć i tworzy sobie zbiór cech charakterystycznych dla koszulek (np. krótki rękaw, dekolt, dół koszulki).
Po treningu przychodzi czas na test. Aby sprawdzić, czy maszyna już „wie” jak wygląda koszulka, pokażemy jej obrazy różnej odzieży, w tym koszulek. Wszystkie zdjęcia ubrań są bez etykietek i inne, niż te, które daliśmy maszynie do nauki. Zadaniem maszyny jest wskazać koszulkę. Komputer porównuje obrazy, które widzi z tym, czego nauczył się podczas treningu. Im więcej cech podobnych znajdzie, tym pewniej określa, że coś jest koszulką. Jeśli za każdym razem dobrze rozpoznaje koszulkę, możemy powiedzieć, że uczenie maszyny było udane.
Uczenie nienadzorowane
Różni się od uczenia nadzorowanego tym, że:
- przebiega bez udziału człowieka
- nie dajemy maszynie etykiet podczas treningu.
Żeby wyjaśnić ten typ uczenia, znów użyjemy przykładu ze sklepem odzieżowym. Załóżmy, że mamy na sprzedaż 1000 sztuk różnej odzieży, którą w hurtowni kupiliśmy „w ciemno”, w bardzo korzystnej cenie. Nie wiemy właściwie co tam jest, musielibyśmy każde ubranie przejrzeć, ale nie mamy na to czasu. Dostaliśmy jednak zdjęcia tych ubrań. Wykorzystamy je do nauki maszyny.
Maszyna „przegląda” zdjęcia i szuka na nich cech charakterystycznych. Następnie tworzy grupy ubrań wyglądających do siebie podobnie. Nie potrafi nazwać tych grup, czyli nie nada im etykiet typu „spodnie”, „koszule”, czy „spódnice”. Jedyne, co potrafi zrobić, to je pogrupować w zbiory, np. tak:
W uczeniu nienadzorowanym maszyna nie dostaje informacji, czy wykonała dobrze zadanie, bo często człowiek sam tego nie wie. Tutaj wytłumaczyliśmy to na bardzo prostym przykładzie, chcąc pokazać różnicę między uczeniem maszynowym z nauczycielem i bez. Uczenia nienadzorowanego używa się raczej do sytuacji, których człowiek nie umie przewidzieć. Np. maszyna w uczeniu nienadzorowanym może przewidywać cenę mieszkań w Warszawie, albo akcji na giełdzie.
Uczenie ze wzmacnianiem czyli metoda kija i marchewki
Jest to najtrudniejszy, ale i najbardziej obiecujący dział uczenia maszynowego. Dąży do uczenia się w taki sam sposób, w jaki robi to człowiek. Maszyna dostaje gotowy zestaw reguł i stwierdzeń, według których ma działać. Rozwiązuje problem i obserwuje skutki swojego działania. Jeśli rozwiąże problem prawidłowo, dostaje „nagrodę”, np. punkt. Jeśli źle – „karę”, czyli 0 punktów. Komputer rozwiązuje problemy, za każdym razem dostając nagrodę za prawidłowe rozwiązanie i karę za złe.
Można to porównać do nauki gry w koszykówkę. Znamy zasady gry, wiemy, co jest jej celem. To, w jaki sposób zdobędziemy punkt, zależy od decyzji drużyny. Możemy rzucać do kosza sami, albo podać piłkę koledze. Decyzje podejmujecie na bieżąco. Po skończonej grze można przeanalizować swoje błędy i mocne strony, ale przez całą grę celem jest zdobycie jak największej liczby punktów. Tak samo maszyna uczy się ze wzmocnieniem.
Ciekawostka
Do uczenia maszynowego często wykorzystuje się dane MNIST. Jest to baza zdjęć pokazywanych maszynie podczas uczenia. Są w niej np. zdjęcia pisma odręcznego (każdy człowiek pisze tę samą cyfrę czy literę całkiem inaczej!).
Są nawet… zdjęcia odzieży wykorzystywane właśnie do nauki programów obsługujących sklepy internetowe.
Zdjęcia pochodzą z bazy MNIST: http://yann.lecun.com/exdb/mnist/
Algorytmy w uczeniu maszynowym
Z poprzednich części kursu wiemy, że maszyna aby rozwiązać problem wykorzystuje algorytmy. Przy nauce jest dokładnie tak samo. Nie będziemy wypisywać tu żadnych wzorów ani obliczeń, ale przedstawimy sposób uczenia się maszyny.
Algorytm KNS (klasyfikator K najbliższych sąsiadów)
Klasyfikator k najbliższych sąsiadów to jeden z najprostszych algorytmów, który sztuczna inteligencja wykorzystuje do nauki. Wcześniej pisaliśmy, że maszyna ucząc się szuka cech charakterystycznych elementu (np. gdy ogląda zdjęcia koszulek) i je zapamiętuje.
Gdy zobaczy nowy element, szuka najbardziej podobnych wśród tych, które już zna. Potrafi nawet wyświetlić jego etykietę. Przedstawimy to na przykładzie:
Maszyna podczas treningu nauczyła się jak wygląda bluza z długim rękawem i spódnica. Obok tych ubrań są ich cechy charakterystyczne, znalezione przez maszynę, a na diagramie kropki obrazujące ich położenie. Bluza to kropka niebieska, a spódnica to kropka zielona. Komputer widzi po raz pierwszy bluzę z kapturem. Porównuje cechy nowego elementu z tymi, które już zna. Ponieważ bluza z kapturem ma aż 2 elementy wspólne z bluzą z długim rękawem, komputer uznaje, że są to ubrania podobne. Maszyna umieszcza więc na diagramie element „bluza z kapturem” (fioletowa kropka) blisko elementu „bluza”.
Co dla algorytmu KNS znaczy podobieństwo?
Przedstawiliśmy bardzo prostą sytuację, w której w sąsiedztwie nowego elementu najbliżej był element „bluza”. Trochę utrudnimy, by wyjaśnić, czym jest k w k najbliższych sąsiadów. Popatrzmy na poniższy schemat:
nowy element (bluza z kapturem)element „spódnica”element „bluza”Znamy już działanie algorytmu KNS. Spróbujmy zgadnąć, do której klasy zaliczy on fioletową bluzę – do spódnicy, czy do bluzy? Ponieważ wiemy, że algorytm wskaże najbliższego sąsiada, więc bluza z kapturem zostanie umieszczona najbliżej spódnicy. To byłoby całkiem bez sensu, więc tu do akcji wkracza k. K określa się liczbą, czyli ilu sąsiadów nowego elementu trzeba brać pod uwagę. Załóżmy, że w tym przypadku k = 3. W pobliżu naszego nowego elementu (fioletowej kropki) są trzy elementy, dwa niebieskie i jeden zielony. Algorytm sprawdza, czego jest więcej? Oczywiście elementów niebieskich („bluza”), zatem uzna, że bluzę z kapturem należy umieścić blisko elementów „bluza”.
Jak widać podobieństwo może znaczyć coś całkiem innego w różnych przypadkach. Może to być odległość, czyli co jest najbliżej, ale może to być liczba wspólnych cech charakterystycznych, albo sprawdzenie, których elementów jest więcej.
Dlaczego sklep proponuje nam inne artykuły?
Komputery wykorzystują algorytm KNS nie tylko do nauki. Jeśli kiedykolwiek robiliśmy zakupy w sklepie internetowym, to pewnie wiemy, że sklep proponuje też inne przedmioty, którymi możemy być zainteresowani. Oferta oczywiście nie jest przypadkowa. Specjalnie dla nas układa ją także algorytm KNS.
Założenie jest takie, że określone grupy ludzi mają zbliżone do siebie gusta. Sztuczna inteligencja rejestruje nasze zakupy i porównuje je z zakupami innych użytkowników. Jeśli nasze zakupy są podobne do zakupów innych klientów, to zaproponuje nam produkty kupione przez nich.
Wytłumaczymy to także na przykładzie wspomnianego sklepu internetowego. Poniższa tabela prezentuje zakupy czterech klientek naszego sklepu odzieżowego:
klientka | poprzednie zakupy | ostatni zakup | ||
Basia | koszula | koszulka | buty na obcasie | żakiet |
Magda | koszula | spódnica | żakiet | sukienka |
Marta | sukienka | apaszka | buty na obcasie | torebka |
Maja | trampki | bluza z kapturem | koszulka | okulary słoneczne |
W trakcie poprzednich zakupów Basia kupiła koszulę, koszulkę i buty na obcasie. Ostatni jej zakup, żakiet, pokazuje kolumna z prawej strony. Algorytm KNN zakłada, że jeśli inna klientka kupi koszulę, koszulkę i buty na obcasie, to może także kupić żakiet. Tak samo to działa, gdy klientka zakupi to samo co np. Marta – istnieje duża szansa, że jej kolejnym zakupem będzie torebka. Im większe podobieństwo zakupów do konkretnego klienta, tym większa szansa, że w naszych propozycjach pojawi się jego ostatni zakup.
Załóżmy, że teraz w naszym sklepie zakupy robi Sylwia, która kupowała poprzednio sukienkę, spódnicę i buty na obcasie. Co zaproponuje jej sztuczna inteligencja w naszym sklepie?
klientka | poprzednie zakupy | ostatni zakup | ||
Sylwia | sukienka | spódnica | buty na obcasie | ? |
Aby to sprawdzić, porównajmy podobieństwo poprzednich zakupów Sylwii do poprzednich zakupów innych klientek:
Ile takich samych produktów kupiła Sylwia i: | Basia | Magda | Marta | Maja |
1 | 1 | 2 | 0 |
Jak widzimy największe podobieństwo w kupowaniu jest między Sylwią i Martą i wynosi 2. Obie klientki kupiły sukienkę i buty na obcasie. Najmniejsze podobieństwo jest między Sylwią i Mają, gdyż nie kupiły ani jednej, takiej samej rzeczy. Wniosek nasuwa się sam – sztuczna inteligencja zaproponuje Sylwii ostatni zakup Marty, czyli torebkę. Tak działa system rekomendacji na stronach sklepów internetowych, ale i takich platform jak Netflix czy Spotify.
Algorytm regresji liniowej
Regresja liniowa to kolejny sposób nadzorowanego uczenia maszynowego. Pokazuje nam jaki wpływ mają na siebie dwie zmienne. Zmienne to jakieś dane, np. czas i kwota zakupu i nazywamy je danymi wejściowymi. Aby wytłumaczyć regresję liniową, wrócimy do naszego internetowego sklepu odzieżowego.
Chcemy sprawdzić, czy czas spędzony na stronie sklepu ma wpływ na ilość wydanych w nim pieniędzy. Na poniższym wykresie umieściliśmy te informacje o ośmiu osobach, które u nas dokonały zakupów. Wprowadziliśmy kwoty i dokładny czas potrzebny im na zakupy w minutach (jedna kropka to jeden klient):
Można zauważyć, że klient, który był na stronie przez 5 minut nic nie kupił. Z kolei klienci, którzy przeglądali naszą stronę od 20 do 25 minut dokonali zakupów w kwocie od 250 do 350 zł.
Drugą, ważną rzeczą, którą możemy zauważyć na tym wykresie to trend. Trend pokazuje nam pewną zasadę. Przedstawia go linia, którą przeprowadzimy tak, żeby przebiegała w pobliżu kropek:
Możemy na tej podstawie wyciągnąć wniosek, że im dłużej klienci oglądają zawartość naszego sklepu, tym chętniej kupują. Można nawet pójść dalej: jeśli będą oglądali jeszcze dłużej, to ich zakupy będą na jeszcze wyższe kwoty.
Regresja liniowa pozwala na przewidywanie wielu związków między pewnymi danymi. Linia trendu pomaga przewidzieć, co się będzie działo dalej, jednak nie można ufać jej w 100%. Dane na wykresach wymyśliliśmy na potrzeby wytłumaczenia tego algorytmu i nie są prawdziwe. W rzeczywistości nie tylko czas spędzony na stronie sklepu ma wpływ na kwoty zakupów naszych klientów. Wpływ na to ma także ich nastrój, dostępne finanse, potrzeby zakupu nowych ubrań i wiele innych. Te, które znamy, możemy umieścić w regresji, bo regresja może sprawdzać powiązania wielu zmiennych. Ale nie znamy wszystkich zmiennych, np. nastroju kupującego albo jego stanu pieniędzy na koncie.
Regresja liniowa – przypadek 2
Prowadząc butik internetowy dzięki regresji liniowej możemy przewidywać inne, ważne dla nas rzeczy. Załóżmy, że chcemy wykupić reklamę naszego sklepu. Zanim to zrobimy, chcemy trafić w dobrą grupę odbiorców. Przygotowaliśmy dla klientek ankietę, która dała nam informacje na temat ich wieku i wielkości miast, w których mieszkają. Następnie wprowadziliśmy te informacje na wykres:
Najwięcej klientek sklepu jest w przedziale wiekowym 18 – 25 lat. Wszystkie klientki w tym wieku mieszkają w mieście, które ma więcej niż milion mieszkańców. Pozostałe klientki, w wieku około 32 lat także mieszkają w dużym mieście.
Choć w tym przypadku ciężko narysować linię trendu, to można wyciągnąć taki wniosek: musimy skierować reklamę naszego sklepu do pań w wieku 18-32, mieszkających w dużych miastach. Możemy oczywiście do pozostałych grup, co pozwoli nam pozyskać nowe klientki. Wiemy jednak, że te grupy kupują nasze produkty najchętniej.
Regresję liniową stosuje się np. do przewidywania liczby kliknięć w reklamę internetową, dzięki temu możemy przygotować się na jej koszty. Regresja pozwala także przewidzieć zapotrzebowanie na towary w sklepie albo nasze zarobki ze sprzedaży w sieci, a nawet ceny mieszkań czy domów w danym mieście.
Uczenie maszynowe jest bardzo pomocnym narzędziem. Pozwala zaoszczędzić nam czas i pieniądze. Opisane przez nas metody i algorytmy są kroplą w morzu, obecnie istnieją tysiące innych technik uczenia maszynowego. Wszystkie jednak pozwalają odkryć pewne zależności między danymi i cechy wspólne przedmiotów albo zjawisk. Pamiętajmy też, że pewnych rzeczy maszyna będzie uczyła się szybciej i lepiej niż ludzie, ale są takie problemy, z którymi nie radzi sobie tak dobrze, jak my. Np. pismo odręczne (jeśli uważamy, że maszyna kompletnie tego nie potrafi, spróbujmy przeczytać receptę od swojego lekarza).