Paweł Marciniak
Transition Technologies PSC S.A.
Paweł MarciniakSenior IoT Specialist @ Transition Technologies PSC S.A.

Sztuczna inteligencja na projekcie IoT (Internet of Things)

Jak wygląda projekt IoT z użyciem sztucznej inteligencji? Dowiedz się i sprawdź, jak go mądrze poprowadzić.
8.06.20217 min
Sztuczna inteligencja na projekcie IoT (Internet of Things)

Czym w zasadzie jest sztuczna inteligencja? Kiedyś kojarzona z buntem maszyn i upadkiem cywilizacji, dzisiaj znajdująca zastosowanie w wielu dziedzinach życia, ułatwiając nam codzienne czynności takie jak optymalizacja procesów oraz kosztów, czy szybsze podejmowanie lepszych decyzji. W dużym uproszczeniu sztuczna inteligencja to oprogramowanie, które naśladuje ludzkie zachowania i umiejętności, tj. rozumowanie, uczenie się, planowanie, przewidywanie, szacowanie, a nawet kreatywność. Systemy AI pozwalają na automatyzację części procesów dzięki temu, że mogą one postrzegać otoczenie, rozwiązywać problemy i działać w kierunku osiągnięcia celu, znajdując relacje i wzorce, które ciężko byłoby zauważyć człowiekowi.

Rozwój sztucznej inteligencji rozpoczął się w latach 50. XX wieku, jednak prawdziwy „boom” nastąpił u schyłku lat 80., kiedy to algorytm, używając sztucznej inteligencji, poradził sobie z problemem alternatywy rozłącznej (XOR), który do tej pory był największą przeszkodą dla ówczesnych badaczy.

Dzisiaj sztuczna inteligencja jest obecna w każdym aspekcie naszego życia. Możemy ją znaleźć w algorytmach polecających filmy i muzykę, w medycynie służy do analizy zdjęć rentgenowskich, w życiu codziennym pomaga uporządkować dom (urządzenia sprzątające), a hobbystom poprawia obraz w aparatach fotograficznych. Nie jest więc niczym dziwnym, że sztuczna inteligencja znalazła także szerokie zastosowanie w przemyśle, dołączając do koncepcji Przemysłu 4.0

Spore zainteresowanie tematem sztucznej inteligencji spowodowało pojawienie się wielu nowych narzędzi, które pozwalają uprosić proces przygotowania danych do uczenia maszynowego, czy wdrożenie gotowego modelu na środowisko produkcyjne. W tym artykule przedstawię, jak wygląda projekt IoT z użyciem sztucznej inteligencji. W poniższym przypadku doskonałymi narzędziami rozwiązującymi zdefiniowany problem były ThingWorx oraz ThingWorx Analytics.

Zdefiniuj potrzebę

Najbardziej istotną, a zarazem kluczową rzeczą, bez której projekt nie może się rozpocząć, jest zdefiniowanie potrzeby, czyli problemu, jaki chcemy rozwiązać. Cel musi być jasno zdeklarowany i możliwy do zrealizowania.

W pierwszej kolejności należy zadać sobie pytanie: co zamierzamy osiągnąć? Często zdarza się, że klient, który chce wdrożyć w swojej firmie rozwiązanie IoT oparte dodatkowo o sztuczną inteligencję, nie do końca jest w stanie zdefiniować nam konkretną potrzebę. Wie natomiast, że procesy w jego firmie nie są do końca poprawne oraz zdaje sobie sprawę, że można je zoptymalizować, a co za tym idzie, uporządkować i zaoszczędzić część funduszy.

Zdefiniujmy więc hipotetyczny problem. Klient ma w swojej firmie ogromne maszyny, składające się z setek, a może i nawet tysięcy części, które należy co określony czas konserwować, a w razie awarii wymienić na nowe. Codziennie pracownik fabryki chodzi wzdłuż linii produkcyjnej i dogląda każdej z maszyn. Niestety nie jest w stanie ocenić gołym okiem, czy maszyna działa tak, jak powinna, dopóki nie nastąpi awaria.

