Rozwój sztucznej inteligencji, a wraz z nią uczenia maszynowego, nabrał w ostatnich latach dużego rozpędu. Ciągłe dążenie do zwiększenia mocy obliczeniowej komputerów dało możliwość wykorzystania algorytmów oraz aparatu matematycznego stworzonych w drugiej połowie XX wieku na niespotykaną dotąd skalę. Mając w perspektywie rychłe nadejście komercyjnego komputera kwantowego, można powoli zacząć obawiać się scen rodem z filmów z Arnoldem Schwarzeneggerem w tytułowej roli Terminatora. Nie wybiegając jednak za daleko w przyszłość, a skupiając się na teraźniejszości, postanowiłem sprawdzić, jakie możliwości daje dostępna dzisiaj technologia oraz czy można wykorzystać ją w predykcji rozprzestrzeniania się choroby COVID-19.

Czym jest uczenie maszynowe?

W sieci można znaleźć wiele definicji uczenia maszynowego: ideologiczne, ściśle matematyczne, a nawet i filozoficzne. Próbując samodzielnie zdefiniować to pojęcie, stwierdziłem, że najlepiej skupić się na porównaniu uczenia maszynowego z klasycznym programowaniem.

Porównanie uczenia maszynowego z tradycyjnym programowaniem

1) Porównanie uczenia maszynowego z tradycyjnym programowaniem

Pomijając wszelakie metodologie wytwarzania oprogramowania (obiektowe, strukturalne, funkcyjne itp.), większość z nas wie i rozumie, na czym polega tradycyjne programowanie: posiadając dane wejściowe oraz stosując odpowiedni do rozwiązania danego problemu algorytm, otrzymujemy rezultaty – dane wyjściowe.

Przykładowo: algorytmy używane w bankowości są z góry zdefiniowane, a dzięki ich dokładnej implementacji nie martwimy się, czy przelew internetowy, który wyślemy, na pewno dojdzie do odbiorcy i saldo na naszych rachunkach będzie się zgadzać.

Przykładowy algorytm w programowaniu tradycyjnym

2) Przykładowy algorytm w programowaniu tradycyjnym

Wygląda więc na to, że tworząc poprawny algorytm, jesteśmy w stanie rozwiązać dowolne zadanie, i jest to całkowita prawda. Problem pojawia się jednak, kiedy stworzenie takiego algorytmu jest nietrywialne, a czasami wręcz niemożliwe do zrobienia.

Dobrym przykładem takiego problemu (pozostając w strefie finansów) byłby algorytm przewidujący z wyprzedzaniem dokładne ceny akcji spółek na giełdzie – nie ma tutaj sztywnych ram i zasad, które opisywałyby zachowanie kursu akcji. Na ostateczną cenę wpływają setki, jak nie tysiące, różnych zmiennych, niekiedy pojedyncze nieprzewidywalne decyzje prezesów czy choćby katastrofy naturalne. Fizycznie niemożliwe jest zaprojektowanie oraz zaimplementowanie takiego algorytmu, który w sposób dokładny rozwiązywałby ten problem. Co więcej – nawet jeśli chcielibyśmy podjąć próbę stworzenia algorytmu, który chociaż w sposób przybliżony określałby zachowanie przyszłej ceny danych aktywów (np. zwracał informację czy jutro cena wzrośnie czy zmaleje) – byłoby to bardzo karkołomne zadanie, wymagające ogromnej wiedzy domenowej z dziedzin maklerskich oraz bardzo skomplikowanych zależności wynikających z mnogości zmiennych, które wpływałyby na wynik.

Z pomocą przychodzi tutaj właśnie uczenie maszynowe, czyli poniekąd odwrócenie dziedziny problemu – zamiast wyliczać konkretne wartości wyjściowe przy pomocy określonego algorytmu (tak, jak ma to miejsce w tradycyjnym programowaniu), spróbujmy znaleźć algorytm, który w sposób możliwie najdokładniejszy odwzoruje znane nam dane wejściowe na dane wyjściowe. Genialne w swojej prostocie podejście poparte solidnymi równaniami matematycznymi otwiera nieograniczone wręcz możliwości rozwiązywania problemów, które byłyby trudne, a w większości przypadków niewykonalne, w sposób tradycyjny.

Schemat uczenia maszynowego

3) Schemat uczenia maszynowego

W skrócie – uczenie maszynowe to nic innego, jak znalezienie algorytmu rozwiązującego dany problem, poprzez jak najlepsze odwzorowanie wzorcowych danych wejściowych oraz wyjściowych (tzw. danych uczących), bez konieczności zaprojektowania czy implementacji tego algorytmu.

