Uczenie maszynowe – o co tutaj chodzi? cz. 2

O czym w artykule…

W poprzedniej części artykułu (klik) wyjaśniliśmy sobie z grubsza czym jest uczenie maszynowe oraz w jakich gałęziach znajduje zastosowanie. Jak dowiedzieliśmy się, jest to termin dosyć ogólny i dotyczy on zbioru problemów oraz technik wykorzystywanych do budowania modeli matematycznych służących rozwiązywaniu tych problemów. W tej części omówimy sobie wraz z przykładami trzy podstawowe podejścia do uczenia maszynowego oraz wyjaśnimy w jaki sposób przebiega proces uczenia modeli.

Rodzaje algorytmów uczenia maszynowego

Uczenie maszynowe ze względu na stosowane techniki można podzielić na dwie główne kategorie, chociaż często dodawana jest także trzecia. Te trzy kategorie to:

  • Uczenie nadzorowane (ang. supervised learning)
  • Uczenie nienadzorowane (ang. unsupervised learning)
  • Uczenie przez wzmacnianie (ang. reinforcement learning)

Uczenia nadzorowane

Pierwszą klasą technik stosowanych w uczeniu maszynowym określa się mianem uczenia nadzorowanego. Tak jak powiedzieliśmy sobie w pierwszej części artykułu, uczenie maszynowe jest bardzo blisko związane z wielkimi zbiorami danych (big data). W tym przypadku słowo nadzorowane odnosi się do konkretnej struktury danych, na których uczy się algorytm.

Dane reprezentować mogą różne zjawiska czy obiekty. Te zjawiska i obiekty opisywane mogą być za pomocą pewnych własności – nazywa się je zmiennymi. W uczeniu nadzorowanym mamy do czynienia z danymi sklasyfikowanymi, to znaczy takimi, które posiadają etykiety (ang. labels). Dla przykładu osobę można opisać za pomocą następujących zmiennych: wzrost, waga, długość włosów, kolor oczu, wiek, itp… Każda z tych zmiennych przyjmuje określone wartości. Trzymając się naszego przykładu, w przypadku uczenia nadzorowanego będziemy posiadać informację o tym jaką kategorię (osobę) opisują przedstawione wartości zmienne i ta informacja będzie właśnie naszą etykieta. Powiedzmy, że posiadamy dane, gdzie etykietą jest płeć danej osoby. Przykładowy zestaw danych wyglądałby tak:

Następnie na podstawie tak oznakowanych danych, maszyna uczy się (według wybranego przez nas algorytmu uczenia nadzorowanego), które z tych osób to mężczyźni, a które kobiety. Kiedy zakończymy proces treningu, i pokażemy maszynie jakąś nieznaną obserwację, która nie posiada etykiety, na przykład taką:

wtedy maszyna przeanalizuje nasz wiersz i na podstawie wzorców, które udało jej się zaobserwować w próbie treningowej, odpowie nam czy podane przez nas informacje należą do kobiety czy też do mężczyzny. Swoją drogą… jak wydaje Wam się, czy powyższy wiersz opisuje kobietę czy mężczyznę? Które cechy najbardziej wpłynęły na Waszą ocenę? Czy są tutaj może takie cechy, które wydają się być kompletnie nieistotne? Jednym z ważnym zagadnień uczenia maszynowego jest dobór zmiennych. Niektóre z własności opisywanego zjawiska (w naszym przypadku kolor oczu oraz wiek) w kontekście naszej analizy nie będą istotne statystycznie i nie będą miały wpływu na zmienną objaśnianą (czyli u nas płeć). Dlaczego? Ponieważ nie są one cechami, które rozróżniałyby kobiety od mężczyzn. Takimi cechami, które pomagają nam w tym rozróżnieniu są już na przykład wzrost, czy długość włosów). Stosuje się techniki i metody regularyzacji, które pozwalają na odrzucenie zmiennych, które nie mają wpływu na zmienną celu. Niektóre bardziej złożone algorytmy (takie jak na przykład wielowarstwowe sieci neuronowe) radzą sobie świetnie z danymi o dużej liczbie wymiarów (takimi, które posiadają dużą liczbę zmiennych) i są one samodzielnie znaleźć odpowiednie cechy i wzorce w danych treningowych.

