Jak zacząć korzystać z uczenia maszynowego?

Od dawna podejmowane są próby stworzenia maszyn o inteligencji przewyższającej ludzką.

Jednym z pierwszych obszarów, gdzie informatyka rzuciła wyzwanie ludzkiej „inteligencji”, była gra w szachy. Szachy były (a może należałoby powiedzieć, że były?) postrzegane przez wielu jako ostateczny sprawdzian ludzkiego umysłu i kreatywności. W latach sześćdziesiątych i siedemdziesiątych XX wieku istniały różne podejścia w dziedzinie informatyki.

Niektórzy uważali, że kwestią czasu jest, aż komputery zaczną górować nad ludźmi w szachach, podczas gdy inni byli przekonani, że nigdy do tego nie dojdzie.

Kasparow kontra Deep Blue

Najgłośniejszym wydarzeniem, w którym człowiek zmierzył się z maszyną w pojedynku umysłów, był mecz szachowy z 1996 roku. Wtedy to ówczesny mistrz świata, Garri Kasparow (prawdopodobnie najlepszy szachista w historii), stanął do walki z superkomputerem IBM, Deep Blue, specjalnie zaprojektowanym na tę okazję.

Źródło obrazu: Wikipedia

Mówiąc krótko, Kasparow odniósł przekonujące zwycięstwo w meczu z 1996 roku (4-2), ale przegrał rewanż w 1997 (4,5-3,5). Towarzyszyło temu wiele kontrowersji i oskarżeń o oszustwo ze strony Kasparowa wobec IBM.

Niezależnie od okoliczności, ten pojedynek zakończył pewną epokę w historii szachów i informatyki. Komputery stały się mądrzejsze od jakiegokolwiek żywego człowieka. IBM, usatysfakcjonowany rewanżem, zdemontował Deep Blue i skupił się na innych projektach.

Obecnie żaden arcymistrz nie jest w stanie pokonać przeciętnego silnika szachowego działającego na standardowym sprzęcie.

Czym nie jest uczenie maszynowe?

Zanim zagłębimy się w temat uczenia maszynowego, warto rozwiać kilka nieporozumień. Uczenie maszynowe nie ma na celu odtworzenia ludzkiego mózgu. Pomimo sensacyjnych opinii, takich jak te wyrażane przez Elona Muska, informatycy podkreślają, że nie poszukują tego „świętego Graala”, a z pewnością nie są blisko jego osiągnięcia.

Najprościej mówiąc, uczenie maszynowe polega na wykorzystaniu procesów uczenia się na podstawie przykładów w komputerach. Jest to odmienne podejście od tradycyjnego, gdzie programista tworzy każdy możliwy scenariusz i zasady na sztywno w systemie.

Uczenie maszynowe polega na dostarczaniu ogromnych ilości danych do komputera, aby ten mógł uczyć się na przykładach (próba → błąd → porównanie → ulepszenie), zamiast polegać na zapisanym kodzie.

Zastosowania uczenia maszynowego

Skoro uczenie maszynowe nie jest czarną magią i nie doprowadzi do powstania Terminatorów, to do czego właściwie się przydaje?

Uczenie maszynowe sprawdza się w sytuacjach, gdzie tradycyjne programowanie jest niewystarczające, a przypadki te zazwyczaj dzielą się na dwie kategorie.

Klasyfikacja, jak sama nazwa wskazuje, polega na prawidłowym oznaczaniu rzeczy, natomiast Prognozowanie ma na celu przewidywanie przyszłych zdarzeń na podstawie analizy dużych zbiorów danych o wartościach historycznych.

Oto kilka interesujących zastosowań uczenia maszynowego:

Filtrowanie spamu

Spam e-mailowy jest powszechny, a próba jego zwalczania może być bardzo trudna. Jak zdefiniować spam? Czy to obecność konkretnych słów kluczowych? A może sposób, w jaki wiadomość jest napisana? Trudno stworzyć wyczerpujący zbiór zasad dla programu.

