![machine learning](https://www.intellect.pl/blog/wp-content/uploads/2020/03/machine-learning.png)
Czym jest machine learning – technologia, która rewolucjonizuje świat?
Machine learning to pojęcie, które ostatnimi czasy zyskuje na popularności. Co ono jednak dokładnie oznacza? W jaki sposób ma przebiegać proces „nauki” maszyn i dlaczego zdolność uczenia się programów jest tak ważna dla współczesnej cywilizacji? W dzisiejszym artykule nie tylko tłumaczymy, co kryje się pod tajemniczym pojęciem „uczenia maszynowego”, ale też wyjaśniamy, w jaki sposób uczą się programy – i w jakich sytuacjach każdego dnia stykamy się z rezultatami tej nauki.
Czym jest machine learning? – definicja
Machine learning – w Polsce określane także mianem „uczenia maszynowego” – to termin, który bywa różnie rozumiany. Za pierwszą (i wciąż uważaną za aktualną) definicję tego pojęcia przywykło się uważać słowa Arthura Samuela, który w latach pięćdziesiątych ubiegłego wieku wprowadził termin machine learning, tłumacząc go jako „field of study that gives computers the ability to learn without being explicitly programmed”. Czyli w luźnym tłumaczeniu – pole nauki, która daje komputerom zdolność nauki rzeczy bez ich dokładnego zaprogramowania.
Definicja Samuela, choć przydatna, nie w pełni oddaje to, w jaki sposób uczenie maszynowe działa obecnie. Bardziej akuratne będzie więc zdefiniowanie machine learning jako dostarczanie programowi zdolności do automatycznego uczenia się i samodoskonalenia na podstawie doświadczeń (czyli dostarczonych wcześniej danych i wzorów) bez dokładnego zaprogramowania. Ujmując to w prostszych słowach: program zapamiętuje dane i schematy, które mu „dostarczono” i na tej podstawie nabywa umiejętności analizowania nowych danych (oraz reagowania na nie) – bez konieczności dodatkowej interwencji programistów.
Uczenie maszynowe i sztuczna inteligencja
Niekiedy pojęcia „sztuczna inteligencja” (AI) używa się zamiennie z „uczeniem maszynowym”. Wielu specjalistów wskazuje jednak, że trudno utożsamiać sztuczną inteligencję z machine learning. AI to pojęcie znacznie szersze. John McCarthy AI definiuje jako „naukę i inżynierię tworzenia inteligentnych maszyn, zwłaszcza inteligentnych programów komputerowych”.
W ramach badań nad sztuczną inteligencją powstają różne „inteligentne” programy, które mogą w pewnym zakresie zastępować człowieka. Można więc uznać, że machine learning jest zaledwie częścią tej dziedziny – a więc choć każdy rodzaj machine learning można określić jako formę sztucznej inteligencji, tak nie każda forma sztucznej inteligencji będzie zarazem machine learning.
Jak działa machine learning?
Sama definicja może jednak nie wystarczyć, aby zrozumieć, czym właściwie jest uczenie maszynowe. Znacznie prościej wyjaśnić, w jaki sposób działa machine learning, na konkretnym przykładzie.
Jeden z najprostszych przykładów, jakiego można tu użyć, to nauka programu rozpoznawania konkretnych obiektów – na przykład drzew. Programowi dostarcza się wiele zdjęć drzew wraz z informacją, że są to drzewa – oraz pewną liczbę innych grafik, z informacją, że to nie są drzewa.
Na bazie tych danych program tworzy wzorce. Z kolei na ich podstawie – otrzymując nowe zdjęcia, bez informacji, czy znajdują się na nich drzewa, czy też inne obiekty – program będzie w stanie samodzielnie wybrać, które grafiki przedstawiają drzewo. Program tym samym zdobył nową umiejętność: bazując na dostarczonych mu informacjach, nauczył się rozpoznawać drzewa bez żadnych dodatkowych interwencji ze strony człowieka. Oczywiście, wciąż istnieje możliwość pomyłki. Na przykład program może potraktować jako drzewo przedszkolaka w drzewnym kostiumie na przedstawieniu lub nie rozróżnić rzeźby przedstawiającej drzewo od autentycznej rośliny. Błędy jednak będą rzadkie – i można je wyeliminować, dostarczając nową, odpowiednio opisaną porcję danych, na podstawie których program opracowuje kolejne schematy, zwiększające jego skuteczność.
Program w takim modelu nie dostaje dokładnych instrukcji, a raczej przykłady, dzięki którym zaczyna opracowywać schematy. Na ich podstawie jest zdolny do samodzielnego kategoryzowania.
Dlaczego uczenie maszynowe jest przydatne?
Mogłoby tu paść pytanie: no dobrze, program nauczył się rozpoznawać jakiś obiekt, tylko co w tym ekscytującego? Dlaczego miało to by być bardziej efektywne niż wcześniejsze metody programowania? W jaki sposób taka nowa umiejętność programu mogłaby zostać wykorzystana?
Jeśli chodzi o pytanie o efektywność – aby program rozpoznał każdy obiekt z danej kategorii, bez zdolności uczenia się, należałoby mu dostarczyć odpowiednio opisane dane o wszystkich obiektach tego typu na świecie. Taka metoda byłaby więc nie tylko mało wydajna, ale wręcz niemożliwa do zastosowania. Dzięki nauce na przykład, wystarczy kilkaset (czy w bardziej skomplikowanych sprawach kilka tysięcy) odpowiednich grafik.
A w jaki sposób taką umiejętność można wykorzystać?
W tym przypadku posłużymy się przykładem stworzonej przez nas aplikacji Sparkee.
Jej celem jest wyszukiwanie wolnych miejsc parkingowych, idealnie dopasowanych do ich pojazdów i wskazywanie kierowcom, w jaki sposób do takiego miejsca dotrzeć. Samo nawigowanie po mieście nie wymaga zastosowania metod uczenia maszynowego – wystarczy wgrać odpowiednie mapy i instrukcje. Skąd jednak aplikacja miałaby „wiedzieć”, które miejsca parkingowe są wolne? I które z nich pasują do wielkości danego pojazdu? Tu przy programowaniu przyszło z pomocą machine learning. Na podstawie konkretnych przykładów algorytm nauczył się, co jest wolnym miejscem parkingowym, a co nie – podobnie jak w przypadku drzewa. Algorytm może też określić, czy odległość między samochodami już stojącymi na parkingu, jest wystarczająca, aby mogło zaparkować tam kolejne auto. Dzięki temu, opierając się na danych z monitoringów na parkingach, program samodzielnie analizuje, gdzie może stanąć kierowca. Po dostarczeniu odpowiednich danych, odróżnia on miejsce parkingowe wolne od zajętego.
Bez machine learning Sparkee nigdy nie mogłoby powstać. To doskonały przykład zastosowania zdolności uczenia się programów w praktyce – użycia jej tak, by przyniosła realne korzyści.
Metody uczenia maszynowego
Uczenie maszynowe może przebiegać na różne sposoby. Dość często wyróżnia się metody:
- Uczenia nadzorowanego („supervised machine learning”)
- Uczenia nienadzorowanego („unsupervised machine learning”).
(Nie są to oczywiście jedynie metody machine learning – uważa się je jednak za najpopularniejsze).
Uczenie nadzorowane
W przypadku uczenia nadzorowanego program uczony jest na podstawie przykładów, które oznaczone są w odpowiedni sposób. Na przykład – może on otrzymać wyniki badań USG piersi wraz z informacją, które z nich świadczą o potencjalnym nowotworze, a które – o tym, że pacjentka jest zdrowa. (Czy: otrzymać zdjęcia wolnych miejsc parkingowych, miejsc parkingowych zajętych oraz miejsc, w których nie wolno parkować – z odpowiednią etykietą, informującą program, co znajduje się na zdjęciu: np. wolne/zajęte).
Uczenie nienadzorowane
Uczenie nienadzorowane to proces, w ramach którego algorytm otrzymuje samą bazę danych – bez żadnych dodatkowych instrukcji. (Na przykład więc zestaw zdjęć USG kobiet chorych i zdrowych, ale bez informowania programu o tym, jaka jest między nimi różnica – przy czym w tym konkretnym przypadku lepiej sprawdza się uczenie nadzorowane). Program ma samodzielnie zbadać dane i znaleźć jakieś wzorce. Może to być przydatne zwłaszcza do analiz bardzo dużych baz danych, pośród których człowiekowi trudno znaleźć samodzielnie zależności.
Uczenie pół-nadzorowane
Niekiedy stosowana jest także metoda tak zwanego „pół-nadzorowanego uczenia”. W tym przypadku programowi dostarcza się wiele danych, spośród których tylko część posiada „właściwe” etykiety, a reszta nie ma ich wcale. Na podstawie danych opisanych oraz samodzielnych analiz reszty zbioru – algorytm ma znaleźć odpowiednie zależności.
Nauka przez wzmocnienie
Wreszcie – przydatna w niektórych dziedzinach bywa także metoda nauki przez wzmocnienie. Wymaga ona początkowo stałej interakcji z programem i można określić ją jako naukę na własnych błędach. Można to przyrównać do próby opanowania gry, której zasad nie znamy – niektóre posunięcia przynoszą nam punkty, inne je odejmują, po odpowiedniej liczbie prób więc możemy nauczyć się, które rozwiązania są właściwe. Program reaguje na konkretną sytuację, otrzymuje informację, czy reakcja była dobra, czy zła – i zaczyna tworzyć schemat „właściwego” postępowania.
Machine learning wczoraj i dziś
Przyjmuje się, że historia machine learning sięga lat pięćdziesiątych – gdy prowadzono pierwsze badania, posługując się głównie prostymi algorytmami. Za jeden z pierwszych przykładów zastosowania machine learning uważa się projekt wspomnianego już Arthura Samuela, którego zadaniem było szkolenie szachistów. W kolejnych latach powstawały takie inicjatywy, jak na przykład system Dendral, mający przeprowadzać analizy z dziedziny chemii. Machine learning zaczęło szczególnie dynamicznie rozwijać się w latach dziewięćdziesiątych – szczególną sławę zdobyło w 1997, kiedy komputer Deep Blue „nauczył się” grać w szachy tak dobrze, że pokonał w rozgrywce szachowego mistrza świata. (Warto tu wspomnieć, że kilka lat później opracowano także program zdolny wygrać z mistrzami gry – Go. Świadczy to o ogromnym postępie w dziedzinie machine learning: w przypadku szachów bowiem liczba możliwych do wykonana ruchów jest ograniczona i znacznie łatwiej zaobserwować pewne zależności – przyjąć, że na określony ruch przeciwnika należy zareagować w taki i taki sposób. Gra w Go posiada nieskończenie wiele możliwości. Komputer nie mógł więc wypracować określonych schematów, które sprawdzą się w danej sytuacji – a na podstawie analizy tysięcy rozgrywek nauczyć się reagować na nowe dane.
Więcej na ten temat w artykule https://techcrunch.com/2017/05/24/alphago-beats-planets-best-human-go-player-ke-jie/
Pod koniec lat dziewięćdziesiątych machine learning zaczęło być rozwijane szczególnie dynamicznie – w związku z rosnącą popularnością sieci internetowej, programów komputerowych, a w XXI wieku wreszcie – także aplikacji.
W dzisiejszych czasach machine learning jest stosowane już niemal powszechnie. Każdy z nas się z nim spotyka – choć zwykle nie zdajemy sobie z tego sprawy. Oglądasz Netflixa? Analizuje on obejrzane przez ciebie produkcje i na tej podstawie podsuwa ci nowe propozycje – to także forma uczenia maszynowego. Jak zresztą przyznaje sam Netflix – wykorzystują oni machine learning w znacznie szerszym zakresie, między innymi w celu optymalizacji kodowania wideo i audio – https://research.netflix.com/research-area/machine-learning
Kochasz podróżować, a Google regularnie podsuwa ci reklamy wycieczki do Egiptu? To znów rezultat gromadzenia i analizowania danych – na podstawie odwiedzanych przez ciebie stron stwierdzono, że prawdopodobnie właśnie taka wycieczka może cię zainteresować. Posługujesz się skrzynką mailową? To dzięki machine learning odsiewa ona spam od zwykłych maili. Robisz zdjęcia za pomocą komórki? Machine learning umożliwiło rozpoznawanie twarzy.
Gdzie wykorzystuje się machine learning?
Uczenie maszynowe wykorzystywane jest w sprzedaży, sektorze rozrywki, w usługach finansowych. W transporcie, a nawet w branży medycznej – może pomóc w szybszym analizowaniu danych, a przez to diagnozowaniu pacjentów i wdrożeniu właściwego leczenia.
Dzięki machine learning bank może wyławiać podejrzane transakcje kartą, a spółka ubezpieczeniowa oszacować potencjalne ryzyko wystąpienia szkody. Programy powstałe w oparciu o uczenie maszynowe pomagają analizować wielkie bazy danych, badać złożone problemy, szukać zależności i przewidywać rozwój wydarzeń. Czy tego chcemy, czy nie – programy posługujące się machine learning stały się częścią naszego codziennego życia.
Przyszłość, która nadeszła
O niektórych rozwiązaniach przywykło się mówić „technologia przyszłości”. W przypadku machine learning jednak ta przyszłość już nadeszła – po prostu jeszcze nie wszyscy zdają sobie sprawę, jak zaawansowane algorytmy sprawiają, że program do odtwarzania muzyki może podsunąć im odpowiednią piosenkę. Znaczenie machine learning będzie wciąż wzrastać – i będzie ono zyskiwać coraz szersze zastosowania na wielu polach.