Możliwości uczenia maszynowego

Uczenie maszynowe wykorzystuje się w rozwiązywaniu szerokiego spektrum problemów, które dzieli się na trzy główne typy w zależności od natury zadania:

  • Uczenie nadzorowane (ang. Supervised learning)
  • Uczenie nienadzorowane (ang. Unsupervised learning)
  • Uczenie przez wzmacnianie (ang. Reinforcement learning)

Możliwości uczenia maszynowego

4) Możliwości uczenia maszynowego

W kontekście tego artykułu skupimy się na najpopularniejszym jak dotąd uczeniu nadzorowanym, które najczęściej stosuje się w problemach klasyfikacji danych (np. co znajduje się na danym obrazie, OCR (rozpoznawanie pisma), wykrywanie fałszerstw czy spamu itp.) oraz – co nas będzie najbardziej interesowało – regresji (szeroko pojęte prognozowanie, jak np. przewidywanie pogody czy wspomnianego wcześniej kursu akcji).

Warto wspomnieć, że z roku na rok zauważalny jest bardzo istotny rozwój uczenia przez wzmacnianie, szczególnie w kontekście rozwiązywania problemów podejmowania decyzji w czasie rzeczywistym (np. auta autonomiczne, czy gry o niewyobrażalnym stopniu skomplikowania, jak szachy czy GO).

Sztuczne sieci neuronowe jako narzędzie uniwersalne

Co ciekawe – większość pracowników biurowych mających styczność z arkuszami kalkulacyjnymi (np. Microsoft Excel), w swojej codziennej pracy często nieświadomie korzysta z dobrodziejstw uczenia maszynowego, rozwiązując problemy regresji – chociażby tworząc linię trendu na zbiorze danych zobrazowanych na wykresie. W ciągu paru sekund (kliknięć myszy) można w sposób analityczny wyznaczyć prostą (regresja liniowa). czy też krzywą wielomianową dowolnego stopnia (regresja wielomianowa, tak, jak na rysunku poniżej).

Regresja wielomianowa w Microsoft Excel

5) Regresja wielomianowa w Microsoft Excel

Regresja liniowa czy wielomianowa jest przykładowym narzędziem wykorzystywanym w nadzorowanym uczeniu maszynowym. Mając wyznaczony wzór prostej/krzywej możemy z łatwością zrobić prognozę przyszłych wartości. Nie jest to jednak zawsze rozwiązanie optymalne (co zresztą doskonale widać na rysunku 5) i istnieje wiele innych technik, które można wykorzystać w celu rozwiązania danego problemu. Część z nich została zebrana na poniższej grafice:

Metody i techniki uczenia maszynowego

6) Metody i techniki uczenia maszynowego

Nie da się nie zauważyć, że wszystkie problemy, które adresuje uczenie maszynowe (nie tylko te związane z regresją i klasyfikacją, ale również inne, jak klastrowanie) można z powodzeniem rozwiązać wykorzystując sztuczne sieci neuronowe (ang. Artificial neural networks).

Porównanie biologicznego oraz sztucznego neuronu

7) Porównanie biologicznego oraz sztucznego neuronu

Sieci neuronowe są matematycznym odwzorowaniem biologicznego układu neuronów znajdujących się w naszych mózgach. Pojedynczy neuron, podobnie jak ten rzeczywisty, zajmuje się przetwarzaniem sygnałów – mówiąc w języku bardziej matematycznym, realizuje funkcję, która transformuje wektor sygnałów wejściowych na sygnał wyjściowy:

Sieci neuronowe są matematycznym odwzorowaniem biologicznego układu neuronów

Szczegółowy opis działania oraz procesu uczenia neuronu (dobierania odpowiednich wartości wag) jest zdecydowanie materiałem na osobny, bardziej techniczny, artykuł, i nie będę się tutaj zagłębiał w dalsze szczegóły. To, co w tym momencie najistotniejsze, to fakt, że pojedyncze neurony mogą być łączone ze sobą w sieci o różnych topologiach, w zależności od typu problemu, który chcemy rozwiązać, a do najpopularniejszych architektur sieci zaliczamy:

  • Wielowarstwowe perceptrony (ang. Multi-layer perceptron), MLP
    • Uniwersalna, najprostsza topologia sieci, którą można wykorzystać do rozwiązywania dowolnego problemu
  • Sieci konwolucyjne (ang. Convolutional Neural Networks), CNN
    • Sieci, które swoje działanie opierają na matematycznej operacji splotu (ang. convolution), najczęściej stosowane w obróbce obrazów 2D oraz 3D
  • Sieci rekurencyjne (ang. Recurrent Neural Networks), RNN, w tym LSTM (Long-short-term memory neural network)
    • Sieci posiadające specjalne neurony, posiadające własną pamięć, znajdujące zastosowanie w rozpoznawaniu mowy, przetwarzaniu tekstu (NLP) czy analizie szeregów czasowych
  • Sieci GAN (ang. Generative Adversarial Networks)
    • Sieci umożliwiające generowanie sztucznych danych, które będą nieodróżnialne od oryginałów (np. generowanie ludzkich twarzy, powielanie podobnych zbiorów danych, tworzenie sztucznych scen)