Wiemy już zatem, że maszyna na podstawie zbioru treningowego może nauczyć się rozróżniać kobiety od mężczyzn, a następnie na podstawie wektora cech potrafi stwierdzić (tak samo jak w przypadku człowieka nie zawsze będzie to poprawny osąd!), czy osoba jest kobietą czy mężczyzną (słowo wektor wzięło się stąd, że w uczeniu maszynowym wszystkie dane przedstawiane są za pomocą szeregu liczb – ponieważ dopiero po przekształceniu do takiej postaci komputer jest w stanie je zrozumieć). Nasunąć się tutaj może pytanie: ale po co nam coś takiego?

Otóż wyobraźmy sobie taką następującą sytuację. Jesteśmy analitykami w banku i rozpatrujemy wnioski kredytowe. Nasz bank funkcjonuje już kilka dobrych lat i na przestrzeni tego czasu zdołaliśmy zebrać już całkiem sporo danych. Wiemy na przykład, którzy klienci spłacili długi, a którzy mieli z tym problemy. Wyobraźmy sobie, że teraz do naszego banku przychodzi nowy klient i wnioskuje o kredyt. Z przedłożonego przez klienta formularza możemy odczytać informacje takie jak jego wiek, stan cywilny, zarobki, wydatki na życie czy też dotychczasowy poziom zadłużenia. Danych jest sporo, czy już wiecie jak możemy je wykorzystać? Podobnie jak w przypadku naszego rozpoznawania pomiędzy kobietą, a mężczyzną, tak również tutaj możemy użyć algorytmu uczenia nadzorowanego, aby wytrenować model, który na podstawie historycznych danych o pomyślnych i niepomyślnych spłatach klientów (dane oznakowane) sklasyfikuje nowego klienta i nada mu etykietę (czy spłaci kredyt, o który wnioskuje, czy też nie). Mało tego niektóre techniki uczenia maszynowego (takie jak np. regresja logistyczna) będą w stanie przewidzieć z jakim prawdopodobieństwem ów klient spłaci kredyt, o który wnioskuje.

Generalnie w przypadku uczenia nadzorowanego możemy wyróżnić dwie podkategorie, a są to:

  • regresja
  • klasyfikacja

Główną różnicą jest to, że modele regresji dają w wyniku jakąś liczbę (np. cena rynkowa nieruchomości powinna wynosić 535 tysięcy złotych, prawdopodobieństwo, że klient w przyszłym miesiącu zerwie umowę wynosi 67%, prawdopodobieństwo, że klient kupi dany produkt wynosi 17%, itd.), natomiast modele klasyfikacyjne przyporządkowują obserwację do danej klasy i dają w wyniku kategorię, (np. samochód na zdjęciu to Opel Insignia, klient nie spłaci kredytu, itd.).

Jako ciekawostkę można podać przykład regresji logistycznej, która jest wykorzystywana najczęściej do tworzenia modeli klasyfikacyjnych, jednak w swojej nazwie posiada słowo 'regresja’, ponieważ w wyniku daje prawdopodobieństwo przynależności do danej klasy (np. ten klient zrezygnuje z oferty na 90%). W praktyce jednak stosuje się tak zwany punkt odcięcia. Polega to na tym, że wyznaczamy sobie jakąś wartość która różnicuje klasyfikacje, np. jeżeli prawdopodobieństwo odejścia klienta obliczone przez model wynosi powiedzmy powyżej 70%, wtedy klasyfikujemy klienta jako tego, który zrezygnuje z naszej oferty. Co daje nam taka analiza? Po tym jak Sztuczna Inteligencja wykryje, że klient może odpłynąć, możemy wysłać mu jakąś atrakcyjną ofertę i tym samym sprawić aby został (oczywiście całą strategię działania należy najpierw przeanalizować i przemyśleć).

