Zbierz drużynę i podbij krainę Sztucznej Inteligencji
Ciekawy jest kontekst tych słów, które wybrzmiewały zawsze wtedy, gdy gracz chciał opuścić jakiś teren i wyruszyć w dalszą przygodę, ale nie zebrał w odpowiedni sposób drużyny swoich bohaterów.
Sytuacja ta przypomina mi firmy, które chciałyby wyruszyć na podbój krainy Sztucznej Inteligencji, ale zapomniały zebrać do tego celu odpowiednią drużynę. W dalszej części artykułu postaram się opisać, z jakich specjalistów powinien składać się zespół, który poprowadzi naszą firmę w trakcie tej trudnej wyprawy.
Komunikacja głupcze!
Kiedy mówimy o Machine Learning (bardziej fachowa nazwa biznesowo pojmowanej Sztucznej Inteligencji) od razu kojarzą się nam Data Scientists budujący zawiłe modele mówiące nam rzeczy, na które nigdy byśmy nie wpadli. A to w realnym kontekście biznesowym musimy uznać za mocne przejaskrawienie.
Przewagą większości algorytmów Machine Learning nie jest to, że podejmują decyzje lepiej niż specjaliści z danej dziedziny. Mogą natomiast podejmować wiele dobrych decyzji w ułamkach sekund. Najczęstszą przewagą Machine Learning jest więc nie tyle jakość, ile ilość podejmowanych decyzji.
Ale, żeby decyzje były poprawne, algorytm musi zostać nauczony ich podejmowania. I tu pojawia się pierwszy członek naszej drużyny – Analityk Data Science. Ogólnie ma on trzy zadania.
Po pierwsze musi zrozumieć kontekst biznesowy, czyli sposób w jaki obecnie są podejmowane decyzje przez ludzi i jakie są ograniczenia biznesowe, które algorytm również będzie musiał uwzględniać.
Po drugie Analityk Data Science musi zrozumieć dane, na podstawie których będziemy uczyć algorytm. Musi wiedzieć, co kryje się za wartościami w bazie danych oraz w jaki sposób odzwierciedlają one proces biznesowy.
Po trzecie musi tę wiedzę przetłumaczyć na język zrozumiały dla reszty drużyny, jak i dla budowanego algorytmu. Jeśli na tym etapie komunikacja zawiedzie, dalsze kroki w zasadzie będą bezcelowe.
Najbardziej niedoceniony
W dalszej kolejności nadchodzi czas na przygotowanie danych, więc potrzebujemy drugiego bohatera z naszej drużyny, czyli Inżyniera Danych. Osobiście uważam, że to najbardziej niedoceniany członek zespołu. Dzieje się tak dlatego, że przygotowanie danych jest mało widowiskowe, za to bardzo pracochłonne i łatwo popełnić w trakcie tego procesu błędy. Te drugie z kolei szybko przekładają się na niewłaściwe działanie ostatecznego modelu.
Inżynier Danych w zależności od organizacji będzie pracował na dwóch poziomach trudności. W firmach, w których zaprowadzony jest już ład danych, posiadających hurtownię danych i inne struktury analityczne sytuacja jest prostsza.
Wystarczy wybrać odpowiednie dane i ewentualnie dokonać dodatkowych transformacji. Sytuacja komplikuje się, gdy organizacja postanawia zająć się uczeniem maszynowym przed uporządkowaniem danych. Oznacza to, że Inżynier Danych musi dokonać wszystkich potrzebnych integracji, transformacji i wyliczeń na potrzeby modelu zaczynając od samego początku.
Nie twierdzę, że to niemożliwe. Jest to jednak bardzo karkołomne.
Tam, gdzie dzieje się magia
Wreszcie to, co wszyscy utożsamiamy z uczeniem maszynowym, czyli budowa modelu. Ale jeśli oczekujemy, że nasz kolejny bohater, Programista Data Science to taki hacker rodem z filmów sensacyjnych, to muszę niestety wszystkich rozczarować. Budowa modelu machine learning składa się głównie z 3 elementów.
Pierwszym jest wybór algorytmu, którego będziemy używali. Teoretycznie to proste, ponieważ z góry można założyć, na co się zdecydujemy, ale później okazuje się, że model nie do końca działa. Zaczynamy sprawdzać, czy inny algorytm nie byłby lepszy, zaczynamy łączyć kilka algorytmów, dla uzyskania bardziej wiarygodnego efektu i tak dalej…
Drugi element to przygotowanie danych bezpośrednio do wykorzystania w modelu. Jest to najbardziej pracochłonna i kreatywna część budowania rozwiązania. Łatwo to wyjaśnić na prostym przykładzie. Załóżmy, że chcielibyśmy określić płeć na podstawie imienia.
Jeśli podamy algorytmowi kolumnę z całym imieniem, osiągnie np. 95% skuteczności. Jeżeli jednak dodamy dodatkową kolumnę z ostatnią literą imienia, model osiągnie wyższą skuteczność np. 99%.
Trzeci element układanki to parametryzacja samego modelu. Ile ma być warstw sieci neuronowej, jak głęboko ma sięgać drzewo decyzyjne, jak wiele ma być drzew w lesie losowym? Każdy z tak dobieranych parametrów musi być w rzeczywistości pewnym kompromisem pomiędzy dokładnością modelu a wydajnością jego nauczenia i korzystania z niego.
Warto dodatkowo zauważyć, że na rynku można spotkać specjalistów łączących role analityka i programisty Data Science. Jest to o tyle dobra sytuacja, że taka osoba może przeprowadzić większość procesu od komunikacji z biznesem, przez zrozumienie danych, do zbudowania modelu samodzielnie.
Jeśli w Waszych organizacjach są takie osoby, to bardzo o nie dbajcie.
Bez architekta ani rusz
Większość modeli nigdy nie zostaje wdrożonych na produkcję. Oczywiście w wielu przypadkach modele te nie osiągają oczekiwanych złożeń, ale jest bardziej prozaiczny problem. Firmy nie mają odpowiedniej architektury i standardów uruchomienia oraz utrzymania modeli.
I tu pojawia się czwarty członek drużyny, czyli Architekt środowisk Machine Learning. Co ciekawe, w rolę tę świetnie wpasowują się doświadczeni programiści języków obiektowych takich jak Java czy C#.
Zadaniem architekta jest zaprojektowanie i budowa środowiska IT pozwalającego na uruchomienie i korzystanie z przygotowanych modeli machine learning. Na czym polega trudność?
Otóż po pierwsze uczenie większości modeli, które jest wykonywane cyklicznie, podobnie jak ich wykorzystywanie, jest bardzo czasochłonne. Potrzebujemy więc zbudować środowisko zdolne do szybkiego skalowania się, ale i do powrotu do małej skali, żeby nie generować niepotrzebnych kosztów.
Po drugie, jeżeli spojrzymy na model jak na pewną czarną skrzynkę, to musimy jej dostarczyć dane wejściowe, odebrać wynik, obsłużyć ewentualne błędy, zapisać sposób zachowania się modelu w logach. Innymi słowy, zaopiekować się nim tak, aby on sam mógł skupić się na tym, w czym jest najlepszy – na przygotowywaniu rekomendacji lub podejmowaniu decyzji.
Czas ruszyć w drogę
Tak przygotowana drużyna jest gotowa wybrać się w najtrudniejsze nawet misje. Na koniec chcę jednak zwrócić uwagę na sposób zarządzania takim zespołem. Musimy wziąć pod uwagę dwa ważne aspekty.
Po pierwsze w Data Science słowo Science nie znalazło się przez przypadek. Dziś ta dziedzina nie posiada sztywnych reguł. Wszystko, czego dokonuje opisany powyżej zespół, ma charakter stawiania hipotez, prób i błędów.
Oczekiwanie, że efekt będzie na już, że każdy model będzie działał albo że każdy problem da się rozwiązać przy pomocy uczenia maszynowego, należy włożyć między bajki.
Po drugie w zarządzaniu takimi zespołami lepiej sprawdzi się podejście zwinne, ponieważ bardzo ciężko oszacować, kiedy model będzie gotowy. Natomiast świetnie widać kolejne przyrosty i poprawę jego działania.
Dodatkowo przy kierowaniu takim zespołem dobrze jest obdarzyć go zaufaniem. Skoro zebraliśmy drużynę specjalistów, to mówienie im co i jak mają robić, spowoduje tylko frustrację, a cel podróży pozostanie daleko przed nami.