Każda maszyna znajdująca się na linii musi działać bez zarzutu, a wykluczenie jednej z nich powoduje przestój całego procesu, a co za tym idzie, generuje ogromne straty finansowe dla firmy. Problemem jest zbyt późne wykrywanie awarii. Gdyby system mógł przewidzieć kilka dni wcześniej, że na jednej z maszyn znajdujących się na linii nastąpi awaria, mógłby powiadomić o tym pracownika utrzymania ruchu, który przyjrzałby się bliżej urządzeniu. Daje to także odpowiedni zapas czasu na zakup części zamiennych do maszyny, by móc dysponować nimi dokładnie w momencie, kiedy będą one potrzebne. Takie działanie eliminuje potrzebę zbędnego magazynowania części, które mogą dodatkowo ulegać degeneracji podczas składowania.

Zbierz dane

W momencie, gdy udało nam się zdefiniować potrzebę klienta, przychodzi czas na przygotowanie danych. Ich zebranie oraz obróbka to bardzo często 80% sukcesu projektu. Projekt IoT to przede wszystkim zbieranie danych z czujników i urządzeń w jedno miejsce, a następnie inteligentna analiza tych danych, oraz podejmowanie stosownych procedur. Warto na tym etapie zastanowić się, w jaki sposób będziemy przechowywać dane, czy będzie to zewnętrzna relacyjna, bądź nierelacyjna, baza danych, strumień danych dla każdego urządzenia osobno, grafowa baza danych, czy może baza danych szeregów czasowych jak InfluxDB.

Wszystkie rozwiązania mają swoje wady i zalety, więc warto zwrócić uwagę, która z ww. opcji pasuje do naszego problemu. Najważniejsze jest to, aby dane trzymać uporządkowane w jednym miejscu. Projekt IoT charakteryzuje się zbieraniem i monitorowaniem danych w czasie rzeczywistym tak, aby użytkownik końcowy miał możliwość śledzenia parametrów wszystkich maszyn z jednego miejsca, bez potrzeby przemierzania całej fabryki kilka razy dziennie.

Z drugiej strony, uczenie maszynowe wymaga olbrzymich ilości danych zebranych na przestrzeni ostatnich tygodni, miesięcy, czy lat, ponieważ tworzony przez nas model musi mieć dane, dzięki którym nauczy się przewidywać zachowanie maszyny. Samo zdobycie danych dla modelu sztucznej inteligencji może okazać się dość skomplikowane. Bardzo często zdarza się, że informacje przechowywane są w różnych miejscach oraz formatach, np. w archiwach, dokumentach typu Excel, a nawet w zwykłych plikach tekstowych, gdzie kolumny rozdzielone są kropkami, przecinkami, czy średnikami.

Obróbka danych oraz inżynieria cech

To niezwykle istotny moment projektu. Udało nam się zdefiniować cel oraz mamy bazę danych z ostatnich lat, która zawiera wszystkie informacje o działaniu maszyn w postaci danych szeregów czasowych (time series data). Dane należy uporządkować.

Oprócz normalizacji oraz standaryzacji danych bardzo ważną rzeczą jest wybór cech, które mają wpływ na osiągniecie naszego celu. Warto zwrócić uwagę na korelacje poszczególnych danych. Dodatkowo, jeżeli dane są w postaci szeregów czasowych, to należy znaleźć ich wspólny znacznik czasu. Zazwyczaj okazuje się, że zbierane dane mają zupełnie inny interwał czasowy, co poważnie komplikuje sprawę.

Nie należy też bać się inżynierii cech. Po usunięciu anomalii, ujednoliceniu oraz wyborze parametrów, należy zastanowić się nad stworzeniem nowych cech, które często usprawniają dalszy proces uczenia maszynowego. Każdy etap procesu przygotowywania danych powinien być w jak największym stopniu zautomatyzowany. Skrypty do obróbki danych należy zapisywać i ponownie używać w momencie pojawiania się nowych danych.

Sieci neuronowe, drzewa decyzyjne czy może uczenie przez wzmacnianie