Poniższa tabela przedstawia kilka przykładów popularnych zastosowań algorytmów uczenia nienadzorowanego.

BranżaProblemAlgorytmy/metody
FinansePrzewidywanie cen akcjiSieci neuronowe (rekurencyjne)
BankowośćRozpatrywanie wniosków kredytowychDrzewa decyzyjne https://qarshi.com/bokstaven-a/index.html , Regresja logistyczna
NieruchomościWycena nieruchomościRegresja liniowa
MedycynaWczesne rozpoznawanie schorzeńSieci neuronowe (konwolucyjne)
MarketingPrzewidywanie odejścia klientaRegresja logistyczna

Uczenie nienadzorowane

Drugą kategorią uczenia maszynowego jest uczenie nienadzorowane. W przypadku uczenia nadzorowanego powiedzieliśmy sobie, że maszyna uczy się na danych oznakowanych (czyli takich, które mają przypisane etykiety). Dzięki temu komputer może zrozumieć na przykład jakie cechy charakteryzują kobietę, a jakie mężczyznę. W przypadku uczenia nienadzorowanego, zasadniczą różnicą jest to, że dane w ciągu uczącym nie posiadają etykiet. Może zapytacie: „Ale jak to? Czy maszyna może nauczyć się czegoś kiedy nie pokażemy jej najpierw co to właściwie jest? Czy będzie potrafiła odróżnić kobietę od mężczyzny kiedy nie pokażemy jej najpierw jak wygląda kobieta, a jak mężczyzna?”. Otóż, odpowiedź brzmi… owszem.

Rozszerzmy sobie teraz trochę tabelkę z naszymi kobietami i mężczyznami, ale tym razem bez etykiet.

Możecie się zatrzymać na moment i zastanowić, które z obserwacji Waszym zdaniem opisują mężczyzn, a które kobiety. Chwilę wcześniej powiedzieliśmy sobie, że niektóre zmienne dostarczają nam w pewnych sytuacjach więcej informacji niż inne. Przy rozróżnianiu kobiet i mężczyzn stwierdziliśmy, że informacje o kolorze oczu czy też wieku są nieistotne. Co jest natomiast istotne, to w naszym przypadku wzrost, waga i długość włosów. Weźmy zatem na tapetę te trzy zmienne i zwizualizujmy sobie nasze dane.

Jeżeli przyjrzymy się dokładniej, możemy dostrzec pewną zależność. Obserwacje w prawym górnym rogu (czyli osoby, które są wyższe i ważą więcej) charakteryzują się krótkimi lub średnimi włosami, natomiast osoby bliżej lewego dolnego rogu (niższe i lżejsze) mają dłuższe włosy. Gdybyście teraz mieli przeprowadzić na powyższym wykresie linię oddzielającą kobiety od mężczyzn, to którędy by ona przebiegała? Możemy zrobić sobie takie ćwiczenie umysłowe, a następnie sprawdzić jak taką linię narysowałaby… Sztuczna Inteligencja. Do tego zadania wykorzystałem jeden z prostszych algorytmów nienadzorowanego uczenia maszynowego o nazwie K-means (na blogu poświęcony zostanie mu osobny artykuł). Dane najpierw odpowiednio przeskalowałem, a następnie zastosowałem rzeczony algorytm. Zażądałem podziału na dwa klastry (inaczej grupy). Podział ten widoczny jest na obrazku poniżej.

