BM63: Praktyczne podejście do uczenia maszynowego

BM63: Praktyczne podejście do uczenia maszynowego

Ostatnio zrobiło się bardzo głośno po raz kolejny w sprawie jednego ze startupów Elona Muska. Chodzi o Neuralink, w ramach którego Musk ma wizję połączyć komputer z ludzkim mózgiem. Na różnych prezentacjach mówi o tym trochę inaczej, ale jednym z powodów rozwijania tego projektu jest szybkość komunikacji pomiędzy człowiekiem (mózgiem) i komputerem. 

Praktyczne uczenie maszynowe. Rozmowa z Bartkiem Skorulskim.

Wiele osób pyta mnie o zdanie na ten temat, zaprasza do występowania. Teraz muszę coraz częściej odmawiać, ponieważ jestem całkowicie zaangażowany w organizację międzynarodowej konferencji uczenia maszynowego DWCC 2019, która odbędzie 28 września  w Warszawie. Jak chcesz dowiedzieć się o najnowszych osiągnięciach w uczeniu maszynowym na rok 2019 z dużym naciskiem na praktykę, to zachęcam do udziału. Jest już ponad 100 uczestników (na moment gdy piszę ten tekst), a do końca sierpnia obowiązuje zniżka 15% – zostało tylko 20 biletów z rabatem. Nie mogę się doczekać konferencji, to będzie świetne wydarzenie ze wspaniałymi prelegentami – warto przyjechać. 

Wracam do tematu brain computer interface. Jeśli ominął Cię 30 odcinek “czy komputer potrafi czytać Twoje myśli”, to zapraszam do posłuchania i lektury, bo tam podaję znacznie więcej przykładów. W skrócie, czytanie myśli jest bardzo trudnym zadaniem chociażby z tego powodu, że nie wiadomo tak naprawdę, czym jest “myśl”. Być może to jest coś, co rodzi się w naszym mózgu w postaci fali energetycznej, czy może nasz mózg jest jedynie tylko odbiornikiem, taką anteną (ciekawym pytaniem wtedy jest, to kto w takim razie jest nadajnikiem?), może jak to zwykle bywa w życiu, to coś pomiędzy tymi opcjami (lub obie naraz). Co o tym myślisz?

Z tego powodu, ciężko jest powiedzieć wprost, że da się czytać myśli, bo jak to można to stwierdzić, skoro nie wiemy, czym jest myśl? Skąd dowiemy się, że je czytamy? To, co robi teraz Musk, to coś innego. Tak naprawdę to jest pewna umowa. To jest w pewnym sensie język do komunikacji. Podam Ci przykład. Bardzo ciekawie jest obserwować ruch drogowy, w szczególności w dużym mieście z dachu. Idealnie tu nadaje się np. Nowy Jork. Jak oglądasz nawet przez chwilę, to masz wrażenie, że samochody są inteligentne. Chociaż tutaj warto zaznaczyć, że ta inteligencja (lub czasem jej brak) siedzi w środku samochodu. Jak myślisz, być może człowiek to jest taka maszyna z kierowcą w środku? W kościele tego kierowcę nazywają duszą. Czyli inteligentne zachowanie obiektów, koniecznie świadczy o tym, że te obiekty są inteligentne same w sobie. Co o tym myślisz? 

Wracam do przykładu. Stoisz na dachu wysokiego budynku i widzisz, jak sprawnie poruszają się samochody. Czy to oznacza, że kierowcy potrafią czytać myśli innych kierowców? Czasem potrafią (w szczególności doświadczeni), natomiast normalnie to jest umowa pomiędzy kierowcami, że są pewne znaki, światła. Wtedy jak jest czerwone światło, to stoi się, jak zielone – jedzie.

Podobnie jest z czytaniem myśli. Umawiamy się na pewne znaki i my (ludzie) nadajemy im interpretację. Ostatecznie fale energetyczne i obszary w mózgach mają pewne wzorce, jeśli myślimy o tym samym. Muskowi warto przyznać co najmniej dwie sprawy: robi rzeczy, o których dużo ludzi mówi oraz potrafi przyciągać mocne jednostki do siebie. Innym przykładem jest chociażby OpenAI, gdzie faktycznie dzieją się ciekawe rzeczy. Neuralink może się wyróznić na tle innych podobnych rozwiązań, ale nawet w tym przypadku prawdopodobnie będzie to hybrydowe rozwiązanie, czyli będzie wymagało ludzkiej inteligencji i umówienia się na pewne rzeczy, żeby z tego korzystać. 