Data Science oraz modelowanie

Skuteczność modeli tworzonych z wykorzystaniem technik uczenia maszynowego w głównej mierze opiera się na jakości i ilości danych, które zostanę użyte w procesie uczenia. Samo zdobycie odpowiednich danych jest jednak dopiero początkiem drogi, najczęściej surowe dane należy poddać żmudnej analizie oraz obróbce, zanim będzie można je wykorzystać w procesie uczenia. Całokształt działań związanych z przygotowaniem danych nazywamy Data Science (inżynierią danych).

Data Science

8) Data Science

W skład typowych działań poprzedzających proces modelowania wchodzą:

  • Czyszczenie danych (Cleanup of data)
  • Analiza statystyczna pod kątem korelacji (Initial analysis for correlations)
  • Redukcja zbędnych informacji (Features reduction)
  • Ekstrakcja dodatkowych informacji (Features extraction)
  • Pozbycie się anomalii (Removal of outliers)
  • Normalizacja (Normalization)
  • Zbilansowanie (Data Balancing)
  • Sekwencjonowanie (w przypadku szeregów czasowych)

Mając przygotowane w ten sposób dane, można przystąpić do wyboru techniki uczenia maszynowego (rodzaju modelu, który chcemy stworzyć, np. liniowej regresji albo sieci neuronowej MLP) oraz doboru odpowiednich parametrów uczenia. W zależności od poziomu skomplikowania zadania, ilości danych, architektury modelu, mocy obliczeniowej sprzętu oraz wielu innych czynników, proces samego uczenia może trwać od kilku sekund do wielu godzin/dni. Mając jednak odrobinę szczęścia, po skończonym uczeniu można cieszyć się modelem, który będzie realizował poszukiwaną przez nas funkcjonalność (gotowy algorytm, mimo że nie napiszemy przy tym ani jednej linijki kodu mówiącej maszynie, jak ma ten problem rozwiązać).

Prognoza zarażeń wirusem SARS-CoV-2

Problem przewidywania liczby zakażeń koronawirusem w Polsce oraz na całym świecie jest nietrywialny i można porównać go do analizy kursu akcji na giełdzie. Nie wiemy, czy jutro nie wybuchnie kolejne ognisko choroby, którego nikt się nie spodziewał. Liczba potencjalnych zmiennych jest bardzo duża, a co dodatkowo utrudnia rozwiązanie problemu, to fakt, że fala zakażeń nie jest symultaniczna we wszystkich krajach – w Chinach obserwujemy już wygasanie epidemii, a w Brazylii szczyt zachorowań prawdopodobnie jest dopiero przed nami. Co więcej – niektóre kraje wykazują nietypowe wzorce (np. Tajwan) i ich obecność podnosi poziom skomplikowania zadania. Biorąc to wszystko pod uwagę – brzmi to, jak idealny problem, który można spróbować rozwiązać uczeniem maszynowym. Z technicznego punktu widzenia – mamy tutaj do czynienia z zadaniem regresji szeregu czasowego.

Dostęp do odpowiednich danych (szczęście w nieszczęściu) nie był dużym wyzwaniem – w Internecie znajdują się setki wszelakich zbiorów danych gromadzonych w sposób regularny. Najwięcej uwagi poświęcić należało samej obórce danych, czyli części Data Science (80% całkowitego czasu) oraz przygotowaniu odpowiednio zbioru uczącego.

Kolejnym krokiem było modelowanie, a co za tym idzie, trudna decyzja o wyborze odpowiedniego typu modelu. Biorąc pod uwagę uniwersalność sieci neuronowych, w pierwszej kolejności zastosowałem sieć typu MLP, a następnie spróbowałem wykorzystać sieci konwolucyjne (które wbrew pozorom i powszechnej opinii z powodzeniem można stosować nie tylko w analizie obrazów, ale również jako alternatywę dla MLP, czy sieci rekurencyjnych w modelowaniu szeregów czasowych). Ku mojemu zaskoczeniu, obie architektury (MLP oraz CNN) w zadowalającym stopniu poradziły sobie z odwzorowaniem dotychczasowych krzywych zachorowań dla większości krajów na całym globie, a co więcej – umożliwiły prognozowanie przyszłych wartości związanych z rozszerzaniem się zakażenia, co daje możliwość stwierdzenia, czy dany kraj ma już „najgorsze za sobą”, czy może wszystko dopiero przed nim.

