W jaki sposób uczy się model AI?

Jak wygląda proces nauki modelu?

Chociaż może wydawać się skomplikowany, jest strukturalnie spójny i opiera się na pewnych fundamentalnych etapach. W tym artykule przyjrzymy się krokom, które prowadzą do stworzenia i wytrenowania efektywnego modelu uczenia maszynowego.

Zebranie danych oraz określenie metodyk

Najpierw potrzebujemy danych podzielonych na dane wejściowe X i dane, które chcemy przewidywać Y. Następnie należy określić z jakich metodyk chcemy korzystać. Jaki typ danych jest na wejściu oraz jaki typ danych ma być na wyjściu. Jeżeli nie wiesz czym są metodyki przeczytaj artykuł o metodykach

Wybór metryk

Metryki są inne dla każdego typu metodyk AI. Na jedną metodykę często przypada kilka metryk. Wybór głównej metryki jest kluczowym elementem, ponieważ na jej podstawie będziemy mogli śledzić progres modelu. Określać, czy radzi sobie lepiej czy gorzej.

Oczyszczenie danych

W przypadku danych tabelarycznych, czyli np. dane z excela. Sprawdzamy, czy nie ma wartości pustych. Jeżeli któreś kolumny są puste mamy 2 opcje. Albo uzupełnić je jakąś wartością. Może to być mediana w przypadku liczb lub najczęściej pojawiająca się wartość tekstowa. Jeżeli danych brakujących jest naprawdę niewiele możemy pokusić się o usunięcie całych rekordów, w których mamy brakujące wartości.