Mam dla Ciebie teraz ogłoszenie. W ramach DataWorkshop organizuję bezpłatną inicjatywę korona wyzwań uczenia maszynowego “Też potarfisz!”. Zrobione to jest specjalnie dla osób (bardzo) początkujących. Ruszamy 2 września. Przygoda trwa przez 5 dni i na jedno zadanie potrzebujesz czasem nawet tylko 10 minut. Ciężko będzie znaleźć wymówkę, że nie masz czasu. Dzięki temu małym nakładem pracy (oraz zerowym kosztem finansowym), zbudujesz być może swój pierwszy model i przekonasz się, że też potrafisz używać uczenia maszynowego. Tysiące osób brało udział w poprzednich wyzwaniach – myślę, że tym razem będzie 5 tys. czy nawet 10 tys. Spróbuj. Zapisz się.


Przechodzimy teraz do dzisiejszego tematu. Zaprosiłem Bartka, który ma bogate praktyczne doświadczenie w uczeniu maszynowym. Pracował w różnych firmach. Bartek to także jeden z prelegentów konferencji DWCC 2019. Zapraszam do lektury.

Cześć Bartek, przedstaw się: kim jesteś, czym się zajmujesz, gdzie mieszkasz?

Cześć Vladimir. Nazywam Bartek Skorulski. Mieszkam w Barcelonie, pracuję jako Data Scientist w Alpha. Jest to firma stworzona przez Telefonikę, duży telekom międzynarodowy głównie w krajach latynoskich i pracuję w zespole, który zajmuje się zdrowiem psychicznym.

Masz ciekawe i co ważne też różnorodne doświadczenie w uczeniu maszynowym. Pracowałeś w różnych branżach. Dzisiaj spróbujemy przynajmniej częściowo omówić kilka zagadnień, z którymi się zetknąłeś. Mam nadzieję, że też podzielisz się ciekawostkami bardziej praktycznymi. Zaczniemy od gier, bo to była jedna z takich pierwszych Twoich prac komercyjnych, przynajmniej tak mi się wydaje, jeżeli chodzi o uczenie maszynowe. Powiedz trochę więcej na temat firmy King. Jak duża jest ta firma, czy nadal funkcjonuje, jakie miała wyzwania?

King to jest firma, która obecnie jest oddziałem Activision Blizzard zajmującym się grami na komórki. Najbardziej znanym produktem Kinga jest Candy Crush. To jest gra, która już od ponad 6 lat utrzymuje się jako jedna z najbardziej popularnych gier na świecie szczególnie w Stanach Zjednoczonych. Cóż więcej mogę powiedzieć o firmie jako takiej?

Jak długo tam pracowałeś i czym się zajmowałeś?

Pracowałam w tej firmie półtora roku. Zajmowałem się tworzeniem nowych gier. Jako data scientist pomagałem w tworzeniu nowych gier np. Bubble Witch 3. Jest to gra powiedzmy w stylu casual, w którą można grać po parę minut w dowolnym momencie. 

Jak uczenie maszynowe było pomocne w branży gier? Mówimy o wdrażaniu rozwiązań machine learning przy większej skali, czyli setki milionów graczy. Jak sobie z tym poradziliście?

Mówiąc szczerze większość projektów z uczeniem maszynowym nie była specjalnie udane, ale były też projekty, które okazały się sukcesem. Główny problem z uczeniem maszynowym w tego typu projektach jest taki, że często uczenie maszynowe jest celem samym w sobie. To często powoduje, że rozwiązania i algorytmy, które się implementuje w biznesie nie do końca się sprawdzają. Projektami, którymi się zajmowaliśmy, to na przykład były projekty typowego przewidywania, czy użytkownik przestanie grać. Uczyliśmy się też, czy dany poziom gry jest trudny czy nie, optymalizowaliśmy trudność dla użytkowników, żeby w długim okresie nie odchodzili od nas.

Określiłeś, że było dużo projektów ML, ale jednak duża część, może nawet większa po prostu miała trudności, jeżeli chodzi o konkretne zyski. Fajnie, że zwróciłeś uwagę na to, że narzędzie nie może być celem samym w sobie, tylko trzeba skupiać się na rozwiązaniu.

Istnieje takie pojęcie hypothesis-driven decision-making environment. Co to oznacza w praktyce? Wiem, że go budowałeś – po co jest to potrzebne?