Czy również tak wyznaczyliście swoją linię? Moim zdaniem zaproponowany podział wygląda bardzo rzetelnie. Intuicyjnie, raczej zgodzimy się, że osoby sklasyfikowane na niebiesko w rzeczywistości pewnie byłyby kobietami, a osoby sklasyfikowane na pomarańczowo to raczej mężczyźni. I pomyśleć, że takiego podziału dokonała Sztuczna Inteligencja, bez żadnych dodatkowych wskazówek od człowieka. Specjalnie nie używam sformułowania 'bez pomocy’, ponieważ najpierw ktoś ten algorytm musiał zaimplementować, odpowiednio przygotować i 'obrobić’ dane, czy też wyznaczyć odpowiednią liczbę klastrów (ważna jest tutaj wiedza ekspercka, jednak istnieją także metody, które zasugerują nam odpowiednią liczbę klastrów). To wszystko dałoby się oczywiście zautomatyzować, jednak sam proces analizy odbywa się tutaj bez udziału człowieka. Możliwości, jak widać, są imponujące, a to tylko prosty, obrazowy przykład.

Ponownie nasunąć się może nam pytanie: 'ale w jakim celu?’. Otóż uczenie nienadzorowane z uwagi na fakt, że nie jest ono sterowane, jest mniej zależne od wstępnych założeń i pozwala na potencjalne wykrycie wzorców ukrytych w danych (takich, których człowiek samodzielnie nie byłby w stanie zidentyfikować). W ostatnich latach wyłoniło się kilka trendów, które mocno polegają na uczeniu nienadzorowanym. Dla przykładu Google używa techniki uczenia nienadzorowanego w urządzeniach Google Home, aby były one w stanie rozróżniać głosy poszczególnych osób i dostosowywać odpowiedzi indywidualnie do każdego z użytkowników.

Poniższa tabela przedstawia kilka z wielu możliwych zastosowań uczenia nienadzorowanego.

BranżaProblemAlgorytmy/metody
MarketingSegmentacja klientówK-means
BankowośćWykrywanie wyłudzeńSamoorganizujące się mapy
SprzedażAnaliza koszykowaMetoda asocjacyjna
Nowoczesne technologieAsystenci głosowiSieci neuronowe

Dziedzina uczenia nienadzorowanego jest bardzo ważna, ponieważ większość istniejących na świecie danych nie posiada etykiet. Stąd też, dzięki algorytmom uczenia nienadzorowanego jesteśmy w stanie przeanalizować je, a co za tym idzie zrozumieć i wyciągać wartościowe wnioski.

Uczenie przez wzmacnianie

Uczenie przez wzmacnianie jest chyba najbardziej fascynującym typem ze wszystkich trzech i może najbardziej kojarzyć się ze stereotypowym wyobrażeniem Sztucznej Inteligencji. Polega ono na umieszczeniu agenta w interaktywnym środowisku (dobrym przykładem będą tutaj gry komputerowe), który następnie uczy się jak podejmować działania w celu osiągniecia określonych wcześniej celów (takich jak np. odebranie życia przeciwnikowi, pomyślne uniknięcie ataku, czy finalnie zwycięstwo w grze). Rzeczony agent, swoje działania podejmuje w oparciu o system nagród i kar.

Początkowo (jeszcze w procesie treningu, przed praktycznym wykorzystaniem) agent znajduje się w nieznajomym dla siebie środowisku (np. autonomiczny samochód wyścigowy umieszony na torze – oczywiście na etapie treningu będzie to jedynie symulacja komputerowa toru ;). Najpierw musi on zatem poznać strukturę świata w którym został ulokowany. Agent robi to metodą prób i błędów. W sposób losowy próbuje on różnych działań i sprawdza, które z nich przynoszą korzyści, a które straty (w kontekście zdefiniowanych przez nas celów). Następnie pozytywne działania, które agent wykona, zostają wzmocnione (np. kiedy komputer uniknie ataku przeciwnika w grze lub gdy autonomiczny samochód pokona kolejny metr na torze bez wypadku). Czasami jednak to co z pozoru wydaje się negatywne, w szerszym kontekście okazuje się pozytywne. Dla przykładu poświęcenie pionka w szachach może okazać się na danym etapie kluczowe do zwycięstwa poprzez uzyskanie lepszego rozkładu pionów na tablicy. Właśnie dlatego (aby ująć cały problem oraz cel), w uczeniu przez wzmacnianie ocenie poddawane są grupy działań, a nie pojedyncze działania. Dla przykładu, inteligentny odkurzacz może stanąć przed wyborem czy dalej odkurzać pokój, czy może pojechać do stacji ładowania. Decyzję może podjąć na podstawie tego, czy kiedyś w podobnych okolicznościach udało mu się odkurzyć podobne pomieszczenie przed rozładowaniem baterii. Generalnie w uczeniu przez wzmocnienie dąży się do maksymalizacji skumulowanej nagrody.

To może teraz kilka słów o tym, co prezentują sobą rozwiązania wykorzystujące uczenie przez wzmocnienie? DOTA 2 – wieloosobowa gra online, która wymaga planowania, współpracy i myślenia strategicznego. W ostatnich latach gra w nią średnio od 500 tysięcy do miliona graczy, a pula nagród w profesjonalnych mistrzostwach wynosi 35 milionów dolarów (o wiele więcej niż w wielu klasycznych sportach). To właśnie w tę grę, 13 kwietnia 2019 roku trenowane przez 10 miesięcy OpenAI Five zmierzyło się z mistrzami świata i stało się… pierwszym systemem Sztucznej Inteligencji, który pokonał mistrzów świata w jakimkolwiek e-sporcie. Podczas starcia AI pokazała kilka kreatywnych i intrygujących posunięć, ponadto była pewna swojego zwycięstwa (na 95%) w momencie, gdy postronnym odbiorcom wydawało się, że lekko przegrywa. Ciekawą relację z wydarzenia możecie obejrzeć tutaj na kanale Two Minutes Paper.

Kolejnym przykładem zastosowania uczenia przez wzmocnienie jest projekt „Learning to run”. W jednym z laboratoriów Uniwersytetu Stanforda za pomocą uczenia ze wzmocnieniem i sztucznych sieci neuronowych w ciągu kilku dni nauczono chodzić model mięśniowo-szkieletowy.

Uczenie przez wzmocnienie jest w stanie znaleźć optymalne rozwiązania na podstawie doświadczeń z przeszłości, bez konieczności wcześniejszego posiadania informacji eksperckich, czy dostępu do matematycznych, bądź biologicznych modeli opisujących dane zjawisko. Podejście to sprawia, że systemy te znajdują zastosowanie w wielu dziedzinach. Kilka z nich wymienionych zostało w poniższej tabeli.

DziedzinaProblem
MotoryzacjaAutonomiczne samochody
PrzemysłOptymalizacja zużycia energii
FinanseObrót instrumentami finansowymi
ZdrowieDostosowywanie procesu leczenia
RobotykaPoruszanie się robotów
RozrywkaGry wideo

Podsumowanie

Opowiedzieliśmy sobie o trzech głównych podejściach w uczeniu maszynowym. Wyjaśniliśmy sobie podstawowe właściwości każdego z nich oraz jak przebiega proces nauki oraz do rozwiązywania jakich problemów możemy je wykorzystać. Przedstawione tutaj informacje są jedynie bardzo ogólnym zarysem mającym na celu zobrazowanie czym jest uczenie maszynowe. Także… zostańcie z nami i zapraszamy do kolejnych artykułów, aby lepiej zrozumieć świat Sztucznej Inteligencji – tak jak Sztuczna Inteligencja rozumie coraz lepiej nasz 😉

Referencje:

  • V. Zocca i inni ’Deep Learning. Uczenie Głębokie z językiem Python. Sztuczna Inteligencja i Sieci Neuronowe’, 2018
  • Imran Ahmad, ’40 Algorithms Every Programmer Should Know’, 2020
  • https://deepsense.ai/learning-to-run-an-example-of-reinforcement-learning/
  • C. Berner i inni, ’Dota 2 with Large Scale Deep Reinforcement Learning’
  • Two Minute Papers, ’OpenAI Five Beats World Champion DOTA2 Team 2-0′

1 Komentarz

Dodaj komentarz