9) Predykcja ilości potwierdzonych zakażeń na COVID-19 w Polsce na 7 dni do przodu na dzień 25 maja 2020

Dokładność działania obu modeli oscylowała w granicach 70-75%, z zaznaczeniem, że proces uczenia sieci konwolucyjnych był zauważalnie szybszy (wynika to bezpośrednio z różnic w topologiach oraz sposobie działania sieci MLP oraz CNN). Wynik ten, zapewne, można by znacząco poprawić, poświęcając więcej czasu na dobór odpowiednich parametrów uczenia, czy też poprzez wykorzystanie innych typów modeli (np. sieci LSTM).

ThingWorx w służbie wizualizacji

Tworząc modele z użyciem technik uczenia maszynowego, bardzo częstym problemem jest integracja z istniejącym oprogramowaniem, czy też nawet zwykła wizualizacja. Z pomocą przychodzi tutaj oprogramowanie ThingWorx, które z powodzeniem można wykorzystać do integracji z dowolnym źródłem danych, a następnie do stworzenia wydajnych aplikacji web’owych udostepniających pożądaną funkcjonalność.

W przypadku predykcji zakażeń na koronawirus w ThingWorx, zaimplementowana została aplikacja integrująca się z modelem napisanym w technologii Python (z bibliotekami Keras/TensorFlow/Flask), dzięki której możemy wybrać dowolny kraj, przeanalizować dane historyczne dotyczące zachorowań, jak również zrobić prognozowanie przyszłych wartości (nawet do 90 dni wprzód). Dodatkowo, ThingWorx „w locie” przetwarza otrzymane przez model surowe dane oraz, stosując metody numeryczne dokonuje wypłaszczenia krzywych (tzw. smoothing), celem precyzyjniejszej analizy krzywej trendu.

Wizualizacja działania modelu w ThingWorx

10) Wizualizacja działania modelu w ThingWorx (z dodatkowym wypłaszczeniem krzywych)

Sztuczna inteligencja domeną przyszłości?

Mając na uwadze fakt, że uczenie maszynowe można zastosować wszędzie tam, gdzie zdefiniowanie algorytmu jest nietrywialne, można by pokusić się o stwierdzenie, że programowanie tradycyjne odchodzić będzie do lamusa – no bo, po co się męczyć i głowić nad zaprojektowaniem algorytmu i implementacją programu, kiedy maszyna może się za nas „nauczyć”, jak taki algorytm powinien wyglądać, i zrobić całą „brudną robotę” za nas – i to całkiem skutecznie, jak widać na przykładzie tego artykułu oraz wyników uzyskanych podczas prognozowania potwierdzonych zakażeń wirusem SARS-CoV-2. I pewnie trochę w tym prawdy jest, bo w przeciągu najbliższych paru lat technologie związane z AI oraz uczeniem maszynowym będą zapewne standardem w portfolio usług większości dzisiejszych „tradycyjnych” programistów.

Jeśli szukasz firmy oferującej rozwiazania z zakresu Internet of Things i Data Science zapraszamy do kontaktu!

How useful was this post?

Click on a star to rate it!

Average rating 5 / 5. Vote count: 2

No votes so far! Be the first to rate this post.