The Computer Science of Human Decision Making | Tom Griffiths | TEDxSydney

Właśnie tego się dobrze nauczyłem w Kingu i zaobserwowałem właśnie tam. Często zaczynamy budować produkty i wdrażamy je w sposób indukcyjny. Zaczynamy myśleć, jaki produkt chcemy zbudować, następnie rozpoczynamy budowanie od bazy danych, często od ich zbierania. Później nawet ogólnie budujemy aplikację, która robi jakąś tam rzecz, np. sklep z butami.

Zaczynamy budować algorytm machine learning, żeby na przykład dawać buty, które użytkownik może lubić i później taki produkt wrzucamy na rynek i myślimy, że to na pewno będzie dobry pomysł. Niestety często to się nie sprawdza i głównym problemem jest to, że budowanie produktu od dołu do góry powoduje, że ludzie po prostu nie lubią tego. Zakładamy rzeczy, które nie są prawdziwe i dużo trudniej jest zacząć myślenie z drugiej strony. 

Jak mamy jakiś produkt, to możemy się zastanowić, czy chcemy zbudować system rekomendacyjny, przewidzieć czy użytkownik przestanie naszego sklepu używać, zastanowić się, co tak naprawdę powoduje, że użytkownik odchodzi, przestaje od nas kupować lub sprawia, że zakupy kontynuuje. Dlaczego użytkownik wybiera ten czy inny produkt. Tworzymy w ten sposób pełną listę różnego rodzaju hipotez w stylu: kobiety lubią buty różowe. Typowy stereotyp, który oczywiście nie jest prawdziwy, ale to jest jakaś hipoteza, którą możemy realnie zacząć sprawdzać, zbudować listę. Czym większa, tym lepsza.

Trzeba zastanowić się, które z tych hipotez mogą być prawdziwe, a które nie. Które z nich jest nam łatwo zrealizować, które trudniej, które są bardziej prawdopodobne. Mając taką listę i pewien sposób mierzenia tych rzeczy, możemy priorytetyzować pewne hipotezy i zacząć budować produkty, które te hipotezy weryfikują. Często to oznacza, że produkt, który stworzymy, niekoniecznie musi być uczeniem maszynowym. Często to jest jakiś prosty algorytm. Jak taką hipotezę zweryfikujemy, możemy później zbudować kolejne, coraz bardziej skomplikowane, które bardzo często nas prowadzą do uczenia maszynowego. Zdarza się, że w trakcie tych testów okazuje się, że pełna automatyzacja, dodawanie sztucznej inteligencji do produktu niekoniecznie powoduje, że jest on lepszy.

Z Twojego doświadczenia gdzie jest większe wyzwanie: po stronie infrastruktury software’owej, bo trzeba coś zainstalować, czy bardziej po stronie zmiany sposobu myślenia, czyli trzeba zmienić sposób działania w naszej głowie? Gdzie widzisz większe wyzwanie?

Ja myślę, że zawsze, w jakiejkolwiek sytuacji problemem jest głowa i to musimy zacząć od samych siebie. Z uczeniem maszynowym jest tak, że jest to fascynujący temat i często zaczynamy rozwiązywać problem od uczenia maszynowego albo od budowania infrastruktury. To po prostu nam się wydaje fascynujące: zbudować infrastrukturę, która jest w stanie obsłużyć setki milionów użytkowników, do tego zbudować algorytm, który potrafi w czasie rzeczywistym przewidywać zachowania tych użytkowników.

Fascynujący temat pod względem technicznym i często niestety zaczynamy od rozwiązywanie problemu w ten sposób, w ogóle nie myśląc o tym, jaki problem naprawdę chcemy rozwiązać. Często się okazuje, że jak już zbudujemy po pół roku pracy niesamowitą infrastrukturę, która jest w stanie obsłużyć gigantyczne ilości użytkowników, zdamy sobie sprawę, że tych użytkowników w ogóle nie mamy. Myślę, że trzeba zaczynać od postawienia sobie pytania, co tak naprawdę chcemy zrobić. Jest taka dość popularna książka “Start with Why” – zacząć od tego, dlaczego chcemy to zrobić zamiast tego, co chcemy zrobić. To jest dobra rada.

