Branża ubezpieczeniowa oferuje bardzo szeroką gamę produktów, takich jak ubezpieczenia indywidualne, grupowe, komunikacyjne i wiele innych. Każde z nich wymaga przestrzegania innych procedur, wymogów prawnych oraz analizy różnego typu informacji zarówno przy sprzedaży polis, jak i przy wypłacie należnych roszczeń.
Generuje to wiele procesów, które obsługiwane ręcznie zajmują dużo czasu. Stąd wynika rosnące zainteresowanie tej branży wykorzystaniem algorytmów sztucznej inteligencji.
Nawet częściowa automatyzacja obsługiwanych w firmie procesów może znacząco zmniejszyć czas pracy nad pojedynczą ofertą ubezpieczeniową. Pozwoli także na optymalizację jej parametrów i zmniejszenie kosztów wynikających z ewentualnych roszczeń.
W tym artykule chciałabym przedstawić kilka obszarów, w których można wdrożyć algorytmy sztucznej inteligencji oraz przykładowe wyniki, jakie udało nam się uzyskać w niektórych z nich.
W przypadku szkody komunikacyjnej ustalenie kwoty wypłacanej z ubezpieczenia wymaga analizy stopnia uszkodzenia każdej części auta. Często rzeczoznawca dokonuje oceny na podstawie zdjęć przedstawiających poszczególne części samochodu. Następnie na tej podstawie szacowana jest wysokość wypłacanego świadczenia.
Wykorzystanie algorytmów analizy obrazów i sztucznej inteligencji może wspomóc rzeczoznawcę w procesie oceny stopnia uszkodzenia konkretnych części samochodu.
Aplikacja Proof of Concept, którą stworzyliśmy wraz z zespołem, pozwala na zidentyfikowanie i oznaczenie konkretnych części samochodu znajdujących się na zdjęciach oraz przypisanie każdej z nich estymowanego stopnia uszkodzenia. Dodatkowymi funkcjami, dostępnymi z poziomu aplikacji, mogłyby być: znalezienie najbliższego serwisu, wezwanie lawety, czy znalezienie samochodu zastępczego.
Tworzenie ofert ubezpieczeniowych dla nowych klientów wymaga analizy wielu czynników. Dla ubezpieczeń grupowych są to na przykład: struktura osób zatrudnionych w firmie, profil działalności, region, w którym firma ma siedzibę.
Dodatkowo sprzedawca musi przestrzegać szeregu reguł przy konstruowaniu takiej oferty, tak aby była ona zarówno korzystna dla firmy jak i atrakcyjna dla klienta.
W tym przypadku sztuczna inteligencja może zostać wykorzystana jako swoisty system rekomendacji, który pomoże sprzedawcy dobierać odpowiednie opcje dla konkretnego klienta. System taki umożliwia znaczne przyspieszenie i ułatwienie pracy przy konstruowaniu oferty.
Poniżej znajdują się przykładowe wyniki rekomendacji w przypadku, gdy znamy wiek i płeć klienta (51 letni mężczyzna, 37 letnia kobieta, 39 letni mężczyzna). W tym rozwiązaniu sprzedawca zaznacza kilka opcji (wiersz: masked), a na tej podstawie system proponuje inne, które powinny znaleźć się w polisie (wiersz: recommendation).
Pierwszy wiersz w każdej z grup oznacza oryginalną polisę, która została zaakceptowana przez klienta.
Dodatkowo na podstawie historycznych danych pokazujących, jakie polisy są akceptowane przez klientów, a jakie nie, mógłby on jeszcze lepiej dobierać konfigurację proponowanych ofert, zwiększając tym samym skuteczność sprzedaży nowych polis.
Propozycje zmiany warunków polisy ubezpieczeniowej najczęściej są przedstawiane, gdy zbliża się termin końcowy obecnej umowy lub kiedy coś złego dzieje się z polisą (np. występuje dużo zdarzeń, generujących większe niż przewidywaliśmy wypłaty odszkodowań). W takich przypadkach najczęściej proponuje się::
– podwyższenie składek z zachowaniem dotychczasowych warunków polisy,
– zachowanie wysokości składki, ale ze zmianami w zakresie polisy zgodnie z rekomendacjami przedstawionymi przez underwritera na podstawie historii zdarzeń.
Wykorzystanie algorytmów sztucznej inteligencji w tym procesie mogłoby wspomóc pracę nad skonstruowaniem nowej oferty, poprzez wskazanie co w danej polisie najlepiej byłoby zmienić tak, aby zminimalizować ryzyko dla firmy ubezpieczeniowej przy jednoczesnym zachowaniu jak najbardziej korzystnej oferty z punktu widzenia Klienta.
W artykule przedstawiłam przykładowe zastosowanie algorytmów sztucznej inteligencji w branży ubezpieczeniowej. Warto podkreślić, że poza omówionymi powyżej przypadkami, można wymienić również inne, takie jak: chatbot obsługujący klientów, szacowanie ryzyka, czy wykrywanie prób oszustw i wyłudzeń.
Te trzy przykłady mogą być wykorzystane zarówno w branży ubezpieczeniowej, jak i w wielu innych np. w branży finansowej, co opisałam szerzej w artykule Wykorzystanie AI w branży finansowej.
Wszystkich zainteresowanych zapraszam do rozmowy przez mój profil na LI, a także śledzenia naszych wpisów na blogu Isolution oraz naszych firmowych profilach na LI i FB.
Katarzyna Roszczewska
Rozpoczynając przygodę z algorytmami sztucznej inteligencji, warto postawić sobie dwa podstawowe pytania:
Jeśli chodzi o pierwsze pytanie, to ogranicza nas jedynie wyobraźnia i dostępność danych, które możemy wykorzystać do uczenia modelu. Jeśli chodzi o pytanie drugie to wybór modelu zależy w znacznej mierze od rozwiązywanego problemu, zasobów sprzętowych jakimi dysponujemy oraz czasu, w jakim chcielibyśmy skończyć nasze zadanie.
Najlepiej to pokazać na przykładach. Załóżmy, że chcemy stworzyć algorytm wspomagający poprawną segregację odpadów na podstawie zdjęcia. Jeśli chodzi o sam dobór algorytmu, to w tym przypadku mamy kilka opcji. Możemy wykorzystać lasy losowe drzew decyzyjnych lub maszynę wektorów nośnych po uprzednim wyekstrahowaniu odpowiednich cech z obrazu. Możemy też wykorzystać splotowe sieci neuronowe, które operują bezpośrednio na danych obrazowych. Architekturę takiej sieci możemy zaprojektować sami,na wstępie warto jednak rozważyć adaptację gotowego modelu, co pozwoli nam zaoszczędzić dużą ilość czasu. Ja do rozwiązania przyjętego problemu zdecydowałam się wykorzystać wstępnie nauczone modele sztucznych sieci neuronowych. Jak będzie to wyglądało w praktyce? Przeprowadzę Was przez ten proces krok po kroku.
Zbiór danych, z którego postanowiłam skorzystać, znajduje się na stronie: Garbage Classification. Zawiera on zdjęcia odpadów podzielonych na 6 kategorii: karton, szkło, metal, papier, plastik i odpady zmieszane. Ostatnia kategoria zawiera zdjęcia przedmiotów, które w większości mogłyby zostać przyporządkowane do 5 pozostałych grup. Z tego względu wykluczamy ją z dalszej analizy. Poniżej przedstawiony został wykres, na którym widać liczbę zdjęć dostępnych dla każdej z klas.
Bardzo ważnym etapem przygotowania zbioru danych jest jego podział na co najmniej dwa podzbiory: treningowy i walidacyjny. Jeszcze lepszą praktyką jest stworzenie trzech rozłącznych zbiorów danych: treningowego, walidacyjnego i testowego. W tym przypadku rezultaty prezentowane na zbiorze testowym są reprezentatywne i pokazują rzeczywistą skuteczność systemu dla nowych, niewidzianych przez niego wcześniej zdjęć. W moim przypadku 60% zdjęć posłużyło do treningu, 20% stanowiło zbiór walidacyjny, a kolejne 20% trafiło do zbioru testowego. Poniżej znajdują się przykładowe zdjęcia dla każdej z klas. Każde zdjęcie ma rozmiar 512 x 384 pikseli. W przypadku wykorzystywania gotowej sieci neuronowej bardzo ważne jest dostosowanie rozmiaru obrazów w zbiorze do rozmiaru danych wejściowych akceptowanych przez sieć. W przypadku sieci Xception[1] rozmiar warstwy wejściowej to 299 x 299, natomiast w przypadku sieci VGG16[2] rozmiar ten wynosi 224 x 224. Z tego też względu przed przystąpieniem do nauki modelu musimy przeskalować nasze obrazy.
Do rozwiązania problemu jaki sobie postawiłam, wykorzystałam dwie, popularne architektury sieci: VGG16 oraz Xception. Obydwa wybrane przeze mnie modele uczone były na zbiorze ImageNet[1], który zawiera zdjęcia obiektów należących do 1000 klas. W związku z powyższym warstwa wyjściowa, odpowiedzialna za klasyfikację wejściowego obrazu posiada 1000 wyjść. W przypadku analizowanego przeze mnie problemu wielkość warstwy wyjściowej powinna wynosić 5. Poniżej znajduje się kod, który umożliwia przystosować wstępnie przetrenowany model do mojego zbioru danych.
# model adaptation
20 base_net = tf.keras.applications.xception.Xception(weights='imagenet')
21 # base_net=tf.keras.applications.vgg16.VGG16(weights='imagenet')
22 base_net_input = base_net.get_layer(index=0).input
23 base_net_output = base_net.get_layer(index=-2).output
24 base_net_model = models.Model(inputs=base_net_input, outputs=base_net_output)
25
26 for layer in base_net_model.layers:
27 layer.trainable = False
28
29 new_xception_model = models.Sequential()
30 new_xception_model.add(base_net_model)
31 new_xception_model.add(layers.Dense(5, activation='softmax', input_dim=2048))
Ze względu na niezbyt duży zbiór danych przy uczeniu modelu zastosowałam zwiększenie liczby danych uczących (ang.data augmentation). Poniżej znajduje się fragment kodu, odpowiedzialnego za trening wybranego modelu
# hyperparameters
34 base_learning_rate = 0.0001
35 opt = optimizers.SGD(lr=1e-3, decay=1e-6, momentum=0.9, nesterov=True)
36
37 new_xception_model.compile(optimizer=opt,
38 loss='sparse_categorical_crossentropy',
39 metrics=['accuracy'])
40
41 # data preparation and augmentation
42 train_data_gen = ImageDataGenerator(
43 rescale=1. / 255,
44 shear_range=0.2,
45 zoom_range=0.2,
46 horizontal_flip=True)
47
48 valid_data_gen = ImageDataGenerator(rescale=1. / 255)
49
50 train_generator = train_data_gen.flow_from_directory(
51 directory='training_data',
52 target_size=img_dim,
53 color_mode="rgb",
54 batch_size=batch_size,
55 class_mode="sparse",
56 shuffle=True,
57 seed=42
58 )
59
60 valid_generator = valid_data_gen.flow_from_directory(
61 directory='validation_data',
62 target_size=img_dim,
63 color_mode="rgb",
64 batch_size=batch_size,
65 class_mode="sparse",
66 shuffle=True,
67 seed=42
68 )
69
70 # model training
71 garbage_recognition_model = new_xception_model.fit_generator(generator=train_generator,
72 validation_data=valid_generator,
73 epochs=epochs,
74 callbacks=[checkpoint, tensorboard_callback, earlyStop]
75 )
76
Podczas trenowania wybranych modeli zastosowałam wczesne zatrzymanie uczenia (ang. early stopping). Polega ona na tym, że jeśli skuteczność rozpoznawania zdjęć ze zbioru walidacyjnego nie wzrasta przez określoną liczbę epok, to uczenie zostaje przerwane. Stosowanie tego typu podejścia zmniejsza ryzyko dopasowania modelu do danych uczących (ang. overfitting). Poniżej przedstawione zostały krzywe uczenia dla zbioru treningowego i walidacyjnego. Widoczne jest, że w tym przypadku znacznie lepiej poradziła sobie sieć Xception, pozwalając na uzyskanie ponad 80% skuteczność rozpoznawania zdjęć ze zbioru walidacyjnego.
Jak wspominałam wcześniej określenie rzeczywistej skuteczności naszego modelu najlepiej wykonać na nowym zbiorze danych, które nie brały udziału w uczeniu naszych modeli. Dlatego też poniżej przedstawiłam wyniki, jakie udało się uzyskać na zbiorze testowym. Zbiór ten zawierał 480 zdjęć. Wyniki potwierdzają wniosek, że w tym przypadku znacznie lepiej poradził sobie model bazujący na wstępnie przetrenowanej sieci Xception. Uzyskała ona skuteczność 83%, czyli o niemal 10 punktów procentowych więcej niż model oparty o architekturę VGG16.
VGG16
ACC = 74%
Xception
ACC = 83%
Artykuł pokazuje, w jaki sposób wykorzystać wstępnie przetrenowane architektury sieci w konkretnym problemie, który chcemy rozwiązać. Opisuje on pokrótce proces analizy i przygotowania danych, zaadaptowania gotowych modeli do swoich potrzeb oraz metody oceny skuteczności stworzonego rozwiązania.
Jest to pierwszy z serii artykułów przeznaczony dla osób chcących rozpocząć swoją przygodę z wykorzystywaniem algorytmów sztucznej inteligencji. Serdecznie zapraszam do śledzenia naszych wpisów na blogu Isolution oraz naszych firmowych profili na LI i FB, a także do zapisania się do naszego newslettera.
Według raportu dotyczącego wykorzystania sztucznej inteligencji w obszarach BSFI[1] (bankowość, usługi finansowe, ubezpieczenia) wartość tego obszaru rynku wynosiła2.5 miliarda dolarów w 2017 roku. Prognozy pokazują, że do 2024 może ona osiągnąć nawet 25 miliardów dolarów. Firmy z obszaru szeroko pojętych usług finansowych inwestują w rozwiązania wykorzystujące sztuczną inteligencję, które pozwalają na zwiększenie ich zysków poprzez budowanie atrakcyjnej i konkurencyjnej oferty, a także optymalizację procesów. W tym artykule chciałabym opowiedzieć o tym, dlaczego sztuczna inteligencja stała się tak popularna na przestrzeni ostatnich kilkudziesięciu lat oraz pokazać, w jakich obszarach według mnie może być ona wykorzystana w branży finansowej.
AI, dlaczego teraz?
Termin “sztuczna inteligencja” został użyty po raz pierwszy w roku 1956 przez Johna McCarthy’ego, który określił nim “konstruowanie maszyn, o których działaniu dałoby się powiedzieć, że są podobne do ludzkich przejawów inteligencji”. Od momentu zdefiniowania sztucznej inteligencji do momentu, w którym zaczęliśmy ją aktywnie wykorzystywać do rozwiązywania zagadek, a z czasem problemów biznesowych, minęło nieco ponad 40 lat. W roku 1997, wielokrotny mistrz świata w szachach Garry Kasparov został pokonany przez komputer. To był moment, w którym pojawiło się wiele dyskusji wokół sztucznej inteligencji i jej możliwych zastosowań. Nieco ponad 20 lat później, w 2019 roku, sieć neuronowa DeepCubeA[2] ułożyła kostkę rubika w 1.2 s,, wykonując to zadanie trzykrotnie szybciej od najlepszych w tej dziedzinie ludzi. To był dowód na to, jak bardzo algorytmy sztucznej inteligencji rozwinęły się przez ostatnie lata oraz przykład możliwości, jakie daje AI w zakresie optymalizacji procesów.
W dzisiejszych czasach algorytmy sztucznej inteligencji wykorzystywane są do rozwiązywania coraz większej liczby problemów z różnych dziedzin naszego życia, od rozpoznawania obrazów po autonomiczne kierowanie pojazdami. W ostatnich latach obserwujemy coraz większe zainteresowanie tym tematem przez firmy z wielu branż. Jednak skoro termin ten jest znany już od niemal 70 lat, to dlaczego dopiero teraz mamy do czynienia z tak ogromnym postępem w tym zakresie? Powodów jest kilka:
Wykorzystanie algorytmów sztucznej inteligencji w bankowości
Branża finansowa charakteryzuje się dostępem do ogromnych zasobów danych. Wykorzystanie algorytmów z zakresu sztucznej inteligencji pozwala na stworzenie rozwiązań, które będą stanowiły o konkurencyjności firmy na rynku, a także pozwolą na optymalizację procesów.
Jakich konkretnie? Oto kilka pomysłów:
a. system rekomendacji
Rekomendowanie odpowiednich produktów obecnym lub potencjalnym klientom w oparciu o analizę ich zachowań, jest bardzo ważnym elementem sprzedaży i dosprzedaży wielu firm, między innymi banków. . Poza oczywistymi zyskami finansowymi idzie za tym również potencjalne zadowolenie klientów, którzy nie czują się zarzucani losowymi reklamami produktów, a traktowani indywidualnie.
Doskonałym przykładem pokazującym, jak dużą rolę w zdobywaniu klientów i ich zaufania do marki pełni personalizacja, jest serwis Netflix. Algorytmy uczenia maszynowego Netflixa na podstawie dostępnych informacji nie tylko proponują nam tytuły, które potencjalnie będziemy chcieli obejrzeć, ale również dobierają zwiastuny filmów oraz seriali, które widzimy na stronie głównej zaraz po zalogowaniu. Jeśli nasz profil pokazuje, że lubimy filmy z udziałem Henry’ego Cavila, prawdopodobnie zobaczymy propozycję serialu z Jego udziałem, a na stronie głównej pojawi nam się jego zwiastun z postacią aktora[3].
Analogicznie, w branży bankowej proponowanie odpowiednich produktów może być oparte na szeregu informacji, takich jak: profil behawioralny konsumenta czy informacje o produktach, które mamy w ofercie.
b. personalny asystent
Kolejnym przykładem zastosowania algorytmów sztucznej inteligencji do rozwiązań usprawniających pracę banku, ale też budujących pozytywną opinię o nas wśród klientów, jest chatbot, lub w bardziej rozbudowanej wersji, personalny asystent. Zaletą systemów tego typu jest ich całodobowa dostępność oraz natychmiastowa odpowiedź na najczęściej zadawane przez klientów pytania. Daje to szereg korzyści, z których za najważniejsze można uznać:
Dodatkowo w takim rozwiązaniu możliwe jest proponowanie klientowi najkorzystniejszych dla niego ofert w kontekście jego preferencji i nawyków, a także pomoc w zarządzaniu jego budżetem domowym np. poprzez wyszukiwanie i wysyłanie informacji o subskrypcjach, o których być może zapomniał.
c. wspomaganie operacji giełdowych
Innym przykładem wykorzystania algorytmów w kontekście sektora finansowego jest wspomaganie decyzji giełdowych, Każdy inwestor zanim podejmie decyzję o inwestycji, staje przed koniecznością analizy szeregu czynników mających wpływ na cenę akcji i przyszłe zyski.
Algorytmy sztucznej inteligencji pozwalają na skrócenie czasu monitorowania tych niekiedy setek czynników, wskazują również informacje istotne z punktu widzenia potencjalnych działań, które chcemy podjąć.
Odpowiednio przygotowane rozwiązania umożliwiają rozpoznawanie wzorców występujących na rynku, a także prognozowanie cen interesujących nas akcji.
d. szacowanie ryzyka
W branży finansowej jednym z najważniejszych czynników bezpośrednio przekładającym się na posiadany kapitał jest odpowiednie oszacowanie różnego rodzaju ryzyk, takich jak na przykład:
W tym obszarze również możliwe jest wykorzystanie algorytmów sztucznej inteligencji, które pomogą nam na podstawie danych dotyczących klienta takich jak chociażby jego historia finansowa czy wiarygodność kredytowa oszacować potencjalne ryzyko wejścia z nim we współpracę lub udzielenia mu pożyczki. Warto tutaj dodać, że w tym przypadku możliwe jest wykorzystanie również różnego typu danych alternatywnych, takich jak: regularność w dokonywaniu opłat nie uwzględnionych w historii finansowej czy publicznie dostępne dane z mediów społecznościowych, które budują wiarygodność potencjalnego klienta bądź współpracownika. W tym przypadku ważne jest również to, aby podejmowane przez nas decyzje były transparentne dlatego konieczne jest wykorzystanie modeli interpretowalnych. Wykorzystanie tego typu modeli przy szacowaniu chociażby wiarygodności kredytowej wpływa na budowanie zaufania klientów do firmy, ze względu na to, że podejmowane decyzje są sprawiedliwe, nie zależą od interpretacji człowieka i są w pełni weryfikowalne.
e. wykrywanie prób oszustw i wyłudzeń
Kolejnym kluczowym obszarem, w którym warto rozważyć wykorzystanie algorytmów sztucznej inteligencji jest detekcja potencjalnych oszustw lub wyłudzeń finansowych. W tym przypadku tak jak w przypadku szacowania ryzyk każda źle podjęta decyzja generuje duże straty finansowe oraz zachwianie zaufania klientów do marki. Tutaj też bardzo ważne jest stworzenie profilu zachowań typowych dla klienta w oparciu o jego historię finansową. Na tej podstawie możliwe jest odróżnienie zleceń bankowych generowanych przez klientów od tych, które generują boty czy wykrywanie podejrzanej aktywności na koncie klienta.
Podsumowanie
Przykłady przedstawione powyżej są jedynie skrótowym opisem możliwych zastosowań sztucznej inteligencji w branży finansowej, jednak dają dobry punkt odniesienia. Temat ten jest bardzo obszerny, dlatego jeden artykuł nie wystarczy, żeby pokazać pełnię możliwości, jakie dają algorytmy sztucznej inteligencji w kontekście zastosowania w branży finansowej. Z tego też względu planujemy publikację kolejnego artykułu, w którym mój kolega z zespołu opowie o konkretnych przypadkach i projektach, które mieliśmy okazję realizować dla klientów z tego obszaru. Wszystkich zainteresowanych zapraszamy do śledzenia naszych wpisów na blogu Isolution oraz naszych firmowych profilach na LI i FB.
[1] https://www.gminsights.com/industry-analysis/artificial-intelligence-ai-in-bfsi-market
[2] https://www.theregister.co.uk/2019/07/16/ai_rubiks_cube/
[3] https://netflixtechblog.com/artwork-personalization-c589f074ad76
W poprzednim wpisie poruszyłem temat autoenkoderów. Warto wdrożyć tę wiedzę w życie. Wyobraźmy sobie system, gdzie komunikacja między serwisami odbywa się za pomocą Kafki. W trakcie życia systemu okazało się, że niektóre z tych zdarzeń są całkiem szkodliwe. Musimy je wykryć i przerzucić na osobny proces, gdzie zostaną dokładnie zbadane.
Wyjdźmy od paru założeń:
Kafka Streams jest biblioteką pozwalająca na przetwarzanie danych pomiędzy topikami. Pierwszym krokiem jest wpięcie się do [all_events] i zbudowanie topologi procesu.
Filtrując po kluczu, zdarzenia kierowane są na dedykowane topiki, gdzie zostaną odpowiednio obsłużone.
Biblioteka pozwala na wykorzystanie gotowych modeli zbudowanych w Kerasie. Jest to fajne rozwiązanie, gdy zespół AI pracuje w TF/Keras i on odpowiada za budowę i dostosowywanie modeli. W tym przypadku pójdziemy inną drogą, stworzymy i wytrenujemy autoenkoder w Javie.
Zdarzenia mają analogiczną budowę i wartości, jak w przykładzie z poprzedniego wpisu. Podzielone zostały na dwa pliki CSV [normal_raw_events.csv] oraz [anomalous_raw_events.csv]
Przychodzące dane są nieznormalizowane. Budujemy dedykowany NormalizerMinMaxScaler, który przeskaluje wartości do zakresu [0.0-1.0].
Wytrenowany normalizer posłuży jako pre-procesor dla dedykowanego iteratora, który porusza się po pliku [normal_raw_events.csv].
Autoenkoder będzie posiadał analogiczną budowę jak przywołany przykład w Kerasie.
Model i normalizer zostaje zapisany. Docelowo powinny znaleźć się na dedykowanym zasobie, z którego działająca aplikacja pobrałaby i zbudowała swoją konfiguracje.
Wytrenowany model może wykazać się średnim błędem rekonstrukcjidla typowych zdarzeń na poziomie 0.0188, natomiast dla anomalii na poziomie 0.0834. Rzucając MSE dla 100 zdarzeń z dwóch grup na wykres, możemy określić próg odcięcia na poziomie [threshold=0.045].
By zapiąć model w topologie procesu wykorzystam interfejs ValueTransformer zaimplementowany w klasie AnomalyDetection. W konstruktorze powołujemy do życia model wraz z normalizerem oraz klasy pomocne w obliczeniu błędu rekonstrukcji.
Metoda transform otrzymuje zebrane w oknie zdarzenia. Muszą zostać one zmapowane na format zrozumiały dla modelu [INDArray]. Dla każdego ze zdarzeń obliczany jest błąd rekonstrukcji. Te, które przekroczą próg otrzymują klucz ANOMALOUS.
Mateusz Frączek, R&D Division Leader
Anomalie w systemach zdarzają się rzadko. Na straży “biznesowej poprawności” stoją warstwy walidacji, które patrząc na parametry zdarzeń, są w stanie wyciągnąć je z procesu. Żądanie wypłaty gotówki w niestandardowym dla właściciela karty miejscu, czy odczyt z sensora przekraczający normy można weryfikować bazując na profilach, czy danych historycznych. Co jeśli jednak zdarzenie na pierwszy rzut oka nie odbiega tak bardzo od normy?
Anomalie nie są łatwe do wykrycia. Często wartości przyjętych cech subtelnie odbiegają od prawidłowego rozkładu, a czasem ich odchylenie od normy jest zauważalne dopiero przy uwzględnieniu serii zdarzeń i charakterystyk czasowych. W takich przypadkach standardowym podejściem jest analiza cech pod kątem np. ich wzajemnej korelacji. Bardzo fajnie do tego problemu podszedł Mirek Mamczur w swoim wpisie.
Na nasze potrzeby wygenerujemy sztuczny zbiór danych, gdzie jedną z klas uznamy za anomalie. Zdarzenia będą posiadały 15 cech, które skupione zostaną dosyć blisko siebie z odchyleniem standardowym na poziomie 1.75.
By zmusić model do większego wysiłku możemy wymusić generowanie danych bliżej, zmniejszając [center_box].
Ciekawą cechą tej architektury jest jej umiejętność zakodowania danych na ich reprezentacje z mniejszą liczbą cech (latent representation). W trakcie nauki miarą wiernego odtworzenia danych wejściowych jest błąd rekonstrukcji.
Idąc tym tropem, gdy do nauki modelu przyjmiemy prawidłowe zdarzenia w naszym systemie, model powinien wyciągnąć z nich cechy i na ich bazie odtworzyć zdarzenie z pewnym przybliżeniem. Gdy do modelu trafi zdarzenie anormalne, błąd rekonstrukcji powinien być zauważalnie większy ze względu na inną charakterystykę danych.
Przy pomocy Pandas’a budujemy DataFrame zawierający dane testowe. Po przeskalowaniu 20% z nich przeznaczonych zostanie na walidacje.
W przypadku niektórych modeli i problemów, które rozwiązują, (np. klasyfikacja z wykorzystaniem CNN) zwiększenie głębokości może pomóc wydobyć z danych większą ilość informacji. Zbyt głębokie Autoencodery nauczą się kopiować X w Y bez zbudowania ich skompresowanej reprezentacji, na której nam zależy. Warto na tym przykładzie sprawdzić, jak będzie się zmieniał MSE, gdy zwiększymy głębokość oraz gdy zredukujemy liczbę neuronów.
Model został przetrenowany na 100 epokach. Powyżej tej wartości nie wykazywał tendencji do poprawy i wynik ustabilizował się na poziomie
0.017–0.018 MSE.
Na wykres naniesiemy próg odcięcia [threshold=0.035] powyżej którego będziemy klasyfikować zdarzenia jako podejrzane.
Taki kawałek kodu po modyfikacjach może zostać wpięty do systemu i służyć jako walidator. Wszystko z MSE ≥threshold poleci na dedykowaną kolejkę podejrzanych zdarzeń wymagających analizy, reszta będzie obsługiwaną standardowym flow.
W przykładach wykorzystałem sztucznie wygenerowany zbiór danych przeznaczony do klasteryzacji. Dane dla dwóch klas posiadały cechy z zauważalnym rozrzutem między sobą, co pomagało modelowi w trakcie nauki wykryć różnice w Wrealnych sytuacjach tylko niektóre z cech będą odbiegać od normy. Autoenkodery są jedną z możliwości oceny zdarzenia i powinniśmy stosować je razem z innymi algorytmami.
Mateusz Frączek, R&D Division Leader
W dzisiejszych czasach większość przedsiębiorców zdaje sobie sprawę z potencjału marketingowego jaki niesie ze sobą wykorzystywanie najnowszych rozwiązań technologicznych oraz dostrzega konieczność rozwoju i inwestowania w nie. Kluczową składową sukcesu w biznesie, która pozwala generować zyski i zmniejszać wydatki, jest umiejętność bieżącego podążania za rynkiem i dopasowanie do jego realiów. Niekiedy jednak przedsiębiorcy nie wyobrażają sobie w jaki sposób mogliby wykorzystać nowe, skomplikowane technologie i jak mogą one być zastosowane w procesach biznesowych ich działalności, które wydają się nie mieć żadnego związku z hasłami takimi jak sztuczna inteligencja. Coraz więcej nowych możliwości i rozwiązań pojawia się obecnie niemal z miesiąca na miesiąc i aby sporządzić wyczerpującą listę możliwości, potrzeba by napisać raczej książkę zamiast artykułu. Warto zatem skorzystać z konsultacji, jakie możemy zaoferować, aby wspólnie wypracować nowe rozwiązania, dające wartość w kontekście Państwa biznesu. Na naszym blogu pojawiają się wpisy o zastosowaniach sztucznej inteligencji w różnych branżach i szczerze zachęcam do zapoznania się z nimi. Zaś w tym artykule postaram się przybliżyć kilka kluczowych zagadnień, które stanowią pierwszy krok na drodze do wdrożenia sztucznej inteligencji w każdej firmie.
Do nowych technologii, które z całą pewnością są warte wzięcia pod uwagę, należą sztuczne sieci neuronowe oraz uczenie maszynowe. Dają one niesamowite możliwości w przetwarzaniu różnego rodzaju danych, usprawniając wiele czynności, czy też dając wartościowe spostrzeżenia, które można wykorzystać do zwiększenia zysków. Do takich spostrzeżeń, uzyskanych dzięki algorytmom sztucznej inteligencji należeć mogą przykładowo wnioski w postaci – “do tego typu klientów musimy adresować inne rozwiązania, aby zwiększyć sprzedaż”. Wspomniane dane to mogą być dokumenty, obrazy, dźwięki, nagrania, czy też tabele bazy danych. Ważne jest jednak, aby zbudować świadomość osób chętnych do inwestowania w tę kategorię algorytmów, odnośnie do wymagań, jakie muszą zostać spełnione, aby inwestycja ta była skuteczna. Warto odpowiedzieć sobie skrupulatnie na kilka pytań, a pierwszym z nich jest – jakie dane posiadam? Aby znaleźć odpowiedź na to pytanie, warto wypisać sobie procesy zachodzące w firmie. Nie zawsze na pierwszy rzut oka widać, że posiadając magazyny z kamerami, posiadamy co najmniej 2 źródła danych. Po pierwsze dane magazynowe, które można wykorzystać do optymalizacji rozłożenia towaru i jego pobierania w odniesieniu do terminów transportów. Po drugie, dane w postaci obrazu z kamer, które można wykorzystać np. w celach bezpieczeństwa.
Dane, które posiadasz, zazwyczaj poddawane są ewaluacji zgodnie z poniższą listą. Bardzo istotna w tym miejscu informacja, że dane nie muszą być idealne! Istnieją sposoby na to, aby radzić sobie z błędami, brakami w danych itp., jednakże zawsze lepiej jest dążyć do ideału, a na pewno dobrze przygotowane dane przełożą się na sprawność pracy z nimi oraz wyniki, jakie dzięki ich przetwarzaniu będzie można osiągnąć.
Przyjmuje się, że im bardziej złożony problem chcesz rozwiązać, tym więcej danych potrzebujesz. Dzisiejsze rozwiązania dają naprawdę niesamowite możliwości, w niektórych przypadkach, nawet z bardzo niewielką ilością danych, które muszą po prostu oddawać charakterystykę Twoich działań. Niemniej Istnieją pewne zasady (oparte na doświadczeniu) mówiące o absolutnym minimum. Przykładowo, korzystając ze wspomnianego wcześniej magazynu, jest to 1000 transakcji, które zostały obsłużone. Wszystko to bardzo mocno zależy jednak od konkretnego przypadku i warto już na tym etapie zasięgnąć rady ekspertów. Z punktu widzenia osób technicznych, ważne jest również, aby znać granice, po których przekroczeniu model nie będzie dawał już lepszych wyników, a wręcz zacznie spadać poziom jego stabilności. Nie znaczy to bynajmniej, że w takim momencie nie warto już gromadzić danych. Dane pozwalają nam na znajdowanie w historii pewnych zależności i wzorców na bazie, których chcemy również przewidywać przyszłe zdarzenia. I tu kolejna ważna uwaga. Możemy starać się przewidywać pewne ogólne prawdy niezależne, kiedy wystąpiły. Czy był to rok 2000, czy 2017. Lato, czy zima. Możemy także szukać czegoś, co jest zależne od wielu innych czynników, które chcemy powiązać z czasem ich występowania. Dlatego tak istotne jest nie tylko przechowywanie archiwalnych danych, ale również zbieranie tych jak najbardziej aktualnych.
Jeżeli chcemy precyzyjnie przewidywać pewne istotne fakty, bardzo ważne jest, aby zbiór danych był stosownie zbilansowany, tzn. musi być jak najbardziej równomierny rozkład ilości rekordów w każdej z klas. Choć tu ważna uwaga, mogą zaistnieć przypadki, kiedy nie będzie możliwości uzyskania takiego równomiernego rozkładu i nie powinno się tego zmieniać, ponieważ w uzasadnionych przypadkach sam ten fakt może również nieść za sobą jakiś rodzaj informacji do wykorzystania w modelu. Z reguły jednak sztuczne bilansowanie zbioru powoduje jedynie uzyskanie bezużytecznego modelu.
Miejsce drugie tego punktu nie jest przypadkowe, ponieważ jeżeli posiadamy wystarczająco dużo danych, problem niezbalansowanej próbki nie jest już tak istotny. W badaniach udowodniono, że żadna z metod bilansujących nie może równać się z efektem uzyskiwanym poprzez dodanie większej ilości danych.
Możliwość uzupełniania przez pracownika pól tekstowych w formularzach generuje wiele potencjalnych problemów na poziomie spójności danych w bazie, a także późniejszego ich przetwarzania. Wszędzie tam, gdzie nie ma co najmniej walidacji albo w najlepszym przypadku możliwości wyboru wartości ze słowników, bardzo często spotykane są np. literówki, czy też wartości wpisywane bez staranności jak np. wiek: 200 lat. Przyczyny takich sytuacji należy szukać w brakach wypracowanych standardów, szablonów oraz słowników, z których mogliby korzystać pracownicy. Jest to aspekt bardzo istotny, żeby zweryfikować zgodność danych z rzeczywistością i jak najszybciej wychwycić błędy oraz wdrożyć wspomniane rozwiązania eliminujące ponowne występowanie takich problemów, ponieważ dane, które nie oddają realiów, będą skutkowały mało wiarygodnymi wynikami.
Puste, nieuzupełnione pola tabel powodują, że dany rekord może okazać się bezużyteczny, pomimo posiadania być może innych, bardzo wartościowych informacji. Widać więc, że jest to strata potencjału, na jaką szkoda sobie pozwolić. Takie sytuacje najczęściej wynikają z podobnych powodów, jakie zostały przedstawione w punkcie trzecim.
W Jaki sposób unikać wspomnianych strat i radzić sobie w sytuacji, kiedy jeden, lub wiele powyższych punktów nie zostaje spełnionych? Rozwiązaniem jest przede wszystkim wypracowanie odpowiednich standardów funkcjonowania firmy, ale co jest jeszcze ważniejsze, wprowadzenie ich i konsekwentne stosowanie. Poprzez ten artykuł chciałbym rozpocząć serię ukierunkowaną na dzielenie się wiedzą związaną z projektami z zakresu sztucznej inteligencji. W portfolio naszego zespołu posiadamy szereg doświadczeń zarówno w sferze komercyjnej, jak i naukowo badawczej. W każdym przypadku serdecznie zapraszamy do kontaktu, ponieważ informacje w tym artykule, są jedynie wierzchołkiem góry lodowej, jaką jest wiedza na temat rozpoczynania projektów z wykorzystaniem uczenia maszynowego i sieci neuronowych. Nawet jeśli po tej lekturze masz wrażenie, “to nie dla mnie”, niekoniecznie jest tak w rzeczywistości.
Krzysztof Sapiejewski – Data scientist