Dlatego wykorzystujemy uczenie maszynowe. Przedstawiamy systemowi miliony wiadomości oznaczonych jako spam lub nie spam i pozwalamy mu samodzielnie rozwiązać resztę problemu. To była tajemnica doskonałych filtrów antyspamowych Gmaila, które na początku XXI wieku zrewolucjonizowały pocztę elektroniczną!

Rekomendacje

Wszystkie duże firmy e-commerce mają obecnie rozbudowane systemy rekomendacji. Czasami ich zdolność do proponowania rzeczy, które „mogą” nas zainteresować, jest niezwykle precyzyjna, mimo że nigdy wcześniej nie kliknęliśmy w dany przedmiot.

Czy to przypadek? Absolutnie nie!

Uczenie maszynowe intensywnie pracuje w tle, analizując ogromne ilości danych i próbując przewidzieć nasze zmieniające się nastroje i preferencje.

Chatboty

Czy kiedykolwiek spotkałeś się z obsługą klienta pierwszego poziomu, która wydawała się dziwnie zautomatyzowana, a jednocześnie potrafiła prowadzić ciekawą konwersację?

Jeśli tak, to miałeś do czynienia z uczeniem maszynowym!

Uczenie się z rozmów i określanie, co powiedzieć w danej sytuacji, to rozwijająca się i obiecująca dziedzina zastosowań chatbotów.

Usuwanie chwastów

W rolnictwie roboty wykorzystujące uczenie maszynowe są używane do selektywnego opryskiwania chwastów i innych niepożądanych roślin wśród upraw.

W przeciwnym razie czynność ta musiałaby być wykonywana ręcznie, lub wiązałaby się z marnotrawstwem, ponieważ środek opryskowy trafiłby również na rośliny uprawne!

Wyszukiwanie głosowe

Interakcja głosowa z systemami komputerowymi nie jest już elementem science fiction. Obecnie mamy cyfrowych asystentów, takich jak Alexa, Siri i Google Home, którzy są w stanie przyjmować polecenia werbalnie i (prawie) poprawnie je realizować!

Niektórzy twierdzą, że ten wynalazek lepiej omijać, bo czyni ludzi jeszcze bardziej leniwymi niż wcześniej, ale nie można podważyć jego skuteczności.

Diagnoza medyczna

Stoimy u progu rewolucji w diagnostyce medycznej, ponieważ systemy oparte na uczeniu maszynowym zaczynają przewyższać doświadczonych lekarzy w diagnozowaniu na podstawie zdjęć rentgenowskich i innych.

Nie oznacza to, że lekarze wkrótce staną się niepotrzebni, ale raczej, że jakość opieki medycznej znacząco wzrośnie, a koszty spadną (chyba że kartele biznesowe zdecydują inaczej!).

To tylko mały wycinek możliwości uczenia maszynowego. Obecnie powstają autonomiczne samochody, boty do gier strategicznych, maszyny do składania koszulek, systemy łamiące captcha, i aplikacje do kolorowania czarno-białych zdjęć.

Rodzaje uczenia maszynowego

Techniki uczenia maszynowego dzielą się na dwa główne rodzaje.

Uczenie nadzorowane, gdzie system jest kierowany przez ludzką ocenę, oraz Uczenie nienadzorowane, gdzie system musi uczyć się samodzielnie. Mówiąc inaczej, w uczeniu nadzorowanym mamy zbiór danych zawierający zarówno dane wejściowe, jak i oczekiwane dane wyjściowe, które system wykorzystuje do porównywania i autokorekty. Natomiast w uczeniu nienadzorowanym nie ma danych wyjściowych, które można by zmierzyć, więc wyniki mogą być bardzo różne.

Ekscytujące i zarazem niepokojące zastosowanie uczenia nienadzorowanego?

Boty do gier planszowych. Program uczy się zasad gry i warunków zwycięstwa, a następnie działa samodzielnie. Program rozgrywa miliony partii przeciwko sobie, uczy się na własnych błędach i utrwala korzystne decyzje.

Dysponując wystarczająco wydajnym komputerem, światowej klasy sztuczną inteligencję można stworzyć w kilka godzin!