Fajnie to określiłeś. Z jednej strony to wydaje się oczywiste, wszyscy wiedzą, że trzeba zadać sobie pytanie, co chcemy osiągnąć, jaki jest cel. Natomiast w praktyce jak to zwykle bywa, to wygląda znacznie trudniej i często szybko się zapomina o podstawach i zwraca w kierunku technologii. Chcąc przejść do kolejnego zagadnienia mam prośbę, abyś wyjaśnił wszystkim czytelnikom, czym są testy A/B i jakie można spotkać wyzwania przeprowadzając dobry test.

A/B testy to jest bardzo popularne narzędzie używane przez wiele firm, które służy do dawania użytkownikom dwóch rodzajów produktu. W ten sposób to użytkownicy decydują, która wersja jest lepsza, bardziej efektywna. Możemy sobie wyobrazić, że mamy sklep internetowy i części użytkowników chcemy proponować buty koloru czarnego, a innym proponujemy buty koloru brązowego i w ten sposób możemy się nauczyć, które buty użytkownicy chętniej kupują.

To taki może głupi eksperyment, ale myślę, że dosyć dobrze obrazuje A/B testy. To jest bardzo praktyczne w różnych rodzajach sytuacji. Często jest tak, że patrząc na dane nigdy nie wiemy, co jest przyczyną, a co skutkiem. Często widzimy korelację pomiędzy danymi. Możemy zaobserwować, że użytkownicy, którzy są bardziej aktywni, chętniej kupują tego typu produkty, tylko że tak naprawdę nie wiemy, czy to kupowanie jednego typu produktów robi użytkowników bardziej aktywnymi, czy odwrotnie. Najlepszą metodą jest zrobienie po prostu eksperymentu.

Zaczynamy od hipotezy, która mówi, że buty brązowe są bardziej popularne, a tym samym częściej kupowane. To jest nasza hipoteza, którą najłatwiej przetestować w taki sposób, że część użytkowników naszego sklepu internetowego zawsze będzie miała buty brązowe, część użytkowników będzie miała innego koloru. 

Jeżeli sprzedaż butów brązowych jest wyższa, nasza hipoteza jest zweryfikowana. Tu jest oczywiście wiele problemów, bo też trzeba dokładnie obserwować, czy ta różnica jest istotna statystycznie. Jeżeli damy zbyt wiele wariantów do testowania, to owszem otrzymamy wynik, bo faktycznie jedna z opcji będzie popularniejsza, natomiast nie musi to automatycznie oznaczać większą sprzedaż. Jeśli różnica pomiędzy wynikami nie jest znacząca, to warto testować dalej.

Trzeba być troszeczkę ostrożnym z tym, trzeba też wcześniej dokładnie wiedzieć, jak będziemy mierzyć efektywność takiego eksperymentu. Jest to nie tylko użyteczne w eksperymentach w sprzedaży, jest to użyteczne w jakimkolwiek testowaniu, szczególnie jeżeli mamy jakąś porządną bazę użytkowników, możemy testować, który algorytm funkcjonuje lepiej. Często na przykład w przypadku systemów rekomendacyjnych mamy taką sytuację, że jeden system rekomendacyjny poleca produkty, które ludzie chętnie kupują tylko, że nie wiemy, czy po prostu nie poleca produktów, którzy ludzie i tak by kupili, a tak naprawdę robi szkodę naszemu biznesowi, bo nie poleca produktów, które realnie potrzebują tego typu wsparcia. 

Właściwie taki fajny przykład jest z Walmartu, który zapytał użytkowników, co najbardziej przeszkadza w sklepie. Większość z nich powiedziała, że zbyt wąskie alejki między regałami, więc w wielu sklepach Walmartu w pewnym stanie w Stanach Zjednoczonych je poszerzono. Jaki był efekt? Spadek sprzedaży, bo okazało się, że wąskie alejki powodują, że ludzie dużo łatwiej wynajdują produkty, których normalnie by nie kupili. To są takie dosyć niespodziewane efekty różnych zmian, które wprowadzamy. A/B test jest bardzo dobrym narzędziem do obserwowania, czy nasza zmiana chociaż poprawia jedną charakterystykę, nie pogarsza innej.

Przejdźmy teraz do kolejnych przykładów – ten z Walmartem jest świetny. Myślę, że będzie ich więcej. Czy jest łatwo tradycyjnym firmom zrozumieć, jak zacząć używać uczenia maszynowego? Mam na myśli powiedzmy sklep Lidl (również jest znany w Polsce). Czy jest łatwo takim firmom zacząć używać machine learning?