Kiedy dane są gotowe, nadchodzi czas na bardzo ważny krok, czyli wybór modelu uczącego. Problem, który definiowaliśmy, to rodzaj systemu uczenia nadzorowanego. Istnieją jeszcze systemy uczenia nienadzorowanego lub półnadzorowanego, jednak te nie do końca sprawdziłyby się w naszym przypadku. Warto podczas tego etapu przygotować wiele różnych modeli testowych, takich jak np.

  • Neural network
  • Support Vector Machine
  • Random decision forests
  • Linear Regression


Oczywiście wybór modeli testowych musi być adekwatny do zdefiniowanego problemu, jednak warto sprawdzić więcej niż jeden i wykorzystać standardowe parametry. Pozwoli to na wstępne zapoznanie się z wydajnością poszczególnych modeli i znalezienie tego potencjalnie najlepszego.

Można dla każdego modelu wykonać n-krotny sprawdzian krzyżowy oraz obliczyć średnią i odchylenie standardowe miary wydajności dla n podzbiorów. Nie należy na tym etapie skupiać się na dostrajaniu każdego z modeli, lecz na próbie sporządzenia krótkiej listy od 2 do 4 tych najbardziej „obiecujących”.

Dostrajanie modelu

Ostatni etap to dostrajanie naszych modeli. Teraz należy zająć się ustaleniem hiperparametrów, wykorzystać jak największą ilość danych od nauki, zastanowić się, czy warto zastosować jeden model do predykcji, czy może użyć metody zespołowej. Zbiór połączonych najlepszych modeli często osiąga lepsze rezultaty, niż jego poszczególne składowe. W momencie, w którym będziemy zadowoleni z naszego modelu, należy zmierzyć jego wydajność za pomocą zestawu testowego. Robi się to w celu sprawdzenia, czy model zgeneralizował wiedzę w stopniu na tyle dostatecznym, że potrafi poradzić sobie z danymi, których nigdy wcześniej nie widział. Warto zwrócić uwagę na takie zjawiska jak przetrenowanie, czy niedotrenowanie modelu.

Do dzieła!

Kiedy dotarliśmy do tego momentu, jesteśmy gotowi do wdrożenia modelu na produkcję. Dzięki temu, że głównym trzonem projektu jest IoT, mamy dostęp do spływających danych z całej fabryki w czasie rzeczywistym i możemy przetestować działanie naszego modelu od razu po jego wdrożeniu. 

Teraz pozostało monitorowanie wydajności naszego systemu w regularnych odstępach czasu. Warto przyglądać się także danym wejściowym, np. niesprawny czujnik może wysyłać losowe wartości. Jest to istotniejsze w przypadku uczenia przyrostowego, jednak warto zwrócić na to uwagę.

Ostatnią rzeczą jest regularne trenowanie naszego modelu za pomocą świeżych danych. Douczanie modelu jest niezwykle ważne, gdy na początku mamy do dyspozycji niewielką bazę danych uczących. Z czasem, gdy nasz dataset rozrasta się, warto dodawać nowe dane do procesu uczenia maszynowego w celu ulepszenia naszego modelu.

Dzięki zapisywaniu skryptów do obróbki danych oraz utworzeniu schematu pracy jesteśmy w stanie w sposób automatyczny uczyć model, a następnie wdrażać go na środowisko produkcyjne. Należy jednak zapisywać migawki poprzednich wersji modelu, aby w razie konieczności, mieć ostatnią kopię zapasową.

Podsumowanie

Projekt oparty o sztuczną inteligencję świetnie sprawdza się w przypadkach, kiedy to głównym trzonem projektu jest Internet Rzeczy (IoT), ponieważ pozwala na zbudowanie systemu do monitorowania oraz zarządzania urządzeniami fabryki w jednym konkretnym miejscu. Pozwala to także na łatwe przekazywanie informacji z maszyn do wyuczonego modelu, co zaoszczędza mnóstwo czasu oraz pozwala na prostą automatyzację całego procesu. 

<p>Loading...</p>