Poniższe ilustracje przedstawiają te koncepcje w skrócie (źródło: Medium):

Zasoby ułatwiające rozpoczęcie przygody z uczeniem maszynowym

Skoro teraz fascynuje Cię uczenie maszynowe i jego potencjalny wpływ na świat, to od czego zacząć?

Poniżej znajduje się lista przydatnych zasobów internetowych, które pomogą Ci opanować uczenie maszynowe bez konieczności uzyskiwania doktoratu z informatyki! Jeśli nie jesteś badaczem uczenia maszynowego, szybko przekonasz się, że ta dziedzina jest równie praktyczna i satysfakcjonująca jak programowanie w ogóle.

Bez względu na obecny poziom wiedzy, możesz, niczym dobry program uczący się, stale doskonalić swoje umiejętności.

#1. Programowanie

Pierwszym krokiem w świecie uczenia maszynowego jest nauka programowania. Systemy uczenia maszynowego są zazwyczaj implementowane jako biblioteki w różnych językach programowania.

Najbardziej polecany jest Python, po części dlatego, że jest stosunkowo łatwy do nauczenia, a po części dlatego, że ma ogromny ekosystem bibliotek i zasobów.

Oficjalny przewodnik dla początkujących to dobre miejsce na start, nawet jeśli masz już pewną wiedzę o Pythonie. Możesz też skorzystać z kursu bootcamp, aby zostać ekspertem od podstaw.

#2. Statystyczne myślenie

Po opanowaniu podstaw Pythona, warto sięgnąć po dwie godne uwagi książki. Są one w 100% darmowe i dostępne do pobrania w formacie PDF. Think Stats i Think Bayes to dwa nowoczesne klasyki, które powinien znać każdy początkujący inżynier uczenia maszynowego.

#3. Udemy

Na tym etapie polecam skorzystanie z kilku kursów na Udemy. Interaktywny format i możliwość nauki we własnym tempie pomogą Ci szybko zaangażować się w temat i zbudować pewność siebie.

Przed rozpoczęciem kursu zapoznaj się z jego podglądem, recenzjami (szczególnie tymi negatywnymi!) i ogólnym stylem prowadzenia.

Na YouTube można też znaleźć darmowe i wartościowe tutoriale. Sentdex to jeden z kanałów, który mogę polecić, gdzie zawsze jest dużo ciekawych materiałów, ale jego podejście nie jest zbyt przyjazne dla początkujących.

#4. Andrew Ng

Kurs prowadzony przez Andrew Ng na Coursera jest prawdopodobnie najbardziej popularnym zasobem edukacyjnym dotyczącym podstaw uczenia maszynowego.

Chociaż używa języka programowania R, kurs jest niezrównany pod względem sposobu prezentacji tematu i jasnych wyjaśnień. Andrew Ng dzięki temu kursowi zyskał w środowisku ML niemal boski status, a ludzie cenią jego wiedzę ponad wszystko (to nie żart!).

To nie jest kurs dla absolutnie początkujących, ale jeśli radzisz sobie już z danymi i nie masz nic przeciwko dodatkowej pracy, ten kurs jest najlepszym wyborem.

#5. Udacity

Zostań inżynierem uczenia maszynowego, kończąc ten nanostopień na Udacity.

Ukończenie kursu zajmuje około 3 miesięcy. Po jego zakończeniu powinieneś mieć dobre pojęcie o algorytmach uczenia maszynowego, modelowaniu ich i implementowaniu w procesie produkcyjnym.

Podsumowanie

Zasobów w Internecie jest mnóstwo i na początku łatwo się w tym pogubić. Większość tutoriali i dyskusji jest trudna matematycznie lub chaotyczna, co może osłabić Twoją pewność siebie, zanim jeszcze zaczniesz.

Dlatego ostrzegam przed samodestrukcją: zachowaj rozsądek i idź naprzód małymi krokami. Uczenie maszynowe to nie coś, co opanujesz w jeden lub dwa dni, ale wkrótce zaczniesz się dobrze bawić, i kto wie, być może stworzysz coś niesamowitego!

Powodzenia!