Znowu jest ten problem trochę technologiczny. W wielu wypadkach jest to także nasza wina, że często jesteśmy wielkimi popularyzatorami uczenia maszynowego. Wszyscy mówimy, że to jest gigantyczna przyszłość, że niedługo większość, nawet 70% prac wykonywanych przez ludzi będzie zautomatyzowanych, więc musimy się uczyć nowych zupełnie rzeczy. Firmy słyszą o tak zwanych Big Data, że dane są złotem, które trzeba wydobywać, ale później próbują to w jakiś sposób zrealizować i tak naprawdę nie wiedzą, co z tym zrobić.

Tradycyjne firmy mają swoje tradycyjne sposoby zarabiania pieniędzy i nie są to wcale złe te sposoby na biznes. Problem z przejściem w sposób bardziej zautomatyzowany jest głównie związany z tym, że po pierwsze zbieranie danych nie jest zautomatyzowane, tak naprawdę nie wiadomo, jakie dane się zbiera, jakie dane należy zbierać i tak naprawdę wracamy do hipotez z Driven Development. Powinniśmy się zastanowić, co tak na naprawdę chcemy zrobić, jeżeli jednym z rozwiązań jest uczenie maszynowe.

Początek wdrożenia to wcale nie musi być inwestycja w zespół data scientist, czy specjalistów inżynierów od machine learning, często można to po prostu zawęzić do jakiegoś małego rozmiaru użytkowników, na przykład do sklepu. Niech to będą sklepy z konkretnego miasta, wtedy nie potrzebujemy naprawdę bardzo zaawansowanej technologii Big Data.

Możemy pracować na prostych maszynach EC2 z Amazona, na których możemy w czasie rzeczywistym obsłużyć tych użytkowników i po prostu sprawdzić, czy tak naprawdę nam to daje wyższe dochody i powoduje, że użytkownicy chętniej chodzą do sklepu. Jeżeli tak, to wtedy zaczynamy poszerzać zespół, zaczynamy myśleć o tym, jak zrobić programy, które będą skalować się do dużej ilości użytkowników Niestety często firmy robią tak, że zaczynają od zatrudnienia inżynierów. 

Pracowałeś dla Lidl. Powiedz, jakie tam problemy pomagałeś rozwiązać i z jakim skutkiem?

Lidl to jest ciekawa firma. Jest to jeden z największych supermarketów na świecie, który inwestował przez długi okres czasu właśnie w Big Data, w zbieranie danych tylko nie za bardzo potrafił to dobrze wykorzystać. To, co zrobił, to poprosił małą firmę w Barcelonie, żeby mu zrobiła pilotażowy program lojalnościowy. Ten program został wdrożony w Saragossie na początku, czyli w regionie, w którym firma miała chyba 8 sklepów, o ile dobrze pamiętam.

Tam testowano, na ile dane możemy efektywnie zbierać z różnych źródeł. Pozyskiwane dane były po prostu z kasy. Byli także użytkownicy, mogli instalować aplikacje, które posiadały karty stałego klienta, oferowały im zniżki, do tego były dane zbierane z routerów WiFi i wiele innych. Ja natomiast zamiast myśleć o tym, jak zbierać dane i gdzie je przechowywać, skupiałem się na tym, co tak naprawdę możemy z tym zrobić i jak możemy poprawić sprzedaż, poprawić zadowolenie klientów. 

Często prowadziło to do tego, że rzeczy, które robiłem, nie były całkiem machine learningiem. Robiłem system rekomendacyjny, przewidywanie popytu sprzedaży produktu, który był użyteczny do tego, żeby sklepy nie zostawały bez popularnych produktów szczególnie jak były promocje, czy system rekomendacyjny, który informował klientów o produktach, o których nie wiedzieli, że znajdą w Lidlu. Pracowałem także nad prostymi zmianami w UX. Niekiedy nieduża zmiana w doświadczeniu użytkownika z produktem sprawiała, że łatwiej znajdowali wybrane produkty, co z kolei zwiększało ich zadowolenie i sprzedaż.

Zacytuję Cię: “uważam, że jeżeli chce się mieć inteligentne i spersonalizowane produkty, nie można zaczynać od machine deep learning.” Bardzo fajnie to ująłeś, więc proszę rozwiń ten wątek. Co masz na myśli, co to znaczy dla nas, dla czytelników?