W przypadku naruszenia Regulaminu Twój wpis zostanie usunięty.

    _Wszystkie wpisy z tej kategorii

    7 sposobów jak widoczność danych zwiększa efektywność produkcji

    XXI wiek to czas kiedy dane odgrywają coraz większą rolę, a trend ten zauważalny jest również w branży produkcyjnej. Gromadzenie ich to jednak…
    Czytaj dalej

    5 kroków do zwiększenia efektywności energetycznej w firmie produkcyjnej

    Według Niemieckiego Federalnego Urzędu Statystycznego zużycie energii przez przemysł do produkcji towarów w latach 1995-2019 prawie się nie zmieniło. W 2019 roku wyniosło…
    Czytaj dalej

    5 sposobów na redukcję kosztów energii w przemyśle

    Koszt energii elektrycznej – bardzo często pomijany bądź akceptowany taki, jaki jest z uwagi na to, że jest integralną częścią produkcji. W czasach…
    Czytaj dalej

    Energy Advisor dla produkcji - oszczędność energii dla przemysłu

    Rachunki za zużycie energii od wielu lat są przedmiotem zainteresowania praktycznie wszystkich dziedzin przemysłu, a obecna sytuacja na świecie jest czynnikiem zwiększającym zapotrzebowanie…
    Czytaj dalej

    Dlaczego warto używać Azure Cloud dla rozwiązań IoT

    Cyfrowa transformacja zmienia sposób, w jaki połączone są produkty, aktywa, dane i operacje, aby dostarczyć biznesową wartość dla klientów. Przekształcenie danych cyfrowych na…
    Czytaj dalej

    Wizualizacja danych w IoT

    Jedną z niewątpliwych zalet rozwiązania, jakim jest Internet Rzeczy, jest możliwość gromadzenia i przetwarzania ogromnej liczby różnorodnych danych (np. wartość temperatury, liczba wyprodukowanych…
    Czytaj dalej

    Skalowanie Horyzontalne w ThingWorx 9

    Skalowalność w aplikacjach webowych stała się standardem. Pojedynczy serwer nie poradzi sobie z rosnącą ilością podłączonych do Internetu urządzeń. Skalowalność to charakterystyka systemu,…
    Czytaj dalej

    High Availability w aplikacjach IoT

    Współczesne serwisy internetowe odpowiadają na miliony zapytań użytkowników. Wszystkie one działają w środowiskach klastrowych. Obsługa wielu zapytań wymaga znacznych zasobów, takich jak czas…
    Czytaj dalej

    IoT Hub Connector dla ThingWorx – Połączenie ThingWorx z Chmurą Azure

    Thingworx IoT Hub Connector jest mostem, który łączy platformę Thingworx z chmurą Azure (a dokładniej z Azure IoT Hub). Zapewnia on bezpieczną (opartą…
    Czytaj dalej

    Czym jest AIoT? Artificial Intelligence of Things w Przemyśle 4.0 

    Synergia, tak można określić to naturalne połączenie technologii, które znacząco wpłynie na wygląd przyszłości produkcyjnej. Ostatnimi czasy coraz większą popularność zyskuje, obok Internetu Rzeczy (IoT), sztuczna inteligencja…
    Czytaj dalej

    Co nowego w ThingWorx 9.0?

    Tegoroczny Liveworx, ze względu na globalną sytuację wywołaną przez pandemię COVID-19, wyjątkowo odbywał się wyłącznie w wersji on-line. Już pierwszego dnia zapowiedziano wypuszczenie…
    Czytaj dalej

    Sieć 5G kluczem do Przemysłowego Internetu Rzeczy

    Przemysłowy Internet Rzeczy zmienia dziś nasze spojrzenie na klasyczne pojęcie produkcji. Największe koncerny wytwórcze chętnie sięgają po rozwiązania technologiczne, które usprawniają i zwiększają…
    Czytaj dalej

    Koronawirus, a ciągłość produkcji – IoT i AR dla przemysłu

    Nagła epidemia koronawirusa SARS-CoV-2 i wywoływanej przez niego choroby COVID-19 wpłynęła na każdą sferę funkcjonowania współczesnego świata. Wywołane zagrożeniem epidemiologicznym ograniczenie przepływu ludzi, towarów i usług już negatywnie wpłynęło na ciągłość procesów produkcyjnych wielu branż, a każdy…
    Czytaj dalej

    Jak Internet Rzeczy zmienia branżę lotniczą?

    Internet Rzeczy stosowany jest w coraz szerszym zakresie, a z rozwiązań optymalizujących czy gromadzących informacje korzystają światowi giganci. Wszystko po to, aby usprawniać…
    Czytaj dalej

    Jak Internet Rzeczy rozwija przemysł motoryzacyjny?

    Nikogo nie zaskoczy stwierdzenie, że przemysł motoryzacyjny jest z natury innowacyjny. Samochody to maszyny, które historycznie zrewolucjonizowały wiele obszarów przemysłu, a dziś można…
    Czytaj dalej

    Internet Rzeczy w branży logistycznej

    Wydawałoby się, że Internet Rzeczy jest dedykowany wyłącznie branży przemysłowej. Z nią jednak bardzo związane są transport oraz logistyka, które również mogą skorzystać…
    Czytaj dalej

    Czym ThingWorx różni się od Axeda i czy warto rozważyć zmianę?

    Odkąd PTC odzyskało ThingWorx w 2013, było jasne, że pionier parametrycznego CAD’a oraz jeden z liderów PLM chciał znacznie powiększyć ślad swojej obecności…
    Czytaj dalej

    _Zostańmy w kontakcie

    Skontaktuj się