Czym jest Machine Learning?
Uczenie maszynowe (machine learning) staje się coraz bardziej istotne we współczesnym świecie. Z uczenia maszynowego korzystają urządzenia codziennego użytku, takie jak smartfony czy automatyczne odkurzacze. Jest to również technologia szeroko wykorzystywana w biznesie i bankowości, np. do poznawania klientów, tworzenia spersonalizowanych ofert promocyjnych oraz wykrywania prób oszustw. Co więcej, urządzenia z filmów Sci-Fi sprzed kilkudziesięciu lat stają się powoli faktem, co jest możliwe dzięki zastosowaniu uczenia maszynowego (autonomiczne samochody, wirtualni asystenci).
Źródło danych: Google Trends
Jest to termin, który stał się bardzo popularny nie tylko wśród specjalistów, ale również w popkulturze. Potrafi wzbudzać skrajne emocje – jedną grupę osób omawiany temat może ekscytować, a w innej wzmagać poczucie strachu. Wzrastająca popularność uczenia maszynowego oraz wywoływane emocje przyczyniły się do powstania wielu mitów, a samo zagadnienie często jest błędnie rozumiane.
W niniejszym artykule przyjrzymy się bliżej uczeniu maszynowemu. Czym wspomniany termin właściwie jest? Jak odróżnić uczenie maszynowe od uczenia głębokiego i sztucznej inteligencji? Czy uczenie maszynowe jest szansą, a może zmartwieniem? Zapraszam do przeczytania dalszej części artykułu, w której uzyskasz odpowiedź na wspomniane pytania.
Definicja
Według angielskiej Wikipedii, uczenie maszynowe można rozumieć jako dziedzinę, która zajmuje się tworzeniem metod stosowanych do nauki komputerów. W tworzonych metodach wykorzystywane są duże zbiory danych, a samo uczenie maszynowe jest częścią sztucznej inteligencji (artificial intelligence). Algorytmy uczenia maszynowego tworzą model na podstawie danych treningowych, dzięki czemu mogą przewidywać i podejmować decyzje bez konieczności wcześniejszego zaprogramowania. Dobrą – a jednocześnie krótką – definicję uczenia maszynowego stworzył Arthur Samuel, który opisał uczenie maszynowe jako dziedzinę nauki dającą komputerom możliwość uczenia się bez wcześniejszego zaprogramowania.
Porównanie uczenia maszynowego do programowania
Programowanie polega na rozpisaniu poleceń, do których komputer będzie się stosował w zależności od sytuacji – zachowanie komputera jest z góry określone. Rzeczywistość jest na tyle skomplikowana, że trudnym lub niemożliwym jest przewidzenie wszystkich scenariuszy, z którymi komputer będzie musiał się zmierzyć. Komputer musi wykształcić umiejętność improwizacji w momencie, gdy jeden z parametrów/czynników będzie inny niż założono podczas etapu programowania. Jeżeli będzie on polegać na ścisłych zasadach ustalonych podczas etapu programowania – bez umiejętności improwizacji – to w momencie napotkania nieprzewidywalnego czynnika może zakończyć swoją pracę. Nie będzie w stanie rozwiązać zaistniałego problemu, co skończy się błędem lub nieprawidłowym wynikiem.
Uczenie maszynowe jest rozwiązaniem tego problemu. Nie wymaga rozpisania wszystkich możliwych scenariuszy na etapie programowania, dzięki czemu komputer jest bardziej elastyczny i niezawodny. Istotnym elementem jest również fakt, że stworzenie modelu uczenia maszynowego przebiega znacznie szybciej niż przewidywanie wszystkich możliwych scenariuszy, po czym zapisywanie dokładnych instrukcji w kodzie. Komputer uczy się na podstawie przekazanych danych odpowiadać na konkretne pytania, dzięki czemu nie musi sprawdzać naszych ścisłych instrukcji i zdecydowanie mniej sytuacji go zaskoczy. Model uczenia maszynowego umożliwia komputerowi pewną improwizację, dzięki której jest mniej podatny na błędy.
W klasycznym programowaniu dane oraz algorytm są wprowadzane do komputera. Algorytm nakazuje komputerowi pewne działania, dzięki którym możliwe jest przetworzenie danych i zwrócenie wyników. Wprowadzony do komputera algorytm jest w całości stworzony przez człowieka, a komputery przez to są mniej elastyczne i bardziej podatne na błędy.
Uczenie maszynowe polega na wprowadzeniu do komputera danych oraz wyników, które powinny zostać zwrócone. Na podstawie danych oraz wyników komputer samodzielnie tworzy algorytm, którym będzie się posługiwał do przetwarzania danych. Komputer dostosowuje algorytm w taki sposób, żeby zwracane wyniki były jak najbardziej podobne do wprowadzonych wyników. Dzięki temu komputery są bardzo elastyczne i mniej podatne na błędy.
Rodzaje uczenia maszynowego
Generalnie wyróżnia się trzy typy uczenia maszynowego: uczenie nadzorowane (supervised learning), uczenie nienadzorowane (unsupervised learning) oraz uczenie przez wzmacnianie (reinforcement learning).
Uczenie nadzorowane zostało zostało zaprezentowane we wcześniejszym rozdziale. Polega na tym, że do komputera wprowadza się dane wejściowe oraz oczekiwane wyniki, a komputer znajduje regułę lub funkcję, która połączy dane wejściowe z oczekiwanymi wynikami. Jeżeli zwracane przez komputer wyniki są zbyt często nieprawidłowe, to wznawia się naukę komputera i podczas treningu wprowadza się inne dane, co ma na celu polepszenie dokładności stworzonego modelu uczenia maszynowego. Dla uczenia nadzorowanego charakterystyczne jest to, że komputer uczy się na podstawie danych oraz odpowiedzi, które powinien zwrócić w poszczególnych sytuacjach. Podczas treningu prawidłowe odpowiedzi są znane, a komputer próbuje dostosować algorytm w taki sposób, żeby na podstawie wprowadzonych danych zwrócić identyczne wyniki.
W uczeniu nienadzorowanym do algorytmu nie wprowadza się oczekiwanych wyników. Algorytmy uczenia nienadzorowanego szukają we wprowadzonych danych ukrytych reguł oraz szablonów. Jednym z najpopularniejszych algorytmów uczenia nienadzorowanego są algorytmy klastrowania (clustering algorithms), które dzielą wprowadzone dane na grupy. Wspomniane algorytmy stosuje się na przykład do klasyfikacji klientów sklepów spożywczych, na podstawie czego tworzy się odpowiednie oferty promocyjne, które trafiają do konkretnych grup.
W uczeniu przez wzmacnianie charakterystyczne jest to, że nie przygotowuje się danych treningowych. Komputer sam zbiera dane z określonego środowiska (np. z gry, giełdy, samochodu), po czym na ich podstawie podejmuje pewne decyzje. Przed rozpoczęciem nauki określamy komputerowi cel, do którego powinien dążyć na podstawie zbieranych danych. Jeżeli podjęta decyzja będzie prawidłowa i przybliży komputer do celu, to jest on nagradzany. Jeżeli decyzja jest błędna, to komputer jest karany. Jest to proces, w którym komputer zbiera doświadczenie i odpowiednio dostosowuje algorytm, co prowadzi do samodoskonalenia i podejmowania lepszych decyzji w przyszłości. W podobny sposób uczą się istoty żywe.
Organizacja pracy nad modelem uczenia maszynowego (Machine Learning Workflow)
Sposobów pracy nad modelem uczenia maszynowego może być wiele, a każdy z nas może do tego podchodzić inaczej. W tym rozdziale zostanie zaprezentowany przykładowy sposób pracy nad modelem uczenia maszynowego, który dobrze uogólnia cały proces. Warto zaznaczyć, że w omawianym modelu zaprezentowane kroki nie muszą być zawsze wykonywane jeden po drugim i nie są one jednorazowe – każdy z nich jest powtarzany, w zależności od potrzeb.
Pierwszym krokiem jest zebranie i przygotowanie danych. Jest to etap, w którym musimy określić jakie dane wykorzystamy do treningu oraz jakie wyniki powinny zostać zwrócone przez model (prawidłowe odpowiedzi). Przed rozpoczęciem treningu dane muszą zostać odpowiednio sprawdzone, wyczyszczone i przetworzone.
Podczas drugiego etapu wybierany jest odpowiedni model uczenia maszynowego. Modeli uczenia maszynowego jest wiele, a każdy z nich będzie miał swoje wady i zalety. Wybór odpowiedniego modelu będzie zależał od zadania, które nauczony komputer będzie wykonywał.
Trzecim etapem jest dopasowanie wybranego modelu do wprowadzonych danych. Model może być rozumiany jako schemat, który jest modyfikowany w taki sposób, żeby wpasowywał się w dostarczone dane. W rezultacie powstaje unikatowy model, który pasuje do wprowadzanych danych treningowych. Jest to etap, w którym komputer uczy się algorytmu, na podstawie którego będzie w przyszłości udzielał odpowiedzi i podejmował odpowiednie decyzje.
Czwartym krokiem jest określenie dokładności stworzonego modelu. W zależności od wybranego rodzaju modelu, istnieje wiele parametrów, które są pomocne podczas określania jego dokładności. Jeżeli uznamy, że dokładność stworzonego modelu nie jest zadowalająca, to możemy ją poprawić.
Ostatnim etapem jest wykorzystanie modelu do zadania, do którego został on stworzony. Wprowadzane są do niego dane, z którymi wcześniej nie miał styczności i na ich podstawie model uczenia maszynowego podejmuje odpowiednie decyzje. Jest to etap, w którym stworzony model uczenia maszynowego ma styczność ze środowiskiem produkcyjnym, powinien rozwiązywać realne problemy i przynosić nam zyski (zaoszczędzać czas i pieniądze, automatyzować pewne procesy).
Praca nad stworzeniem modelu uczenia maszynowego to jedno, jednak kolejnym problemem jest stworzenie środowiska pracy, dzięki któremu możliwym będzie wdrożenie modelu do produkcji. Zbiorem prawidłowych zasad i praktyk podczas pracy nad projektem uczenia maszynowego jest MLOps, o którym powstał już inny artykuł. Jeżeli jesteś tym zainteresowany, to zapraszam do zapoznania się z nim.
Wykorzystanie uczenia maszynowego
Wymienione poniżej dziedziny są tylko przykładowymi. W rzeczywistości uczenie maszynowe wykorzystywane jest do jeszcze innych zadań, a zadania omówione w tym rozdziale są jednymi z najpopularniejszych.
Uczenie maszynowe wykorzystywane jest do rozpoznawania mowy. Do tego celu wykorzystuje się technologię przetwarzania języka naturalnego, która umożliwia przekształcenie słów (dźwięku) na tekst. Format tekstowy jest zrozumiały dla komputera i na jego podstawie może odpowiednio reagować. Przykładem technologii wykorzystującej rozpoznawanie mowy są wirtualni asystenci, tacy jak Siri, Alexa czy Asystent Google.
Popularnym wykorzystaniem uczenia maszynowego jest również obsługa klientów. Przedsiębiorstwa prowadzące swoją działalność w Internecie coraz częściej korzystają z usług wirtualnych agentów (chatbotów), które pomagają klientom w wielu kwestiach. W ostatnim czasie do wielu z nas zadzwonił wirtualny agent, który starał się zaprezentować pewną ofertę sprzedażową (np. fotowoltaikę). Po każdym następnym razie na pewno byliśmy w stanie rozpoznać, że rozmawiamy z maszyną, jednak przy pierwszej rozmowie z wirtualnym agentem spora część osób mogła nie rozpoznać, że nie rozmawia z człowiekiem.
Komputery są również uczone wyciągania istotnych informacji z obrazów – zdjęć oraz filmów. Technologia ta wykorzystywana jest do identyfikowania odpowiednich obiektów na obrazach (np. pochodzących z monitoringu), do tagowania zdjęć na portalach społecznościowych, do wykrywania niepokojących zmian na zdjęciach radiologicznych oraz przez autonomiczne samochody.
Przy pomocy uczenia maszynowego tworzy się również systemy zdolne do tworzenia rekomendacji. Komputer szuka w danych odpowiednich trendów oraz ukrytych szablonów, po czym na ich podstawie tworzy przyszłe strategie sprzedażowe. Technologię tę wykorzystuje się również do tworzenia spersonalizowanych ofert promocyjnych – w zależności od przekonań, potrzeb oraz upodobań klienta – co znacząco zwiększa szansę na skuteczność przesyłanej oferty.
Z uczenia maszynowego bardzo często korzystają banki i inne instytucje finansowe, np. do wykrywania prób oszustw. Liczba wykonywanych transakcji w bankach jest na tyle duża, że człowiek nie byłby jej w stanie kontrolować. Z pomocą przychodzą komputery, które wykrywają potencjalne próby oszustw poprzez rozpoznawanie nietypowych transakcji.
Wyzwania uczenia maszynowego
Sztuczna inteligencja (w tym uczenie maszynowe) z pewnością jest technologią, która w najbliższej przyszłości zrewolucjonizuje dotychczasowy świat. Każda rewolucja technologiczna posiada swoich przeciwników oraz zwolenników – jedni będą przerażeni nadchodzącymi zmianami, a drudzy będą ich z niecierpliwością wyczekiwać. Uczenie maszynowe większości z nas ułatwi życie, jednak są również osoby, dla których nadchodzące zmiany niekoniecznie będą korzystne. Do takich osób należą np. zawodowi kierowcy oraz sprzedawcy w sklepach, którzy w najbliższej przyszłości mogą zostać zastąpieni przez komputery. Kierowcy oraz sprzedawcy mogą lubić swoją pracę, a przebranżowienie nie należy do łatwych zadań, więc ich obawy dotyczące rozwoju sztucznej inteligencji są jak najbardziej zrozumiałe.
Z procesem przebranżowienia jedni poradzą sobie lepiej, inni gorzej, a jeszcze inni wcale. Grupy zawodowe, które mogą zostać zastąpione przez komputery w najbliższej przyszłości, są bardzo liczne i nie ograniczają się tylko do wspomnianych kierowców oraz sprzedawców. Wraz z rozwojem technologii powstaną nowe miejsca pracy, w większości wymagające znajomości komputerów, przez co nie będą to stanowiska przeznaczone dla każdego. Sytuacja ta może doprowadzić do wielu problemów, na przykład wzrostu bezrobocia oraz niezadowolenia społecznego.
Istotnym problemem są również kwestie prawne. Błędy przytrafiają się każdemu – zaczynając od człowieka, przechodząc przez zwierzęta, kończąc na maszynach. Każdy producent będzie dążył do jak najmniejszej liczby awarii oraz problemów, jednak w trakcie działania systemu uczenia maszynowego jest wiele elementów, które mogą zawieść. Konsekwencje błędów systemu uczenia maszynowego są dość zróżnicowane. Błąd wirtualnego asystenta (np. Siri) nie powinien wyrządzić wielkich szkód, a tym bardziej nie powinien przyczynić się do uszczerbku na zdrowiu lub śmierci.
Sytuacja wygląda inaczej w przypadku autonomicznych samochodów, w których najmniejszy błąd może skutkować śmiercią uczestnika ruchu drogowego. Problematycznym jest kwestia odpowiedzialności prawnej – kto w takim przypadku powinien odpowiadać za śmierć człowieka? Właściciel pojazdu, a może producent samochodu? Jest to temat na dłuższą dyskusję, w której można przedstawiać wiele perspektyw, jednak z pewnością odpowiedź na to pytanie nie będzie prosta. Stwarza to wiele problemów i prawdopodobne są dwa scenariusze: stworzymy sprawiedliwy system prawny i samochody będą w 100% autonomiczne lub ograniczymy autonomiczność samochodów, kierowca będzie wciąż niezbędnym elementem, a systemy uczenia maszynowego będą jedynie wspomagać bezpieczeństwo i komfort jazdy.
Lista potencjalnych problemów jest zdecydowanie dłuższa. Systemy uczenia maszynowego wymagają znacznych ilości danych – bardzo często wrażliwych danych. Stwarza to kolejne prawne problemy, a samo zbieranie, przetwarzanie i przechowywanie danych klientów jest już od kilku lat monitorowane i regulowane. Niektórzy wskazują na problemy związane ze stronniczością systemów uczenia maszynowego oraz pewnymi rodzajami dyskryminacji, które są zauważalne np. podczas procesów rekrutacji.
Artificial Intelligence, Machine Learning i Deep Learning – różnice
Sztuczna inteligencja (artificial intelligence), uczenie maszynowe (machine learning) i uczenie głębokie (deep learning) są ze sobą powiązane, jednak nie oznaczają tego samego. Najprościej mówiąc: uczenie głębokie jest rodzajem uczenia maszynowego, a uczenie maszynowe jest częścią sztucznej inteligencji.
Definicja uczenia maszynowego pojawiła się już wcześniej, a samo zagadnienie zostało poszerzone w niniejszym artykule, co z pewnością pomogło Ci w zrozumieniu omawianego zagadnienia. Zapoznałeś się również z hierarchią sztucznej inteligencji, uczenia maszynowego oraz uczenia głębokiego, jednak warto przyjrzeć się definicjom pozostałych dwóch pojęć, dzięki czemu lepiej zrozumiesz różnice.
Sztuczna inteligencja jest rodzajem inteligencji, którą charakteryzują się maszyny/komputery. Dzięki sztucznej inteligencji komputery są w stanie przyjmować dane, uczyć się na ich podstawie, zdobywać doświadczenie, po czym wykonywać określone zadania. Sztuczną inteligencję można również rozumieć jako zdolność komputerów do podejmowania racjonalnych decyzji na podstawie swoich doświadczeń, podobnie jak robi to człowiek. Jest to najbardziej ogólne pojęcie spośród omawianych. Sztuczna inteligencja maszyn może być osiągana na kilka sposobów, a jednym z nich jest uczenie maszynowe.
Uczenie głębokie jest podkategorią uczenia maszynowego. Jest to jeden ze sposobów nauki komputerów. Wyróżnia się tym, że cały proces nauki komputera jest nienadzorowany, czyli kontrola człowieka nie jest wymagana. Podczas uczenia głębokiego tworzy się sieci neuronowe (na wzór sieci neuronowych w mózgu żywej istoty), przetwarza się ogromne zbiory danych, a sam proces jest długi i wymaga znacznej mocy obliczeniowej. Komputer uczy się poprzez dążenie do określonego celu, jest nagradzany za podejmowanie prawidłowych decyzji i karany za podejmowanie złych decyzji, dzięki czemu zdobywa doświadczenie i z biegiem czasu staje się coraz lepszy.
Podsumowanie
Uczenie maszynowe zyskuje na znaczeniu i popularności z każdym rokiem. Jest to termin, który określa tworzenie metod nauki komputerów. Dzięki niemu komputery mogą samodzielnie się uczyć, zdobywać doświadczenie oraz podejmować (do pewnego stopnia) racjonalne decyzje.
Uczenie maszynowe od programowania odróżnia fakt, że zachowanie komputerów w określonych sytuacjach nie zależy tylko od instrukcji zapisanych w kodzie. Dzięki uczeniu maszynowemu komputery nie są ograniczone z góry ustalonymi zasadami, są bardziej samodzielne, niezawodne i elastyczne. Potrafią sobie radzić z nieprzewidzianymi sytuacjami oraz charakteryzują się pewnymi zdolnościami improwizacji. Proces podejmowania decyzji nauczonego komputera przypomina proces podejmowania decyzji przez człowieka.
Wyróżnia się trzy główne rodzaje uczenia maszynowego: uczenie nadzorowane, uczenie nienadzorowane oraz uczenie przez wzmacnianie. Każdy z wymienionych rodzajów charakteryzuje się innym podejściem do nauki:
– w uczeniu nadzorowanym komputer otrzymuje dane wejściowe oraz wyniki, które powinien zwrócić, po czym dostosowuje model w taki sposób, żeby zwrócić wyniki jak najbardziej zbliżone do tych, które wskazał mu człowiek.
– w uczeniu nienadzorowanym komputer otrzymuje same dane wejściowe, po czym szuka w nich ukrytych schematów i zasad. Znajduje we wprowadzonych danych trendy i zależności, na podstawie których jest w stanie dokonywać klasyfikacji, prognozowania oraz pomagać w podejmowaniu decyzji.
– w uczeniu przez wzmacnianie komputer otrzymuje cel, który ma osiągnąć. Samodzielnie zbiera dane z określonego środowiska, po czym na ich podstawie podejmuje decyzje mające przybliżyć go do określonego celu. Jeżeli podjęte decyzje przybliżą go do osiągnięcia celu, to zostaje nagrodzony. Jeżeli podjęte decyzje okażą się błędne, to komputer zostanie ukarany. Nauka poprzez nagradzanie i karanie przypomina naukę istot żywych, które zapamiętują swoje prawidłowe i błędne decyzje, po czym wyciągają z nich wnioski i w przyszłości podejmują lepsze decyzje.
Praca nad modelem uczenia maszynowego może zostać przedstawiona w 5 krokach: zebranie i przygotowanie danych; wybranie odpowiedniego modelu uczenia maszynowego; dopasowanie wybranego modelu do zebranych danych (trening); określenie dokładności stworzonego modelu; wykorzystanie modelu w praktyce. Sukces systemu uczenia maszynowego w środowisku produkcyjnym zależy dodatkowo od innych czynników, a przedstawione kroki dotyczą utworzenia samego modelu uczenia maszynowego. Zbiorem zasad i praktyk prowadzących do sukcesu projektu uczenia maszynowego w środowisku produkcyjnym jest MLOps, o którym powstał już inny artykuł.
Uczenie maszynowe jest coraz bardziej istotne w codziennym życiu i znajduje zastosowania między innymi w: rozpoznawaniu i przetwarzaniu języka naturalnego, przetwarzaniu obrazów, obsłudze klientów, wykrywaniu oszustw finansowych oraz systemach rekomendacyjnych.
Rozwój uczenia maszynowego z pewnością ułatwi życie wielu osobom, jednak sama technologia stwarza kilka istotnych problemów społecznych oraz prawnych. Problematyczna jest kwestia zastąpienia ludzi przez maszyny, przez co pracę stracić mogą liczne grupy zawodowe, np. sprzedawcy oraz kierowcy. Rozwój uczenia maszynowego może również prowadzić do sporów prawnych, czego przykładem może być odpowiedzialność za wypadki wynikające z błędów systemu uczenia maszynowego, których konsekwencją jest uszczerbek na zdrowiu lub śmierć istoty żywej.
Sztuczna inteligencja (artificial intelligence), uczenie maszynowe (machine learning) oraz uczenie głębokie (deep learning) są często stosowane zamiennie. Wspomniane terminy są ze sobą powiązane, jednak oznaczają co innego. Sztuczna inteligencja jest pojęciem najbardziej ogólnym, którym określa się zdolność komputerów do podejmowania racjonalnych decyzji. Uczenie maszynowe jest częścią sztucznej inteligencji i zajmuje się tworzeniem modeli stosowanych do uczenia komputerów. Uczenie głębokie jest jednym ze sposobów uczenia komputera i jest to podkategoria uczenia maszynowego.
Uczenie maszynowe jest pojęciem, które staje się coraz bardziej istotne. Może wzbudzać skrajne emocje w społeczeństwie, a poszczególne grupy społeczne mogą być jego zwolennikami lub przeciwnikami. Niezależnie od upodobań społecznych, uczenie maszynowe jest dziedziną, która jest stale rozwijana i nic nie wskazuje na to, żeby miało się to zmienić. Ofert pracy związanych z uczeniem maszynowym nie brakuje, coraz więcej organizacji zaczyna z niego korzystać, a sama technologia jest coraz lepsza i rozwiązuje wiele skomplikowanych problemów. Jest to przyszłościowa dziedzina, która gwarantuje ciekawą oraz dobrze płatną pracę. Zapraszam do zapoznania się z ofertą naszych szkoleń, podczas których poznasz narzędzia niezbędne do uczenia komputerów.