To właśnie to, co mówiłem wcześniej o tym, że zaczynamy od stawiania hipotez, w jaki sposób możemy tworzyć system inteligentny i dlaczego chcemy to zrobić, jak możemy zrobić, żeby klienci byli bardzo zadowoleni, czuli się lepiej z naszymi produktami. W związku z tym chętniej do nas wracali, chętniej u nas kupowali, chętniej używali naszych produktów, łatwiej znajdowali to, czego potrzebują. Często jest tak, że rozwiązaniem nie jest uczenie maszynowe. Często jest nim prosta zmiana w user interface albo w tym, jak użytkownik operuje, jaki ma dostęp do funkcji w naszym systemie, a często jest odwrotnie, że przychodzi inżynier i chce zrobić deep learning, bo deep learning jest super i potencjalnie wiemy z przykładów Google czy Facebooka, że może generować dużo pieniędzy.

Czyli tak naprawdę wszystko się sprowadza do tego, że skupić się należy na problemie, a właściwie na rozwiązaniu tego problemu, niż na narzędziu.

Uważam, że obecnie machine learning, deep learning jest już narzędziem dosyć dojrzałym. W wielu wypadkach wiemy jakiego rodzaju narzędzia musimy używać, gdy mamy określony problem. Nawet mamy dostęp już do przetrenowanych wcześniej algorytmów, z których możemy skorzystać i zacząć używać bezpośrednio. Dlatego mówię, że budowa infrastruktury i zaczynanie od myślenia od tego, jaki dokładnie algorytm zaimplementujemy, a dopiero później jaki to tak naprawdę problem rozwiązuje, nie jest dobrym pomysłem.

Zdefiniowanie, jaki problem rozwiązujemy, samo w sobie jest gigantycznym wyzwaniem. Oczywiście, że chcemy generować więcej biznesu, ale to jest powszechna sprawa. Czym innym jest sprecyzowanie, co konkretnie musi się wydarzyć, aby zwiększyć dochody. Do tego jeszcze dochodzi kwestia mierzenia sukcesu. To zupełnie nie są trywialne rzeczy, choć może tak się wydawać na pierwszy rzut oka. 

Słusznie powiedziałeś o mierzeniu. Właściwie jak już mamy taką hipotezę i wiemy, co chcemy sprawdzić, pierwszym pytaniem jest, jak to możemy zmierzyć. Jeżeli tworzymy produkty, chcemy wdrożyć nową funkcję, ale nie potrafimy określić efektu tej pracy, to to nie ma sensu. Często w nowoczesnych firmach ta świadomość i nauka o tym, jakie rzeczy poprawiają nasz biznes, a które nie, jak to mierzyć to tak naprawdę sedno rozwoju firmy.

Zadam Ci kolejne praktyczne pytanie, bo też jestem ciekawy Twojej opinii. Na ile ciężko się wdraża model na produkcję? Jakie są wyzwania, ile trwało wdrożenie, jak to było monitorowane? Jeżeli widzimy, że model zachowuje się źle, to co robimy? Czekamy tydzień, miesiąc, rok i potem podmieniamy, czy natychmiast decyzja? 

To może taki przykład systemów rekomendacyjnych. Różne firmy i różny biznes mają inne cele, jeśli chodzi o systemy rekomendacyjne. Jeżeli mamy na przykład Netflixa, to naszym celem jest pewnie zwiększenie czasu oglądalności i jeżeli jest popularny serial, możemy go zaoferować w tym samym momencie dużej ilości odbiorców. Z drugiej strony jak na przykład, wyobraźmy sobie, że mamy sklep typu Allegro, gdzie jest sprzedaż produktów użytkownik do użytkownika.

W takiej sytuacji, na przykład system rekomendacyjny, który proponuje popularny produkt, nie jest najlepszym rozwiązaniem. Nawet super system rekomendacyjny, który jest z Netflixa po prostu przekopiowany do takiego systemu będzie po prostu dużej ilości użytkowników oferował super iPhone w dobrej cenie, tylko że ten iPhone jest jeden, bo tylko jedna osoba to chce sprzedać. Monitorowanie po wdrożeniu do produkcji algorytmów jest rzeczą złożoną i trzeba patrzeć nie tylko na to, czy system nie ma zbyt dużego czasu oczekiwania na zaserwowanie rekomendacji, ale też trzeba obserwować wszystkie najważniejsze metryki, które definiują nasz biznes. Z reguły monitorowanie wszystkich jest niemożliwe, trzeba mieć zawsze parę najważniejszych pod stałą kontrolą.