Usunięcie wartości odstających (outliner'ów)

Następnie sprawdzamy czy dane nie posiadają tzn. outliner’ów czyli wartości odstające. Jeżeli tak należy je usunać. Dlaczego? Wyobraź sobie, że masz za zadanie estymować ceny mieszkań. Twój zbiór danych posiada tysiące mieszkań. 99% cen mieszkań zawiera się w przedziale 200tys-1mln. Co, jeżeli w tym zbiorze znajdzie się 1 % mieszkań, których ceny wahają się od 3-20mln? Model ucząc się na podstawie tych drogich mieszkań będzie zawyżał ceny dla reszty mieszkań.

Nierównomierny podział zbiorów

Mając zadanie klasyfikacji binarnej np. Przewidywanie choroby. Jeżeli danych zawierających etykietę braku choroby będzie 90%, a tych zawierających chorobę tylko 10% to będziemy mieli problem. Dlatego, bo algorytm ucząc się będzie chciał zdobyć jak największą liczbę punktów, czyli wykazać dużą skuteczność w odpowiedziach. Najprostszą drogą dla algorytmu będzie zawsze odpowiadanie, że pacjent nie ma choroby, bo w ten sposób osiągnie 90% skuteczność. Algorytmy sztucznej inteligencji mając postawiony konkretny cel nie zawsze mogą do niego dochodzić tak jak my byśmy sobie tego życzyli. Dlatego należy uważać jakie dane wpuszczamy do zbioru treningowego.

Rozwiązaniem jest redukcja etykiet z brakiem choroby, aby odpowiadała ilości etykiet z chorobą lub zwiększenie etykiet z chorobą poprzez klonowanie. W ten czy inny sposób chcemy osiągnąć zbiory, które są zbliżone w ilości.

Przetworzenie danych do postaci liczb

Dla danych, które zawierają pojedyncze słowa lub długi tekst lub obraz lub dźwięk należy przetworzyć te dane do postaci liczb. Ponieważ tylko taki język rozumie komputer.

Normalizacja

Gdy dane mamy już w postaci liczb należy je znormalizować. W skrócie, jeżeli mamy wartości od 1 do 1000. Chcemy je zmapować do liczb między 0-1.

Podział danych

Następnie należy podzielić dane na:

Zbiór treningowy - to z reguły 80% zbioru oryginalnego. Jest to zbiór, którym trenujemy model AI.
Zbiór testowy – czyli pozostałe 20% zbioru oryginalnego. Gdy model zostanie już nauczony danymi treningowymi, należy sprawdzić jak model sobie radzi. Robimy to właśnie na zbiorze testowym.
Przeciek danych – bardzo ważne jest, aby nie zrobić błędu podczas dzielenia danych. Ponieważ jeżeli tak się stanie i dane, które były w zbiorze treningowym pojawią się w zbiorze testowym, wówczas przy sprawdzaniu skuteczności model będzie znał odpowiedzi i sztucznie zawyży swoją skuteczność.

Trenowanie modelu

Gdy wszystkie powyższe czynności wykonamy możemy wreszcie przystąpić do trenowania modelu.

Problem polega na tym, że nie mamy jednego modelu do wyboru per metodyka. Są ich setki. Dodatkowo możemy tworzyć własne modele deep learningowe. Każdy model będzie osiągał inne wyniki. Każdy trening będzie wymagał czasu. W zależności od typu i ilości danych, jeden trening (iteracja) może trwać od kilku sekund do kilkunastu godzin.

Ale nie martwmy się tym na razie. Wybierzmy 1 model, który wg nas poradzi sobie najlepiej. Wytrenujmy ten model na danych, a następnie sprawdzimy wynik i voila. Mamy coś co nazywamy modelem podstawowym – baseline modelem. Załóżmy, że nasz model osiągnął efektywność na poziomie 65%. W przypadku klasyfikacji binarnej będzie to 15% powyżej rzutu monetą. Nieźle. Jednak co dalej? Dalej następuje faza eksperymentów.

Ulepszanie modelu

W tej fazie chcemy zwiększyć skuteczność modelu. Co możemy w tym celu zrobić?

Testowanie innych modeli

Modele dzielą się na statystyczne, machine learningowe oraz deep learningowe.

Jedne są prostsze, a więc trening będzie przebiegał szybciej. Jednak, jeżeli problem będzie skomplikowany modele te nie będą w stanie uchwycić istoty problemu i zaproponować nam dobrej skuteczności. Proste modele dobrze nadają się do problemów, które mają charakterystykę liniową. Inne modele są bardziej złożone i czas nauki będzie zdecydowanie dłuższy, jednak są one w stanie rozwiązywać trudniejsze problemy. Szczególnie mówimy tutaj o problemach z charakterystyką nieliniową oraz dużą ilością cech - X. Przykładowo problem, który ma tylko 2 cechy np. wiek i waga jest znacznie prostszy do rozwiązania aniżeli problem, który ma 20 cech np.: waga, wiek, cholesterol, poziom cukru, ciśnienie, bmi, przebyte choroby, itd. Istotne jest aby wiedzieć jaki model nadaje się do jakiego problemu, ponieważ w ten sposób możemy sobie zawęzić listę modeli do przetestowania.

Hyperparameter tunning

Modele można tunningować. Mają one swoje wewnętrzne parametry nazywane hiperparametrami, które można zmieniać co wpływa na jakość nauki. Wyobraź sobie, że dostajesz potrawę w restauracji. Niech będzie to pieczona ryba – najlepsza jaką w życiu jadłeś/aś. Wracając do domu chcesz odtworzyć tę potrawę. Widziałeś/aś z jakich składników się składa (masz dane), ale nie wiesz w jakich temperaturach było pieczone. Idziesz do sklepu i kupujesz 999 dokładnie tych samych ryb. Następnie wrzucasz je po kolei do piekarnika na temp 160,170, …250 oraz za każdym razem zmieniasz czas pieczenia. Przy pieczeniu 578 ryby stwierdzasz, że to jest to! Dokładnie takie jak w restauracji. Zapisujesz parametry: Temperatura 220, czas 45min. To samo dzieje się gdy tunningujesz hiperparametry modelu.

Proste modele statystyczne jak arima mogą mieć tylko 3-4 parametry, oraz najczęściej ustawia się je w przedziale od 0-12, więc możliwość kombinacji jest 12*12*12=1728. Więc teoretycznie jeżeli chcielibyśmy przeprowadzić wszystkie kombinacje należałoby przeprowadzić 1728 treningów, aby wybrać najoptymalniejszy zestaw parametrów. W praktyce jednak są metody, aby zredukować liczbę treningów.

Nieco bardziej złożone klasyczne modele machine learningowe mogą mieć już hiperparametrów więcej, więc liczba kombinacji może wahać się od kilkuset dla Linear Regressor, SVM do kilku milionów dla Random forest.

Modele deep learningowe mogą mieć miliony parametrów, które w większości dostosowuje już sam model w trakcie treningu. Jednak treningi mogą trwać naprawdę długo. Przykładowo gpt-3 ma 175 miliardów paremtrów, a gpt-4 1,76 biliona parametrów. Aż ciężko sobie wyobrazić te liczby.

Wraz z długością treningu idzie zużycie drogich kart graficznych i energii. Tworząc małe modele z małą ilością danych trening zazwyczaj zajmuje kilka minut do kilku godzin. Koszta tego są nie duże – kilka, kilkanaście złotych. Jednak w przypadku olbrzymich ilości danych, którymi dysponują korporację jeden trening może oznaczać koszt 2 milionów dolarów.

Dlatego kluczowe dla sukcesu projektu jest posiadanie doświadczonych osób trenujących modele - data scientist, które na podstawie wiedzy i doświadczenia potrafią ograniczyć liczbę kombinacji do minimum. Lepiej przeprowadzić 1000 treningów niż zmagać się ze 100 tysiącami.

Inżynieria danych

Im bardziej uprościmy dane wejściowe tym łatwiej i szybciej nasz model znajdzie zależności i zacznie dobrze działać. W tym celu często usuwa się kolumny (w przypadku danych tabelarycznych), które nie wnoszą nowych informacji. Np. jeśli analizujemy dane o sprzedaży produktów w sklepie i mamy dwie kolumny: "Cena Produktu" i "Cena Produktu z VAT", drugą kolumnę można usunąć, ponieważ nie wnosi ona dodatkowej wartości do analizy. Znając cenę produktu i stawkę VAT, można łatwo obliczyć cenę z VAT.

W tym celu korzystamy z takich narzędzi jak redukcja wymiarowości czy macierz korelacji.

Transformacje danych

Wspomnieliśmy poprzednio, że problemy liniowe są łatwiejsze od problemów nieliniowych. Są sposoby, aby transformować dane w taki sposób, aby z problemu nieliniowego przejść w problem liniowy. Np. transformacja logarytmiczna, pierwiastkowanie, box cox.

Więcej danych

Czasami model nie jest w stanie nauczyć się dobrze rozpoznawać wzorców, ponieważ danych jest zbyt mało. Wówczas należy zebrać więcej danych, aby wystartować z treningiem.
Gdy stworzy się już model finalny, dane, na których był uczony najczęściej są dalej zbierane. Więc warto po jakimś przetrenować model na nowo z dodatkowymi danymi.

Faza eksperymentów

Te 5 elementów składa się na fazę eksperymentów. Po każdej zmianie: modelu/hiperparametru/zmianie w danych trenujemy model na nowo i sprawdzamy jaką ma skuteczność na podstawie wcześniej wybranej metryki.

Co to oznacza dla Ciebie?

To czym różni się klasyczny development programu komputerowego od projektu AI to to, że zaczynając program mamy ustalone krok po kroku jakich funkcjonalności potrzebujemy, następnie je estymujemy i mamy gotową cenę oraz spodziewany czas.

W przypadku projektów AI typ danych, ich ilość oraz jakość za każdym razem jest inna. Nie wiemy od początku, ile czasu zajmie projekt, jaki efekt osiągniemy oraz jaki będzie jego koszt. W momencie zbudowania baseline modelu zaczynamy mieć jakieś pojęcie o tym jak trudno/łatwo będzie osiągać kolejne pułapy skuteczności modelu. Dlatego niemożliwe jest na samym początku określenie 70% skuteczności – X zł, 80% skuteczności - y zł. Cały proces tworzenia modelu AI jest iteracyjny i nowych informacji dowiadujemy się na bieżąco.

Skontaktuj się i zacznij podejmować skuteczniejsze decyzje na podstawie analizy danych