Trudno wyobrazić sobie współczesny świat bez sprawnej i szybkiej diagnostyki medycznej, rozpoznawania mowy czy rozpoznawania obrazów. Mniej lub bardziej ważne decyzje podejmujemy na podstawie analizy danych. W gąszczu informacji jest to możliwe dzięki wykorzystaniu Machine Learning.
Machine Learning – co to takiego?
Machine Learning wykorzystuje algorytmy matematyczne, dzięki którym „uczy” się danych oraz poddaje je analizie, dzięki czemu może tworzyć przewidywania. Pomaga to podejmować decyzje w przyszłości.
Dzięki ML komputery są w stanie komunikować się z ludźmi, autonomiczne samochody mogą bezpiecznie poruszać się po drogach, a przewidywanie klęsk naturalnych czy zagrożeń terrorystycznych jest o wiele bardziej skuteczne.
To bardzo konkretne, szczegółowe zastosowania, jednak podstawową cechą uczenia maszynowego jest to, że pozwala lepiej wykorzystać dane, które cały czas zbieramy i przechowujemy do uzyskania naukowych odpowiedzi na pytania, które sobie stawiamy.
Początki Machine Learning
Machine Learning stało się popularne całkiem niedawno, ale historia uczenia maszynowego jest o wiele dłuższa. Przechowywanie i przetwarzanie danych towarzyszy nam od stuleci. Już w starożytności zbierano informacje o ilości magazynowanej żywności, przeprowadzano też spisy powszechne.
Kiedy z biegiem lat danych przybywało, ich analiza stawała się trudniejsza. Metody takie jak nacinanie patyków przestały być wystarczające. Konieczne były zastosowanie nowych narzędzi.
Przełomowym momentem okazała się siedemnastowieczna epidemia dżumy, dziesiątkująca mieszkańców Anglii. To wówczas zaczęto publikować pierwsze zbiory danych dotyczące zdrowia publicznego. Niektórzy uznają to nawet za moment narodzin Big Data.
Niestety stworzenie zbiorów danych, a ich sprawne przetwarzanie, to dwie różne sprawy. Przez ponad dwieście lat był to żmudny, powolny proces. Jeszcze w drugiej połowie XIX wieku zebranie i przeanalizowanie danych z przeprowadzonego w Stanach Zjednoczonych spisu powszechnego w zajmowało nawet dziesięć lat.
Dopiero kiedy Herman Hollerith skonstruował pierwszą elektryczną maszynę analityczno-liczącą, udało się ten proces skrócić do „tylko” dwóch lat. Nazwisko Holleritha może wydawać Ci się znajome. Utworzona przez niego firma, po kilku fuzjach stała się znana jako IBM.
W latach 50. dwudziestego wieku Alan Turing, którego pewnie kojarzysz z rozpracowania Enigmy, niemieckiej maszyny szyfrującej, zadał pytanie: „czy maszyny mogą myśleć? Twierdził, że jeżeli maszyna będzie w stanie przekonać człowieka, że wcale nie jest maszyną, to będzie to świadczyć o osiągnięciu przez nią sztucznej inteligencji.
Sprawdzian ten, nazywany Testem Turinga, mogłeś przechodzić w ostatnich latach niejednokrotnie, np. odbierając telefon od bota, który mógł przedstawić Ci ofertę lub poprosić o opinię w jakiejś sprawie. Jeżeli Twoje odpowiedzi nie zaskoczyły bota, czyli nie wyszły ponad scenariusz zaplanowany w algorytmie, to zaliczył on Test Turinga na piątkę.
Ale zanim pojawiły się boty, zaczęto pracować nad uczącym się oprogramowaniem. Artur Samuel już w 1952 roku stworzył program do gry w warcaby, który uczył się w trakcie gry, poprawiając swoje wyniki za każdym razem.
Pięć lat później Frank Rosenblatt opracował pierwszą komputerową sieć neuronową, która wczytując obrazy, generowała etykiety i kategoryzowała ilustracje. W jednej z następnych sekcji tego artykułu wykorzystamy podobny przykład do opisania jak działa Machine Learning.
Uczenie maszynowe w biznesie
Już w latach sześćdziesiątych zeszłego wieku przedstawiciele handlowi mogli już korzystać z algorytmu ‘najbliższego sąsiada” – komputery szukając powtarzających się schematów, planowały kolejne punkty na trasie sprzedawcy.
W kolejnej dekadzie badacze z Uniwersytety Stanforda stworzyli robota znanego pod nazwą „the Cart”, który był w stanie omijać przeszkody. Położyli tym samym fundament do współczesnych pojazdów autonomicznych.
Coraz więcej firm oszczędza setki godzin i tysiące dolarów korzystając z ML. Jedną z nich jest AES, firma zajmująca się czystą energią, a zarazem jeden z większych operatorów farm wiatrowych. Turbiny, aby mogły bezpiecznie pracować, wymagają okresowych kontroli. Łopaty takiej turbiny mogą mieć nawet ponad 40 metrów długości i poddane są działaniu sporych sił oraz narażone na uszkodzenia. Jeżeli ulegnie ona awarii, może dojść do kosztownego uszkodzenia turbiny, a w skrajnych przypadkach do niebezpiecznego wypadku.
Podczas kontroli pracownicy badają, czy na powierzchni łopaty nie pojawiają się oznaki przyszłych kłopotów – pęknięcia, wygięcia i inne odstępstwa od normy. Dostęp do turbin jest utrudniony, ale korzystając z dronów, można podlecieć do płatów i wykonać dokładną dokumentację fotograficzną. Rzeczoznawcy są w stanie na podstawie zdjęć dokonać analizy i ocenić, czy turbina wymaga remontu, czy też może nadal bezpiecznie działać.
Chociaż wykorzystanie dronów znacznie skraca czas audytu farm wiatrowych, to nadal pozostaje do przejrzenia kilkanaście tysięcy zdjęć. Wykorzystując mechanizmy uczenia naukowego specjaliści z AES wytrenowali model, który odrzuca wszystkie zdjęcia przedstawiające prawidłowo wyglądające łopaty, zostawiając do oceny eksperckiej jedynie te, które mają znamiona uszkodzenia. Dzięki temu rozwiązaniu czas wykrycia problemu skraca się z wielu tygodniu, to kilku dni. Oszczędność czasu i kosztów jest więc znaczna.
Machine learning, czyli przyszłość, która nadeszła
Ponieważ ilość gromadzonych na świecie danych rośnie bardzo szybko, korzystanie z Machine Learning staje się najbardziej wydajnym sposobem na ich realne wykorzystanie. Obliczono, że o ile w 2010 roku na świecie dostępnych było łącznie ok. 2 Zetabajtów danych, to pod koniec 2022 roku liczba ta sięgnie już niemal 100 Zetabajtów.
Nie dziwi więc fakt, że Machine Learning towarzyszy nam na każdym kroku. Rozpoznawanie twarzy na zdjęciach, a nawet propozycje filmów, jakie wyświetlają się nam na YouTubie czy Netflixie – za tym wszystkim stoi uczenie maszynowe. Dlatego warto zrozumieć, jak działa.
Jak wygląda uczenie maszynowe w praktyce?
Wyobraź sobie sytuację, w której musisz stworzyć system, którego zadaniem jest rozpoznaniu napoju – czy jest nim wino, czy też piwo. W Machine Learning nazywamy taki system modelem, który należy wytrenować.
Aby osiągnąć sukces, nasz model powinien przez większość czasu poprawnie wskazywać napój. Trenowanie modelu wymaga danych. W tym przypadku może to być kolor oraz zawartość procentowa alkoholu.
Zbieranie danych
Aby zbadać te cechy, kupujemy kilka rodzajów piwa oraz wina i przeprowadzamy badania z wykorzystaniem spektrometru, do określenia koloru, oraz alkoholomierza, który poda nam zawartość alkoholu w procentach.
Zbieranie danych jest jednym z najważniejszych etapów, gdyż od ich ilości i jakości zależy to, jak dobrze model będzie działał. W naszym przypadku będzie to prosta tabelka z trzema kolumnami określającymi kolor, zawartość alkoholu oraz rodzaj testowanego alkoholu – piwo, czy wino?
Przygotowanie danych
Ważne, aby dane w tabeli zrandomizować. Nie chcemy, żeby model uznał, iż kolejność wprowadzania danych ma znaczenie. Na tym etapie dobrze jest wizualizować dane. Jeżeli wprowadziliśmy zdecydowanie więcej danych dotyczących wina niż piwa, to wyniki mogą być nieobiektywne.
W kolejnym etapie dzielimy dane na dwie nierówne części. Większą z nich wykorzystamy do trenowania modelu, a mniejszą do jego późniejszej oceny. Jest to ważne, gdyż nie chcemy, aby oceniany model bazował na tych samych danych, na których się uczył. Interesuje nas jego zdolność do rozpoznawania rodzaju napoju w przypadku innych danych.
Wybór modelu
Po podzieleniu danych należy wybrać model, gdyż w zależności od rodzaju danych mamy do wyboru różne opcje. Inne modele sprawdzą się przy danych wizualnych, dźwiękowych, a jeszcze inne przy liczbowych.
Ponieważ w naszym przypadku są to proste dane liczbowe, wystarczającym rozwiązaniem będzie model liniowy. Więcej modeli przedstawiamy w kolejne sekcji artykułu.
Trenowanie modelu
Po wybraniu modelu możemy przejść do trenowania. Wykorzystując dane, możemy stopniowo poprawiać zdolności modelu do rozpoznawania właściwych napoi. Inżynierowie z Google porównują to do nauki jazdy samochodem.
Początkującemu kierowcy trudno jest skoordynować ruchy rąk i nóg, pamiętając jednocześnie o zasadach ruchu drogowego i innych uczestnikach ruchu, jednak z czasem jazda staje się płynna, niemal automatyczna. Podobnie jest z trenowanym modelem.
Tu przyda się trochę prostej matematyki. Wracając do naszego przypadku, możemy go przedstawić w postaci równania y = m*x + b, gdzie „x” to dane, które dostarczamy, „m” to nachylenie linii, „b” to punkt przecięcia z osią y, a „y” to wartość dla określnej pozycji „x”. Ponieważ „x” to dane, które dostarczamy do modelu, a „y” jest wynikiem, możemy zmieniać jedynie wartości „m” oraz „b”.
W procesie Machine Learning występuje wiele „m”, gdyż trening może zakładać wiele cech. Ich zbiór nazywamy macierzą wag (weights). Tymczasem „b” grupują się w macierz odchyleń (biases).
Rozpoczynając uczenie, zaczynamy od inicjowania losowych wartości, co sprawia, że początkowo model jest bardzo niedoskonały. Możemy jednak porównać, wyniki treningu z oczekiwanym rezultatem i zapętlić go. Każda pętla nazywana jest jednym krokiem treningowym (one training step).
W naszym przypadku pierwsza linia oddzielająca wyniki wskazujące na piwo i wino przebiega w sposób dość przypadkowy, jednak z każdą iteracją, czyli każdym podjętym krokiem, linia coraz dokładniej rozgranicza wyniki określające jeden z dwóch napoi.
Ewaluacja
Po kilku seriach treningu możemy przejść do ewaluacji, czyli sprawdzenia naszego wytrenowanego modelu z wykorzystaniem danych, których do tej pory nie używaliśmy. Wspomnieliśmy o podziale danych jeszcze przed wyborem modelu. Google sugeruje, aby do treningu użyć około 80% danych, a 20% zostawić na ewaluację.
Strojenie hiperparametrów
Uzyskaliśmy już dobrze wytrenowany model, ale możemy sprawić, aby był jeszcze lepszy. Służy temu strojenie hiperparametrów, ale wcześniej musimy zrozumieć, czym one są. Wytłumaczenie jest dość proste. Zwykły parametr wyliczany jest przez algorytm podczas uczenia maszynowego, podczas gdy hiperparametr to ten dodany ręcznie przez użytkownika podczas testowania.
W naszym przypadku może to być ilość kroków treningowych. Wyświetlanie danych modelowi wiele razy może prowadzić do większej dokładności. Innym z parametrów jest szybkość uczenia się modelu. Możemy to wyobrazić sobie w formie wizualnej, patrząc na wykres. To jak daleko przesunie się linia podczas każdego kroku w oparciu o dane z poprzedniego kroku daje nam szansę na przewidzenie, ile kroków jest potrzebnych do najlepszego wyuczenia modelu.
Ponieważ dostrajanie hiperparametrów może być czasami uznane bardziej za sztukę, niż naukę, to należy wyznaczyć jej granice, gdyż pełne dostrojenie parametrów, o ile w ogóle możliwe, może zająć zbyt dużo czasu.
Predykcja
Dotarliśmy do najważniejszego etapu uczenia maszynowego – predykcji. Możemy wykorzystać przygotowany i przetrenowany model do określenia czy badany napój to wino, czy piwo. Co ważne, wynik będzie wynikiem działania algorytmu, bez korzystania z naszej wiedzy o alkoholach, czy też testów organoleptycznych. Otrzymujemy w ten sposób możliwość szybkiego wykonywania badań w przyszłości.
Modele Machine Learning
Na najwyższym poziomie jesteśmy w stanie wyróżnić dwie grupy modeli: nadzorowane (supervised) i nienadzorowane (unsupervised).
Modele uczenia nadzorowanego
Uwzględniają one szereg funkcji, które przetwarzają dane wejściowe, bazując na serii przykładowych par wejście-wyjście. Modele uczenia nadzorowanego dzielą się na dwie podkategorie: regresję oraz klasyfikację.
Modele regresji
W przypadku regresji dane wyjściowe są ciągłe, a więc takie jak np. wiek, czy cena. Najczęściej spotykany jest model regresji liniowej.
Bardziej zaawansowanym modelem jest regresja wielomianowa, kiedy zamiast linii dopasowania uzyskujemy krzywą.
Trzecim popularnym modelem regresji jest drzewo decyzyjne. Składa się ono z węzłów, a im jest ich więcej, tym dokładniej wytrenowany zostanie model.
Na drzewach decyzyjnych bazuje równie czwarty model – random forest, czyli losowy las złożony z wielu drzew decyzyjnych. Pomaga on zmniejszyć ryzyko błędów, jakie może pojawić się przy pojedynczym drzewie.
Wreszcie równie popularnym, wielowarstwowym modelem regresywnym jest sieć neuronowa. Bazuje one na połączeniach w ludzkim mózgu.
Modele klasyfikacji
Modele te do przewidywania używają klasyfikacji wartości dyskretnych, a więc takich jak płeć (kobieta/mężczyzna), czy też prawda-fałsz. Wśród tych modeli wyróżniamy regresję logistyczną, zbliżoną do regresji liniowej, ale przewidującą prawdopodobieństwo wystąpienia skończonej liczby wyników, zazwyczaj dwóch.
Kolejnym modelem jest Support Vector Machine, który odseparowuje różne elementy, umieszczając je w zoptymalizowanych i oddzielnych grupach.
Model cech niezależnych, lub też naiwny klasyfikator Bayesa wykorzystuje metodę wnioskowania statystycznego, w którym aktualizuje się prawdopodobieństwo subiektywne w oparciu o dotychczasowe prawdopodobieństwo oraz nowe dane.
Do modeli klasyfikacji, podobnie jak w przypadku modeli regresji należą drzewa decyzyjne, random forest oraz sieci neuronowe, jednak w tym przypadku na wyjściu otrzymujemy wartości dyskretne, a nie ciągłe.
Modele uczenia nienadzorowanego
Podstawowym wyróżnikiem tych modeli jest brak odniesienia do oznaczonego wyniku, czyli algorytm sam próbuje znaleźć zależności. Na tej podstawie działa algorytm dobierający nam kolejny serial do obejrzenia na Netflixie.
Modele nienadzorowane dzielą się na systemy rekomendacyjne, odpowiedzialne za przewidywanie sekwencji, szukające podobieństw metody klasteryzacji, oraz modele redukcji wymiarów, które szukają zależności.
Klasteryzację wykorzystuję się podczas segmentacji klientów, klasyfikacji dokumentów, czy też przeszukiwaniu ich pod kątem oszustw. Ten model okazuje się pomocny m.in. w sprawdzaniu, czy praca naukowa nie jest plagiatem.
Różnice między uczeniem maszynowym a sztuczną inteligencją
Uczenie Maszynowe i Sztuczna Inteligencja są często wymawiane jednym tchem. Przyzwyczailiśmy się do zapisu ML/AI sugerującego, że oba terminy mogą być stosowane zamiennie, jednak jest to błąd.
Sztuczna inteligencja jest terminem szerszym. Inteligentne komputery korzystają z AI, żeby myśleć jak ludzie, podczas gdy uczenie maszynowe to sposób, w jaki komputery nabywają tych umiejętności. Mamy więc do czynienia z powtarzającym się cyklem, w którym sztuczna inteligencja kształci się z wykorzystaniem uczenia maszynowego, następnie modele ML optymalizowane są przez osoby zajmujące się analizą danych (Data Scientists), po czym proces się powtarza.
Trzecim wymiarem, o którym warto wspomnieć jest Deep Learning, czyli uczenie głębokie. To obecnie jedna z najszybciej rozwijających się gałęzi sztucznej inteligencji. W jej ramach tworzone są sieci neuronowe.
W przeciwieństwie do Machine Learning nie wymaga nadzoru ani kontroli człowieka, natomiast potrzebuje dużych ilości danych, aby model mógł je poprawnie zinterpretować. Jednym z przykładów wykorzystania Deep Learning jest Translator Google.
Machine learning w chmurze
Na brak danych nie możemy narzekać. Zbliżając się do przełomowej liczby 100 Zetabajtów, coraz wyraźniej widać, że do sprawnego i bezpiecznego przetwarzania danych potrzebna jest duża moc obliczeniowa. Tę najłatwiej znaleźć w chmurze.
Omawiając modele uczenia maszynowego, przedstawiliśmy tylko te podstawowe, ale w realnym zastosowaniu bywają one bardzo złożone. To również sprawia, że aby z nich korzystać, potrzeba większej mocy obliczeniowej. Usługi chmurowe są w tym przypadku najbardziej efektywną kosztowo opcją, którą jednocześnie szybko i łatwo można wdrożyć.
Chmura Google już od wielu lat pracuje nad swoimi rozwiązaniami. Jednym z najważniejszych projektów badawczych firmy jest Google Brain, oparty o Deep Learning. Od samego początku, czyli od 2011 roku celem było zbudowanie wielkoskalowego systemu oprogramowania do głębokiego uczenia.
W raz z rozwojem technologii programiści zyskali dostęp do takich usług jak Google Cloud AutoML, Google Cloud AI Platform, Google Cloud Speech-to-Text, Google Cloud CIsion AI, Contact Center AI, Google Cloud Text-to-Speech, Vision AI czy Google Cloud Natural Language.
W zeszłym roku firma udostępniła w ramach Google Cloud nową zarządzaną platformę uczenia maszynowego – Vertex AI. Łączy ona usługi Google Cloud związane z uczeniem maszynowym w ujednoliconym interfejsie użytkownika i interfejsie API. Jej celem jest zapewnienie narzędzia do łatwego trenowania i porównywania modeli zarówno za pomocą AutoML, jak i niestandardowego szkolenia kodu. Wszystkie wyszkolone modele są przechowywany w jednym, centralnym repozytorium modeli i można je wdrażać w tym samych punktach końcowych w Vertex AI.
Wykrywanie wzorców jest istotne dla twórców aplikacji. Obecna technologia sprawia, że zadanie to, staje się o wiele łatwiejsze.