Wdrażanie do produkcji jest rzeczą kłopotliwą, bo wymaga dosyć dobrej współpracy całego zespołu, nie tylko data engineers, którzy przerabiają często kod data scientist na kod, który powiedzmy jest production ready. To wymaga też oczywiście współpracy z deweloperami aplikacji, w których taki system występuje i właśnie bardzo mocno kładziemy nacisk na to, żeby robić to tylko dla pewnej małej grupy. Z taką grupą zaczynamy także testowanie A/B i porównujemy algorytmy. Oczywiście zanim taki algorytm wrzucimy do produkcji, to oczywiście najpierw offline sprawdzamy, że rzeczywiście ma szansę być lepszy niż poprzedni. Narzędzia, których używamy, w dużej mierze zależą od firmy i od ilości użytkowników. Jeżeli użytkowników tych nie ma wielu, pewnie nie potrzebujemy bardzo zaawansowanych narzędzi. Ja z reguły nie jestem zwolennikiem narzędzi typu SageMaker, które starają się automatyzować zupełnie proces pisania algorytmów do produkcji. Bardzo lubię Jupiter notebook do eksperymentowania. Do produkcji raczej kod musi być napisany troszeczkę w inny sposób tradycyjnymi edytorami. 

Bardzo fajnie jest przed startem, przed napisaniem jakiejkolwiek linii kodu, wyobrazić sobie, że ten idealny model udało się zbudować. Co się dzieje potem, czyli w którym miejscu wpina się to coś do systemu? W którym miejscu ktoś inny widzi wyniki, które prognozuje model? Czy jest jakiś dashboard, mail, czy jeszcze coś? Na co to wpłynie? Zwykle taki szereg pytań przytaczam i dość często te pytania po prostu totalnie rozbiją początkowe pomysły, bo nagle się okazuje, że infrastruktura nie jest gotowa albo program będzie robić prognozowanie do bazy danych, ale nikt nie zobaczy tych wyników, bo odbiorcy tych danych pracują z systemem zastanym i nie mają możliwości ich odczytać. Czy miałeś podobne wyzwanie?

Zaleta zaczynania od góry i schodzenia na dół jest taka, że często pierwsze algorytmy machine learning, które implementujemy, nie są tak naprawdę machine learning. Na przykład pracowałem z czatami i implementowaliśmy Smartly Price. To jest coś takiego, że automatycznie proponuje użytkownikowi odpowiedź. Znowuż część osób zaczęło oczywiście od problemów NLP, od zastanawiania się, jak sprawić, żeby dane były dobrze zlokalizowane, że musimy pozatrudniać Mechanical Turk. Znowuż problem jest taki, że nie ma infrastruktury. Czat nie jest przystosowany do tego, żeby wyświetlać podpowiedzi, więc zaczęliśmy od końca: “zobaczmy, jakie są najpopularniejsze odpowiedzi na pierwsze pytanie zadane”. 

Znaleźliśmy trzy najpopularniejsze pytania i trzy najpopularniejsze odpowiedzi do tych pytań i pierwszy nasz super inteligentny system, to po prostu było podawanie tych sztywnych trzech odpowiedzi. Znowu zrobiliśmy A/B test, sprawdziliśmy, jak to działa, mogliśmy mieć całą infrastrukturę, Trzeba było znaleźć sposób na legacy system, żeby w łatwy sposób dołożyć predefiniowane odpowiedzi do czatu, ale po zrobieniu eksperymentu mieliśmy bardzo jasne wyniki wskazujące, jak to pomogło użytkownikom. To automatycznie spowodowało zainteresowanie całej firmy tym projektem i oczywiście wrzuceniem większych środków, żeby ten projekt już bardziej inteligentny stworzyć.

Super, fajny przykład prosty, zrozumiały. Też często pytanie się pojawia, w jaki sposób kierownictwo firmy, prezesa, osób decyzyjnych przekonać, że warto wejść w tamten czy inny obszar. Właśnie podałeś teraz receptę, jakie pomysły najlepiej się sprzedają.

Dużo z nas, ja szczególnie mam background z matematyki, więc jest tak naprawdę naturalnym dla nas rozmawianie z osobami, które podejmują decyzję w oparciu o liczby. Jeżeli jesteśmy w stanie pokazać, że bardzo głupi projekt powoduje, że 20% więcej użytkowników odpowiada, co potencjalnie powoduje, że użytkownicy rzadziej chcą od nas odejść, sprawia, że takie osoby podejmujące decyzje dużo chętniej później inwestują w machine learning. Jesteśmy matematykami, pokazujemy numery.

