Poznajcie Jakuba Porzyckiego (Machine Learning Team Leadera), pasjonata i doświadczonego praktyka w dziedzinie AI i Machine Learningu (ML). Kuba swoją wiedzę wykorzystuje w biznesie, ale też często i chętnie dzieli się nią podczas eventów edukacyjnych. Przekonajcie się sami, ile w nim pasji i zaangażowania.
1. Kuba, jesteś naszym mocnym ogniwem w kontekście AI i ML. I to na wielu płaszczyznach, bowiem chętnie angażujesz się w różnego rodzaju inicjatywy rozwojowo-rekrutacyjne. Zaraz porozmawiamy “technicznie”, ale na początek wielkie podziękowania dla Ciebie, że znalazłeś czas na tę rozmowę.
Dziękuję za miłe słowa i cała przyjemność po mojej stronie. :)
2. Zaczynajmy. 😊 Już trochę działasz w obszarze Machine Learningu (ML). Skąd pomysł na taką ścieżkę kariery?
Wcześniej spędziłem kilka lat, pracując na AGH, gdzie zajmowałem się symulacjami komputerowymi - to też rodzaj sztucznej inteligencji, ale tzw. symbolicznej. Modele tworzy się inaczej niż za pomocą uczenia maszynowego. Dlatego, kiedy zdecydowałem się na przeniesienie do biznesu, to szukanie pracy w obszarze AI wydawało mi się naturalną decyzją.
Patrząc nieco szerzej, chyba zawsze chciałem robić coś, co ma “efekt wow”. Coś, co troszkę przypomina “magię”. Stąd wcześniej informatyka i programowanie, praca naukowa, a potem sztuczna inteligencja. Mimo paru ładnych lat w branży, nadal fascynujący jest dla mnie moment, kiedy model zaczyna działać i “ot tak” podawać prawidłowe odpowiedzi.
3. Czym dla Ciebie jest ML (machine learning/ uczenie maszynowe)? Jak rozumiesz to zagadnienie?
Kiedy się nad tym dobrze zastanowić, to całkiem trudne pytanie. O ML mówi się na wiele sposobów, np.: że jest to sposób automatyzacji zadań, rozwinięcie analizy danych, zestaw algorytmów do “uczenia” komputerów, albo też metoda zdobywania wiedzy biznesowej.
Według mnie najprościej można to wytłumaczyć poprzez stwierdzenie, że Machine Learning to automatyczne tworzenie modeli rzeczywistego świata na podstawie danych. Model będzie jakimś matematycznym opisem rzeczywistości, jaki tworzymy za pomocą algorytmów ML i danych. Oczywiście model zawsze jest uproszczeniem rzeczywistości.
Przykładowo, analizując historię zakupów, możemy zbudować model (np.: sieć neuronową). Sieć neuronowa na podstawie danych uczy się preferencji zakupowych klientów (czyli zależności pomiędzy parametrami klienta a produktu) i koduje te informacje w postaci wag, czyli połączeń pomiędzy neuronami w sieci. Teraz mając taki model, możemy obliczyć, jakie produkty spodobają się danemu użytkownikowi.
4. Jak wykorzystywany jest ML w Ailleron?
Ailleron tworzy modele ML dla zewnętrznych klientów głównie z branży finansowej. Najczęściej kreujemy modele operujące na danych transakcyjnych, takie jak klasyfikatory rodzaju transakcji, klasyfikatory subskrypcji, klasyfikacja odbiorcy transakcji, detekcja transakcji cyklicznych. Takie modele oprócz bezpośredniej wartości biznesowej wnoszą też dużo dodatkowej informacji o kliencie, którą można wykorzystać w innych modelach.
W ostatnim roku (2023) opracowaliśmy szereg rozwiązań opartych na Generative AI i LLM (Large Language Models). Dobrym przykładem jest AI Prompter – narzędzie, które pomaga pracownikom centrum obsługi klienta znaleźć odpowiednie odpowiedzi na pytania klientów. Wiem, że może się to wydawać kolejnym kiepskim klonem ChatGPT, ale jestem całkiem dumny z tego, co mój zespół osiągnął w zakresie przetwarzania skomplikowanych dokumentów i zapobiegania halucynacjom LLM.
W ofercie mamy też rozwiązania takie jak rekomendacje produktowe, predykcje zachowań klienta, wykrywanie anomalii, segmentację klientów czy usprawnienia do chatbtów. Oczywiście, nie ograniczamy się do tej listy. Pracujemy usługowo, po prostu używając ML do znalezienia rozwiązania problemu, jaki stawia przed nami klient.
5. Opowiedz, jak to wygląda w praktyce. Jak przekonać klienta do wdrożenia rozwiązania ML i pokazać, że to jest dobre i bezpieczne rozwiązanie.
Podczas rozmów z klientami dużo zależy od ich poziomu świadomości na temat Uczenia Maszynowego. Jeszcze niedawno wielu klientów było dosyć nieufnych w stosunku do rozwiązań ML. W rozmowach z nimi kluczowe było pokazanie, że uczenie maszynowe pozwala rozwiązać niektóre problemy znacznie taniej, niż klasyczne programowanie, jednocześnie mając możliwość udowodnienia wysokiej jakości i niezawodności modeli. Między innymi dlatego zaczęliśmy intensywnie pracować nad testowaniem modeli. Oprócz standardowej walidacji modeli podczas trenowania i tuningu hiperparametrów, wprowadziliśmy tzw. “post-train testing”, czyli serię testów weryfikujących jakość modelu od strony biznesowej. Nawiązaliśmy też współpracę z firmą NannyML -specjalizującą się w monitorowaniu modeli, już po ich wprowadzeniu na produkcję.
Trochę inaczej wyglądają rozmowy, kiedy klient jest zafascynowany uczeniem maszynowym. Zazwyczaj wtedy ma już pomysł, jakiego systemu potrzebuje. Wówczas naszym zadaniem jest upewnić się, że pomysł klienta jest możliwy do zrealizowania, ewentualnie zaproponować jakieś zmiany w podejściu. Obecny hype na sztuczną inteligencję, który jeszcze wzmocnił się po premierze ChatGPT powoduje niestety, że wiele osób ma podejście do ML, jako “półmagicznego” remedium na wszystko.
I wreszcie są Ci klienci, którzy mają dużą wiedzę o Machine Learningu. Zazwyczaj mają już u siebie zespoły ML i szukają wsparcia w trudniejszych tematach albo nowych rozwiązań, które jeszcze podkręcą ich wyniki. Zainteresowanie takich klientów można zdobyć pokazując im zaawansowane rozwiązania np. z obszaru: Generative AI i wykorzystanie dużych modeli językowych, a drugą grafowa reprezentacja danych i grafowe sieci neuronowe.
6. Wybór algorytmu, trenowanie, walidacja, testowanie, deployment – to wszystko dotyczy modelu ML. Czy możesz po krótce opisać nam, na czym te kroki polegają?
Wybór algorytmu to decyzja podejmowana przez nas, czyli Inżynierów Uczenia Maszynowego. Wybieramy wtedy algorytm, jaki zostanie użyty do trenowania modelu ML. Jest to o tyle ważne, że przyjmujemy wtedy pewne założenia co do natury zjawiska, jakie modelujemy. Na przykład, jeżeli zdecyduje, że skorzystam z regresji liniowej, to zakładam, że dane zjawisko można zamodelować jako liniową kombinację danych wejściowych. Jeżeli zdecyduje się użyć sieci rekurencyjnej, to znaczy, że spodziewam się, że ważną cechą danego zjawiska jest sekwencyjność, czyli że poprzednie wartości wpływają na wartości kolejne. Oczywiście, w trakcie prac można przetestować wiele różnych algorytmów ML, ale wybór odpowiednich pozwala znacząco skrócić prace.
Z kolei trenowanie modelu to proces, który dzieje się automatycznie, algorytmy ML na podstawie dostarczonych danych trenują konkretne modele tak, aby zminimalizować wartość funkcji błędu. Naszym zadaniem jest wcześniejsze przekształcenie danych do postaci, która będzie najłatwiejsza do nauczenia się przez model. Potem wybieramy algorytm ML oraz to, jakie hiperparametry danego modelu będziemy chcieli przetestować. Hiperparametrem może być na przykład liczba warstw w sieci neuronowej, czy liczba/rodzaj neuronów w danej warstwie albo maksymalna głębokość drzewa decyzyjnego. Potem następuje czas, kiedy włączamy trenowanie modeli, algorytm uczący działa, a my możemy spokojnie iść na kawę. Zwykle trenuje się wiele modeli z różnym zestawem hiperparametrów i wybiera ten, który ma najniższą wartość funkcji błędu.
Podczas walidacji sprawdzamy jakość modelu - zwykle tylko tych najlepszych. Tutaj konieczne jest dobranie odpowiedniej miary jakości. Znowu posłużę się przykładem: załóżmy, że mamy za zadanie zbudować binarny model, który wykrywa bardzo rzadkie zdarzenia, np. jakiś rodzaj fraudu występujący raz na 1000 transakcji. Dla każdej transakcji model ma zwracać wartość true, jeżeli uważa, że dana transakcja jest fraudem, a w przeciwnym wypadku false. Jeżeli jako miarę jakości podczas walidacji przyjmiemy skuteczność (accuracy) - czyli procent poprawnych wskazań - to beznadziejny model, który zawsze zwraca false, czyli nie wykrywa żadnego oszustwa, będzie miał oszałamiające 99,9% skuteczności. Warto zaznaczyć, że prawie nigdy nie udaje się za pierwszym razem wytrenować modelu, który przejdzie walidację, więc często po walidacji wracamy do etapu trenowania modelu.
Kiedy już mamy wytrenowany model, przechodzimy do szczegółowych testów.Wykonujemy wtedy analizę błędnych odpowiedzi, aby przekonać się, czy nie ma jakiś systematycznych błędów w działaniu modelu. W Ailleron przeprowadzamy też testowanie modelu pod względem wymagań biznesowych (tzw. Post-training test). Testowane są takie rzeczy, jak poprawność działania modelu na wszystkich podstawowych przypadkach, brak wpływu biznesowo nieznaczących cech na odpowiedź modelu (np. imię osoby nie ma wpływu na wysokość oferowanego kredytu), czy spełnienie podstawowych założeń (np. cena mieszkania rośnie wraz ze wzrostem metrażu). Na tym etapie sprawdza się też model pod kątem ew. uprzedzeń pod względem cech społecznych tzw. social bias.
Kiedy model przejdzie wszystkie testy, może być przygotowany do zastosowania (deployment). Jest to w praktyce opakowanie modelu w dodatkowe elementy umożliwiające komunikację z nim. Sam model zapisywany jest po prostu w postaci pliku (zawierającego najczęściej opis struktury i wagi sieci neuronowej). Aby mógł działać produkcyjnie, model opakowywany jest w mikroserwis,który komunikuje się za pomocą jakiegoś interfejsu np. REST czy Kafka. Do takiego mikroserwisu możemy potem wysłać dane, które muszą być w takiej samej postaci, jaką używaliśmy do wytrenowania modelu. I otrzymać odpowiedź.
Uff... wyszła długa odpowiedź. Ale to chyba wszystko.
7. Skomplikowane to o czym mówisz, ale z drugiej strony fascynujące. Jak skutecznie i zrozumiale definiować zadania przy tworzeniu modelu, aby komunikacja zarówno z osobą “techniczną” jak i “nietechniczną” przebiegała sprawnie i skutecznie?
Tutaj znowu wracamy do kluczowego aspektu naszej pracy, czyli rozmów i warsztatów z klientem. Z moich dotychczasowych doświadczeń wynika, że na początku trzeba skupić się na rozmowach “z biznesem” i odpowiedzieć na kilka kluczowych pytań. Przede wszystkim trzeba dowiedzieć się, jaka jest potrzeba biznesowa, jaką klient chce rozwiązać.Tutaj uwaga, chodzi o faktyczny problem klienta, a nie jego pomysł na model. Być może inne podejście niż wymyślone przez klienta będzie lepsze. Warto poznać jego oczekiwania i upewnić się, że są one realne. W szczególności czy klient zdaje sobie sprawę, że żaden model ML nie będzie miał 100% skuteczności. Ważne jest, czy klient posiada dane, na których można nauczyć model i czy może je nam udostępnić. I chyba najważniejsze, czy to jest w ogóle możliwe.
Kiedy już uzyskamy pozytywne odpowiedzi na wszystkie powyższe pytania, można przejść do rozmów z osobami technicznymi. Zazwyczaj są to osoby odpowiedzialne za dostarczenie danych. Możemy z nimi porozmawiać o tym, z jakiego systemu będą nam udostępnione dane (ważne, żeby był to ten sam system, który potem będzie korzystał z modelu). Dużo czasu zawsze zajmuje analiza schematu danych i zrozumienie poszczególnych kolumn. Warto też upewnić się, że dane są aktualne. Uczenie modelu na danych z rynku sprzed kilku lat raczej mija się z celem.
8. Dane to kluczowy element w działaniu i rozwoju ML. Jak zdobywać te najbardziej wartościowe?
Zdecydowanie, dane są najważniejsze. Szkoda, że wiele osób o tym zapomina. Ciężko mi już nawet policzyć, ile razy słyszałem propozycje: “Zróbmy ten model na mockowych danych.” A przecież to jest działanie pozbawione sensu, jedyne czego model będzie się w stanie nauczyć, to reguł, jakich użyliśmy do wygenerowania tych danych, a nie realnych reguł biznesowych*.
The data we work on is customer data, so to “get” it, it is necessary to convince our client or partner that providing it is required to train the model, then to ensure the proper contracts under which the data will be transferred, and finally to reassure the client that the data will be safe with us. To make it as easy as possible for our clients to provide data, we help them select the minimum set of data needed to train the model, anonymize it and export it.
9. Dużym ryzykiem jest wyciek danych. Jak temu zapobiec? Jak się chronić?
Wyciek danych w tym przypadku można rozumieć na dwa sposoby i w sumie oba niosą duże zagrożenie. Pewnie większość osób słysząc o wycieku danych pomyśli o wydostaniu się poza firmę informacji, jakie wykorzystujemy do trenowania modeli. Takie zdarzenie byłoby oczywiście bardzo poważnym incydentem, w szczególności, że zazwyczaj pracujemy na danych finansowych. Dlatego mamy zbiór procedur, których trzymamy się podczas pracy z danymi. Dodatkowo ograniczamy ryzyko poprzez wspólne warsztaty z klientami, gdzie ustalamy minimalną ilość danych potrzebnych do wytrenowania modelu.
Natomiast w kontekście uczenia maszynowego wyciek danych jest innym zjawiskiem. Zdarza się on wtedy, kiedy w zbiorze danych treningowych znajdą się informacje, które nie powinny tam być. Najczęściej są to dane, które nie będą dostępne dla modelu podczas jego produkcyjnego użycia. Przykładowo, kiedy dostaniemy od klienta eksport z hurtowni danych, a model ma docelowo pracować na systemie transakcyjnym. Najlepiej zapobiegać temu poprzez warsztaty techniczne z klientem, gdzie dokładnie omawiamy dane, jakie nam przesyłają. Współpraca z zespołem po stronie klienta jest tutaj kluczowa.
Innym przypadkiem wycieku danych jest znalezienie się identycznych przykładów w zbiorze treningowym i walidacyjnym. Wtedy model ML zamiast uogólniać wiedzę, po prostu uczy się poszczególnych przykładów na pamięć. Pewnie każdy z nas miał kiedyś egzamin, na który dostał listę pytań. Wtedy do udzielenia poprawnej odpowiedzi nie potrzeba zrozumienia tematu, a tylko nauczenia się, że “jak jest pytanie z tym rysunkiem, to wybierz odpowiedź B”. Analogicznie może stać się z modelem, który podczas walidacji spisze się świetnie, ale kompletnie nie będzie sobie radził po wdrożeniu na produkcje. Takie przypadki zwykle są efektem błędów we wstępnym przetwarzaniu danych, trzeba więc dużą uwagę przykładać do weryfikacji kodu. Podczas spotkań zespołu w firmie urządzamy sobie również wewnętrzne warsztaty, podczas których prezentujemy kroki pracy z najważniejszymi danymi.
10. Masz ogromne doświadczenie w ML i opowiadasz o tym z wielką pasją. Prowadzisz warsztaty, zajęcia na uczelniach. Lubisz dzielić się wiedzą?
Tak, lubię przekazywać wiedzę, opowiadać o różnych zagadnieniach. Był taki czas, kiedy pracowałem na AGH i jednocześnie prowadziłem zajęcia z programowania dla dzieci i młodzieży. Wtedy uczyłem prawie codziennie. Teraz to raczej kilka - kilkanaście spotkań w ciągu roku, ale nadal sprawia mi to dużo satysfakcji. Bardzo miło wspominam wykład na tegorocznym Studenckim Festiwalu Informatycznym. Po zakończeniu prezentacji sporo osób zostało i jeszcze przez 45 minut odpowiadałem na serię pytań.
11. Firma Cię w tym wspiera?
Tak, przygotowanie się do wykładu czy warsztatów zabiera dużo czasu. Na szczęście Ailleron mocno inwestuje w rozwój pracowników oraz promocję firmy poprzez inicjatywy edukacyjne, więc mam odpowiedni czas na przygotowanie się. Firma, głównie rękami koleżanek i kolegów z Marketingu i Employer Brandingu, mocno pomaga w organizacji, edytowaniu materiałów i ich promocji. Widać to było chociażby po webinarze na temat ML i chatbotów, jaki organizowaliśmy wspólnie z BNP Paribas.
Z nowych inicjatyw, nad którymi aktualnie pracujemy razem w całym zespołem, jest cykl artykułów o ML. W drugiej połowie roku powinna ukazać się ta seria. Zachęcam oczywiście do lektury.
12. Miałeś okazję dzielić się swoim doświadczeniem również wewnątrz organizacji?
Tak, w ostatnim czasie większość szkoleń prowadzę dla osób wewnątrz firmy. Niedawno mieliśmy bardzo fajne spotkanie ze sprzedawcami, podczas którego rozmawialiśmy o szczegółach naszych modeli tak, żeby potrafili jeszcze lepiej opowiadać o nich klientom.
13. ML jest obecnie prężnie rozwijającą się dzieciną. Wiele młodych osób chce podążać tą ścieżką. Jakie są opcje pracy i możliwości rozwoju w obszarze ML w Ailleron?
Rzeczywiście, obecnie ML jest bardzo perspektywiczną dziedziną, gdzie można nie tylko pracować nad ciekawymi problemami, ale też bardzo szybko się rozwijać. Z drugiej strony, nie przychodzi mi teraz do głowy żadna inna dziedzina, która w ostatnim roku zmienia się tak szybko jak ML. Trzeba być gotowym na ciągły rozwój i naukę.
W samym Ailleron jest sporo możliwości rozpoczęcia pracy w tym obszarze. Organizowaliśmy praktyki m.in. w ML. Mam w zespole świetnie radzące sobie osoby, które przyszły do nas właśnie z praktyk. Co ważne, jest też możliwość przebranżowienia się. Są w zespole osoby, które miały wcześniej inne role, a teraz robią świetną robotę jako inżynierowie ML.
Temat Machine Learningu jest obszerny i dość skomplikowany, ale jakże ciekawy. Tym bardziej Kuba dziękujemy Ci za praktyczne przybliżenie tematu i za to, że kolejny raz dzielisz się swoją imponującą wiedzą. Jak widać jest to błyskawicznie rozwijająca się branża, która umożliwia rozwój zawodowy. To szansa dla młodych osób, które stawiają na nowe technologie, ale też możliwość dla osób, które chcą w swojej pracy spróbować, czegoś nowego i fascynującego.
*Można budować modele na sztucznie wygenerowanych danych – są nawet całe start-upy, które zajmują się generowaniem takich danych, ale dalej sztuczne dane generowane są na podstawie danych rzeczywistych, tak żeby odwzorować występujące w nich zależności.