Na początku wspomniałeś o tym, że pracujesz teraz w firmie Alpha. Też wspomniałeś, że zajmujesz się prognozowaniem związanym z chorobami psychicznymi. Co się stało, że akurat tym się zajmujesz teraz, co Cię motywuje, co Cię zaangażowało w takie obszary?

Tak jak mówisz wydaje mi się, że te wszystkie firmy dały mi możliwość i nauczyły mnie, jak można tworzyć produkty inteligentne, które zwiększają sprzedaż, sprawiają, że użytkownicy chętniej grają w gry, chętniej klikają w reklamy i tak po prostu w pewnym momencie, jak usłyszałem o tym projekcie tak oczywiście z naturalnym tokiem myślenia, co by było gdyby można było te wszystkie rzeczy stosować do czegoś, co potencjalnie da większą korzyść dla nas samych, żebyśmy mogli po prostu żyć lepiej.

Nie chcę, żeby to zabrzmiało, że jestem przeciwko używaniu machine learning w biznesie, wręcz przeciwnie jest bardzo pożyteczny. Uważam, że systemy rekomendacyjne nie tylko zwiększają sprzedaż, ale też często są praktyczne i pożyteczne dla nas. Wiem, jak sprawić, żeby ludzie się zaangażowali w granie w gry, teraz mogę postarać się, żeby się zaangażowali w edukację czy w swoje własne zdrowie.

To, co mówisz, mi osobiście bardzo mocno rezonuje. Bardzo się cieszę, że są osoby, które są tak entuzjastycznie nastawione do tego, żeby wykorzystać te doświadczenia życiowe, żeby sprawić ten świat lepszym. Będziesz występować na konferencji DWCC 2019 w Warszawie 28 września. Powiedz, o czym będziesz mówił i dlaczego warto tam być?

Ogólnie inicjatywa konferencja DWCC 2019 wydaje się niesłychanie interesujący. Co do mojej prezentacji, chciałbym powiedzieć trochę o projekcie Alpha, o motywacjach, które stoją za tym, co robimy, a także o tym, dlaczego wierzymy, że uczenie maszynowe może pomóc w poprawie zdrowia, szczególnie psychicznego, dlaczego jest to ważne obecnie, dlaczego mamy gigantyczny wzrost chorób związanych ze zdrowiem psychicznym na świecie i technologia jest jedną z przyczyn, ale też wydaje nam się, że może być także rozwiązaniem, częściowym przynajmniej rozwiązaniem tych problemów. Będę mówił o tym, jakie problemy dokładnie mamy, jaki problem próbujemy rozwiązać i w jaki sposób. Opowiem o tym, że głównym problemem jest prywatność danych i to, żeby dane szczególnie związane z naszym zdrowiem były tak naprawdę nasze i tylko nasze.

Bardzo dużo ciekawych rzeczy powiedziałeś, więc bardzo gorąco czekamy, kiedy przylecisz do Warszawy na konferencję. Dziękuję Ci, Bartek, bardzo za to, że znalazłeś czas na rozmowę. Dzięki wielkie do zobaczenia do usłyszenia.

Też dziękuję bardzo za danie mi możliwości porozmawiania o mnie i o moich projektach z Wami.


Na koniec jeszcze dodam, że Bartek przygotował dla Ciebie prezent! W tym pliku pdf Bartek podzielił się swoim doświadczeniem wdrażaniem modelu uczenia maszynowego na produkcję w aplikacjach (checklista z 15 pytań). Pobrać możesz je zapisując na newsletter poniżej (jak już tam jesteś, to w takim razie sprawdź swoją skrzynkę. Prezent już tam czeka na Ciebie).

Jestem na

Vladimir

Podcaster at Biznes Myśli
Od 2013 roku zacząłem pracować z uczeniem maszynowym (od strony praktycznej). W 2015 założyłem inicjatywę DataWorkshop. Pomagać ludziom zaczać stosować uczenie maszynow w praktyce. W 2017 zacząłem nagrywać podcast BiznesMyśli. Jestem perfekcjonistą w sercu i pragmatykiem z nawyku. Lubię podróżować.
Jestem na

Latest posts by Vladimir (see all)

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *