Marcin Możejko
Podcast

Dobre praktyki i sztuka nazywania rzeczy w Machine Learning


Witam  w kolejnym podcaście Biznes Myśli. Dzisiaj goszczę Marcina Możejko. To jest bardzo ciekawy, pozytywny człowiek. Marcin ma bogate doświadczenie zawodowe –  z jednej strony twarde, wiedza matematyczna, z drugiej strony programistyczne, a z trzeciej strony to wszystko jeszcze łączy Data Science jako  inżynier i próbuje być na krawędzi tych światów, które wcale nie jest tak łatwo połączyć. 


Marcin opowiada, dlaczego to robi i jak to sobie definiuje.




Ostatnio pracował  w TCL – chińska firma, która ma oddział w Warszawie. Akurat odszedł stamtąd. Dlaczego odszedł i co robi teraz – o tym wszystkim będzie dzisiaj. Ta rozmowa mogłaby być jeszcze dłuższa i myślę, że warto byłoby ją jeszcze kontynuować, bo niektórych wątków  jeszcze w ogóle nie poruszyliśmy z Marcinem, a bardzo by się chciało je poruszyć. Też bardzo jestem ciekawy Twojej opinii, więc zapraszam do wysłuchania i czekam na informację zwrotną.





Dzisiaj będzie gorąco, ale to nie tylko z powodu temperatur za oknem, zapowiada się bardzo ciekawa rozmowa.

Cześć Marcin. Przedstaw się kim jesteś, czym się zajmujesz i gdzie mieszkasz?

Cześć, nazywam się Marcin Możejko. Aktualnie jestem i mieszkam w Warszawie, a zajmuję się Machine Learningiem w bardzo szerokim podejściu, ponieważ mam to szczęście, że w chwili obecnej jestem bardziej w Akademii, ale przez wiele lat pracowałem zarówno w Akademii jak i biznesie, więc można powiedzieć, że byłem zarówno inżynierem jak i researcherem, ale też dosyć mocno zahaczyłem się o biznes. Bardzo dziękuję za zaproszenie i mam nadzieję, że będziemy mogli podzielić się swoimi doświadczeniami w tych tematach.


Właśnie porozmawiamy i o Akademii, o doświadczeniu, o propozycji, którą miałeś i jaka była decyzja. Ale powiedz tak na początek: co ostatnio ciekawego przeczytałeś i  dlaczego warto to przeczytać?




Propozycja, którą bym tutaj polecił to są „Niewidzialne miasta” Italo Calvino. Jest to pozycja literacka bardzo ciekawa. Książka ma bardzo ciekawą formę.  Składa się z 64 krótkich opowieści, które też mają określoną, matematyczną, strukturę. 64  jest związane z szachownicą, w związku z tym są  różne sugestie czytania tej książki. Fabuła opowiada o tym, że Marko Polo wędruje do Chin, tam spotyka Cesarza Chińskiego i opowiada mu o miastach, które odwiedził. Każde z tych 64 opowiadań  jest opowiadaniem o jednym mieście. Bardzo chciałbym gorąco polecić tę książkę, ponieważ ona wbrew pozorom jest bardzo matematyczna. Wydaje mi się, że opowiada o takiej bardzo ciekawej przestrzeni pomiędzy kreatywnością a strukturą. Kreatywność to jest ten wędrowiec, a struktura to jest spotkany cesarz i jest dyskusja pomiędzy tymi dwoma końcami spektrum. Ja byłem zachwycony, więc na pewno gorąco polecam  również inżynierom, wydaje mi się, że każdy wyciągnie z niej coś bardzo ciekawego.


Doświadczenie Machine Learning & Data Science



Bardzo dziękuję za to polecenie. Teraz Marcin opowiedz troszkę więcej o swoim doświadczeniu Data Science, Machine Learning. Jakie projekty miałeś okazję wykonywać do tej pory, w jakich branżach pracowałeś? Wiem, że masz ogromne doświadczenie.



Miałem szczęście zaczynać swoją karierę w czasach, w których inżynierów w Warszawie było bardzo mało. W związku z tym, kiedy było się inżynierem to parało się bardzo dużą ilością projektów z różnych źródeł. Uważam to za olbrzymie szczęście. Zaczynałem w ogóle w PwC firmie konsultingowej, gdzie pracowaliśmy z danymi stricte finansowymi albo klienckimi. Tam pracowaliśmy nad churn’em w banku wówczas, ale też mieliśmy okazję robić anomaly detection na czujnikach.




Pracowaliśmy też dużo w wizji komputerowej dla dronów. Po PwC miałem krótką przerwę w Microsofcie, gdzie pracowaliśmy nad rozpoznawaniem języka naturalnego. Byłem w zespole tłumaczeń i budowałem model, który oceniał ryzyko takich tłumaczeń z pewnym komponentem tłumaczenia decyzji. 


A później przez 2 lata pracowałem jako główny inżynier w konsultingu w Warszawie, firma nazywała się Sigmoidal. Tam też pracowaliśmy nad bardzo dużą ilością projektów, które wchodziły zarówno w wizję komputerową, jak i rozpoznawanie mowy. Przede wszystkim natomiast był to język naturalny, ale też zdarzały się projekty typowo researchowe, nawet z takich fundacyjnych zagadnień Machine Learningu.




Równolegle do tej pracy, w wolnych godzinach też pracowałem akademicko. Miałem absolutorium, ale pisałem magisterkę. Pracowaliśmy właśnie nad projektami związanymi z wykrywaniem raka jelita grubego na zdjęciach. Później też w ramach współpracy z Uniwersytetem pracowaliśmy nad modelami generatywnymi, w których generowaliśmy białka antybakteryjne. Mam jeszcze jedne doświadczenie, ale podejrzewam, że pogadamy o nim później, więc to zostawię na później 😉 







Ostatnia firma, w której pracowałeś – chińska firma TCL, która ma oddział w Warszawie. Co ciekawego tam robiłeś?


Wydaje mi się, że jak wspomniałem wcześniej, że miałem dużo szczęścia w pracy z różnymi projektami to ten projekt był chyba największym szczęściem, który mi się przytrafił. Często jest tak, że w biznesie projekty są bardziej researchowe lub bardziej biznesowe, ten projekt był zarówno płodny biznesowo, jak i płodny badawczo, więc było to olbrzymie szczęście.




A sam projekt dotyczył neural architecture search czyli inteligentnego przeszukiwania architektur. Jednym słowem, tworzyliśmy algorytmy albo sieci neuronowe, które modyfikowały lub tworzyły inne sieci neuronowe. Celem tego projektu było to, że TCL jest firmą, która produkuje bardzo szerokie portfolio urządzeń – od telewizorów przez smartfony, nawet klimatyzatory, kuchenki – wszystko właściwie tam jest.




Każde z tych urządzeń miało jakiś określony chip, każdy z tych chipów miał określony silnik wykonywania inferencji sieci neuronowych, więc naszym zadaniem było stworzenie silnika, który znając to urządzenie, jak i znając ten silnik stworzy taki bardzo szybki algorytm (szczególnie do wizji komputerowej), rozwiązujący zadanie. Jest to problem o tyle ważny, ponieważ kiedy myślimy szczególnie o wizji komputerowej to takim dominującym podejściem jest podejście transfer learningowe czyli, że mam jakiś określony zbiór bazowych architektur, te architektury jakoś tam ubogacamy tak, żeby rozwiązywały nasze zadanie.



Natomiast tych architektur wydaje mi się, jest wciąż stosunkowo mało. W związku z tym, my w pewnym sensie wypełnialiśmy luki pomiędzy tymi architekturami i dzięki temu byliśmy w stanie dotrzeć do większej ilości urządzeń i rozwiązywać większą ilość zadań, co było potwornie satysfakcjonujące.




Tutaj jeszcze tylko wspomnę dla słuchaczy – o AutoML mamy osobny odcinek 101. Tam co prawda było na temat takiego klasycznego uczenia maszynowego, a nie poszukiwania sieci. 


Powiedz jeszcze trochę więcej na temat ciekawych wyzwań, które udało się znaleźć, bo te wyzwanie było całkiem nieintuicyjne. Wymień kilka wyzwań i z czego to wynika, jakie były rozwiązania.




Wydaje mi się, że w chwili obecnej mówimy tutaj o Transfer Learningu, ale taki Transfer Learning jest dwufazowy. W pewnym sensie pierwsza faza jest taka, że ten Transfer polega na tym, że bierzemy konkretną architekturę i ta architektura w pewnym sensie jest wykorzystywana w naszych zastosowaniach, ale jest drugi taki Transfer Learning (nazwijmy to Meta Transfer Learning), który polega na tym, że jest to transfer w pewnym sensie z researchu, badań, Akademii, do biznesu w tym sensie, że to Akademia w pewnym sensie wymyśla problem. Czyli kiedy np. Akademia chce zbudować jakąś konkretną sieć, która zdaniem badaczy jest szybka to wówczas automatycznie to, w związku z tym, że biznes przejmuje te algorytmy od nich to właśnie to jest transferowanie również tego przekonania co do tego, że ta architektura jest szybka. 



W chwili obecnej wydaje mi się, że też z powodu tego, że badanie takie ogólne zajmują się ogólnie postawionymi problemami. Takim dominującym wyznacznikiem tego czy sieć jest szybka to jest liczba operacji wykonywanych w danej sieci. Możemy spojrzeć jak np. każda konwolucja jeśli chodzi o sieci konwolucyjne, wykonuje określoną liczbę operacji dodawania czy mnożeń czy operacji na liczbach zmiennych przecinkowych. To ta liczba właśnie jest takim uniwersalnym wyznacznikiem, czy sieć będzie wykonywana szybko czy wolno. Te sieci, które właśnie w Akademii według tego standardu są optymalizowane, żeby właśnie wykonywać szybko to właśnie te sieci przechodzą później do biznesu. 




To okazuje się, że generuje wiele problemów bardzo nieintuicyjnych, ponieważ ta sieć dokładnie tyle operacji ile stara nam się uzyskać się uzyskuje, ale okazuje się, że operacja nie jest operacji równa. I tak wiadomo, że na końcu to będzie wykonywane na jakimś konkretnym urządzeniu, konkretnym silniku. 




Powiem tutaj parę ciekawostek. Może zacznę od urządzenia. Np. okazuje się, że w chwili obecnej są bardzo określone przeploty np. w sieciach konwolucyjnych czyli np. kiedy używać większych, a kiedy mniejszych filtrów i to z powodu właśnie takich konkretnych optymalizacji niskopoziomowych. Różne przeploty po prostu dają różne wyniki, gdzie możemy mieć sieć, która wykonuje dokładnie taką samą liczbę operacji, ale z racji powiedzmy gdzie, jak głęboko w sieci, jakie operacje są wykonywane – te sieci będą miały zupełnie różne czasy wykonania. 




Drugą warstwą, o której też wydaje mi się, że mało się mówi jest też warstwa konkretnego silnika. Np. jeśli chodzi o smartfony to możemy właśnie też na różnych urządzeniach wykonywać sieci przy pomocy różnych silników. Takie dwa podstawowe to bardzo popularny w chwili obecnej to TF Lite, który towarzyszy TensorFlow’owi. To jest właśnie taki silnik wykonujący obliczenia w sieciach neuronowych na wielu urządzeniach. Ale też jest np. taki silnik, który nazywa się SNPE i jest związany z chipami Snapdragona.




Okazuje się, że dokładnie dwie takie same sieci, wykonują się w zupełnie różnych czasach albo nawet nie to, że w zupełnie różnych, ale nie ma korelacji pomiędzy czasem wykonania. Wiadomo, że któryś silnik może być silniejszy, drugi wolniejszy. Okazuje się, że pojawia się tam potwornie dużo dziwnych czynników, które wpływają na wykonanie tej sieci. Taka chyba najbardziej ciekawa rzecz jest taka, że są pewne określone liczby filtrów, które każdy silnik preferuje np. TF Lite z naszych doświadczeń preferuje ilości filtrów w konwolucjach, które są podzielne przez 4 czyli np. intuicyjnie przejście z 4 filtrów do 3 filtrów może będzie się wykonywało tyle samo.




W związku z tym kontrintuicyjnie zmniejszenie sieci może wręcz czasem nawet wolniej, bo rzeczy, które się dzieją w silniku sprawiają, że jednak z tych 3 filtrów nagle jakoś robią się 4, w związku z tym dodatkowa operacja też zabiera czas. W związku z tym może dochodzić do takich kontrintuicyjnych sytuacji, że zmniejszenie sieci spowoduje jej zwolnienie. 



Natomiast SNPE jest znacznie ciekawsze. Mianowicie SNPE preferuje ilość filtrów podzielną przez 32 i każda inna ilość filtrów jest źle wspierania. Czasami okazuje się, że zmniejszenie tej sieci albo nawet zwiększenie filtra dosłownie o 1 może totalnie wywrócić czas inferencji do góry nogami. W związku z tym jest tam bardzo duże pole do popisu, bardzo duże pole do optymalizacji. Wiele z tych rzeczy wydaje mi, że wręcz trzeba odkrywać. Jest to taka dodatkowa przestrzeń w optymalizacji modeli, która wydaje mi się być fascynująca, a podejrzewam nie do końca powszechnie  znana.




Powiedz,  czym się skończył ten projekt? Jak się z tym czujesz, kiedy Twój model albo model, którego w jakiś tam sposób dotknąłeś, kręci się na milionach urządzeń?




My właśnie rozwijaliśmy te algorytmy, które miały optymalizować te modele pod kątem różnych urządzeń. Co najmniej jeden model z tego co wiem. Niestety miesiąc temu odszedłem z TCL, więc na 100% wiem na pewno o jednym. Ale właśnie skończyło się to bardzo sprawnie działającym zespołem jak i również silnikiem do przeszukiwania tych architektur, który teraz nadal jest rozwijany i kilkanaście modeli już jest w kolejce do deploy. To uczucie jest potwornie satysfakcjonujące.




Też mieliśmy takie zadanie z poprawianiem zdjęć w galerii więc wydaje mi się, że to na pewno jest mega przyjemne, kiedy po prostu ktoś będzie mógł w wolnej chwili delikatnie poprawić swoje zdjęcie, korzystając z mojego algorytmu. Muszę przyznać, że robi mi się zawsze ciepło na sercu, kiedy o tym myślę. A tutaj mam przynajmniej milion powodów, żeby coś takiego się działo.





Nagrywając ten odcinek, używamy kamery. Właśnie widzę za Twoimi plecami dużo różnych książek. Są książki matematyczne, techniczne. Próbuje tak zrozumieć kim bardziej jesteś – czy chcesz się rozwijać w kierunku matematyka czy inżyniera? Bawiąc się architekturą, wybierając lepszą optymalizację to jest bardziej taka praca inżyniera. Jak się czujesz?




To pytanie, które ja sobie musiałem w końcu  kiedyś zadać osobiście. Zauważyłem, że w różnych miejscach czułem, że nie do końca pasuję. Kiedy  studiowałem matematykę, zaczynałem z takiej bardzo inżynieryjnej strony, natomiast na pewno samo  piękno matematyki, wręcz estetyczne i syntetyczne mnie zachwyciło. Natomiast kiedy bardziej poszedłem w tę stronę, to też czułem, że czegoś mi brakuje – brakowało tej  technicznej strony. 




Zacząłem się nad tym głębiej zastanawiać i doszedłem do wniosku, że można te rzeczy właściwie ze sobą połączyć. Odnalazłem to połączenie. Dużą częścią pracy inżyniera jest umiejętność odpowiedniego nazywania rzeczy i wręcz wydaje mi się, że dobre nazwy, dobre zrozumienie rzeczy, nadanie im takiego sensu przez nazwę, pomaga rozwiązywać wiele problemów. Tak np. kiedy pracowaliśmy bardziej z biznesem, czyli z konkretnymi klientami,  to np. nazywanie było potwornie istotne z perspektywy tego, żeby bardzo można było dokładnie określić problem, czyli zrozumieć, jakie są oczekiwania.







Umiejętność nazywania rzeczy jest kluczowa, żeby znaleźć wspólny język i żeby tak naprawdę wiedzieć, co jest ważne i co tak naprawdę musimy osiągnięcia.






Jeżeli spojrzymy sobie na to z innej strony, istotne jest także zbudowanie (pracując jako inżynier) też w takich biznesowych pipeline’ach to potwornie istotne było odpowiednie pokazywanie kroków, które tam się dzieją. Wówczas od tamtych nazw oczekiwaliśmy pewnie jakiejś separowalności, żeby też one brały pod uwagę urządzenia na jakich  będą się wykonywały, ale też np. fajnie by było, żeby te różne nazwy wiązały się z czymś co potencjalnie później da się radę wykorzystać.




Zauważyłem, że właśnie jeśli się odpowiednio nazywa rzeczy, np. jeśli odpowiednio się powie, że ten komponent służy temu, że jeśli odbiorę ten tekst to ten tekst zwróci mi tę informację, to wówczas te nazwy nam pozwalają osiągnąć po pierwsze znacznie większą czytelność, a po drugie znacznie większą reużywalność. 




Schodząc znowu poziom niżej, te poszczególne komponenty wiadomo, że trzeba zakodować korzystając z konkretnych frameworków, konkretnych języków itd. Podobnie jak mamy umiejętność nazywania w kodzie obiektów, interfejsów, to wiadomo, że to jest potwornie ważne, natomiast taką, wydaje mi się ważniejszą rzeczą, którą może trochę mniej się eksploruje, a którą odkryłem to jest to, że np. bardzo ważna jest separacja poszczególnych nazw od siebie. Mamy zazwyczaj do czynienia z co najmniej dwoma rodzajami nazw czyli takim nazwami naszymi czyli kiedy rozwiązujemy jakiś model oparty o tekst, pewnie mamy jakieś teksty, może czytelników. Pojawia się mnóstwo obiektów, które towarzyszą temu problemowi.




Natomiast wiadomo, że wszystko to trzeba w jakimś tam języku napisać, więc pewnie korzystamy Kerasa, Scikita, TensorFlow itd. Np. zauważyłem, że dobre nazwy są to takie odseparowane nazwy. Takie, które w pewnym sensie pozwalają odseparować te dwa światy, ponieważ kiedy te nazwy są nadmiernie związane ze sobą to zazwyczaj powoduje bardzo dużo problemów w dalszej części.




Jak to się wiąże z tymi książkami? Wydaje mi się, że dobre nazwy są pomieszaniem ponownie dwóch takich sprzecznych światów. Zazwyczaj im prostsze są jakieś i np. w jakimś sensie skracają zapis, tym są przyjemniejsze. Natomiast z drugiej strony wiadomo, że ta estetyka nie do końca wiąże się z użytecznością. Wiadomo, że na koniec dnia te nazwy mają być przede wszystkim użyteczne.




W związku z tym, kiedy ja odkryłem, że zarówno mam problem z tą taką bardziej inżynieryjną częścią i z taką bardziej estetyczną czyli, że nie lubię przebywać w takiej syntetycznej przestrzeni, w której te nazwy są czyste. W tym wypadku przez tę syntetyczną przestrzeń, takie akademickie podejście do programowania obiektowego, które wydaje mi się jest bardzo syntetyczne albo właśnie takie podejścia stricte akademickie do problemów to np. lubię, podobają mi się, ale z drugiej strony wydaje mi się, że często one są oderwane od takiej konkretnej praktyki.




Z kolei w tej praktyce to jest taka ciężka inżynieryjna praca, że ciężko jest podnieść głowę i spojrzeć na to, ponieważ jesteśmy skupieni na dowożeniu konkretnych zadań. Z tym też się nie do końca odnajdywałem, więc właśnie znalazłem sobie taką niszę pomiędzy. Właśnie mając szczęście, żeby pracując zarówno w biznesie jak i w akademii, jak i zarówno projektując jak i rozwiązując zadania, ogromnym szczęściem i radością dla mnie jest to, że udało mi się zaobserwować bardzo wiele złych nazw, dobrych nazw i właśnie w takim estetyczno-praktycznym procesie mogę tworzyć teraz swoje, co jest na pewno dla mnie wielkim szczęściem. 



Słuchając Ciebie aż się chce wykorzystać tę umiejętność  nazywania rzeczy. Wróćmy jeszcze na moment do chińskiej firmy TCL. Jak to się stało, że z jednej strony zrobiłeś bardzo fajny projekt, czuć tę satysfakcję i nawet jak nie widać twarzy to czuć w głosie, że jesteś bardzo dumny z tego, ale z drugiej strony odszedłeś. Spróbujmy to nazwać, co to się stało?




To jest bardzo ciekawe zjawisko. Odszedłem dlatego, że dostałem bardzo dobrą propozycję doktoratu i współpracy z grupą onkologii obliczeniowej na Wydziale MIM w Warszawie. Muszę przyznać, że z powodów osobisto-zawodowych, nie podjąłem doktoratu, chodziło również o rzeczy materialne.




Natomiast przez wiele lat to było moim marzeniem, żeby pójść na ten doktorat, więc teraz ta okazja się przytrafiła, z czego byłem szczęśliwy. Natomiast ten projekt był bardzo interesujący, zadowalający, więc to była na pewno bardzo trudna decyzja. Ale ostatecznie stwierdziłem, że w związku z tym, że są to tematy medyczne i okazja do  zrobienia czegoś dobrego dla  ludzi, którzy zmagają się z chorobami, to stwierdziłem, że jeśli dałoby radę wykorzystać tę radość (nazwijmy to radość nazywania, modelowania również w takim szczytnym celu) to wówczas wydaje mi się, że to przyniosłoby mi znacznie więcej spełnienia.



Natomiast jeśli chodzi o takie nazywanie to właśnie nazwałbym to taką ciężką decyzją, w której wydaje mi się, że takie długofalowe, zewnętrzne motywy wzięły górę.




Czuć, jak mocno rezonuje pomaganie. Myślę, że też to jest to bardzo sensowne, logiczne, aby ten potencjał, który technologia wytwarza wykorzystywać w odpowiednim kontekście. Tutaj wielkie brawa.



Świta AI w Chinach

Ale jeszcze domknę wątek odnośnie chińskiej firmy TCL. Świat Chin jest dość zamknięty i z jednej strony wiadomo, że tam dużo się dzieje. Pracowałeś w firmie, w której miałeś styczność z chińczykami, wyczułeś trochę tą różnicę jak oni myślą, jak oni działają. Powiedz o takich swoich przemyśleniach, czym się różni takie klasyczne podejście europejskie od chińskiego? 




Może zacznę od takiej rzeczy, która może wydawać się  anegdotyczna. Jednak większość firm w Polsce jeśli współpracuje z zagranicą taką dalszą, to są jednak te firmy w Stanach Zjednoczonych. Jest to o tyle ciekawe, że tam jest przesunięcie takie, że kiedy tam jest wcześnie, to tam jest późno. W związku z tym taki klasyczny tryb pracy programisty, który raczej mimo wszystko eksploruje późniejsze godziny jest naturalnie wykorzystywany. Natomiast w tym wypadku różnica jest w drugą stronę. W związku z tym główne godziny takiego przecięcia, które mieliśmy z naszymi współpracownikami z Chin były godziny ranne. W związku z tym no właśnie głównie management zajmował się kontaktem z Chinami. 




Natomiast te godziny dostępności były też znacznie dłuższe, ponieważ pierwszą rzeczą, którą na pewno warto o Chinach wiedzieć to to, że te godziny pracy są tam znacznie dłuższe. Faktycznie pracuje się do znacznie późniejszych godzin, w związku z tym też automatycznie to przecięcie z godzinami w Polsce było znacznie większe. Często inżynierowie w Chinach pracowali do takich godzin późnowieczornych. 




Co do takich moich obserwacji z ograniczonego kontaktu to taka rzecz, która wydaje mi się wywarła na mnie największe wrażenie, to jest kwestia skali. Nie mówię tego oczywiście w kontekście  ilości  produkowanych rzeczy albo skali rynku, ale też skali całego środowiska i tego, jak rozwija się technologia. Firma, w której pracowałem – TCL  zajmuje się produkcją ekranów i w pewnym momencie wręcz padło stwierdzenie i zachęta ze wszystkich stron, że: „Słuchajcie, wszędzie, gdzie możemy położyć ekran to fajnie byłoby dołożyć do tego jakąś sztuczną inteligencję”.




W związku z tym były to zarówno telefony jak i telewizory, które w naturalny sposób mają ekrany, ale np. jeśli w klimatyzatorze albo jeśli w kuchence możemy wstawić ekran i chip to czemu tam też nie wstawić sztucznej inteligencji. W związku z tym to gdzie to ziarno potencjalnych pomysłów było rozrzucane to było naprawdę imponujące. W sensie skala tych produktów, które były dostępne i w których potencjalnie można było uzyskać wkład była naprawdę imponująca. 




Druga rzecz, która zrobiła na mnie olbrzymie wrażenie to mnogość rozmaitych dostawców. Ten rynek jest zamknięty, ale z drugiej strony jest też bardzo duży. W ramach swojej pracy miałem do czynienia z olbrzymią ilością rozmaitych urządzeń, ale też rozmaitych chipów albo dostawców konkretnych fragmentów oprogramowania albo np. z chipami się wiązały różne silniki. Było to dla mnie zaskoczenie. W sensie mimo wszystko z perspektywy takiego europejskiego konsumenta, który ma dostęp do określonych produktów to zazwyczaj to spektrum jest dosyć szerokie, ale na pewno to było znacznie szersze. Więc to na pewno zwróciło moją uwagę.




Z tym wszystkim się wiąże taka rzecz, że tam się pojawia mnóstwo wątków, więc naprawdę liczba wątków czyli takich eksperymentów, prototypów pracy, która właśnie jest wykonywana w próbach nowych zastosowań, eksploracji nowych technologii jest naprawdę fascynująca – jest olbrzymia. Porównując swoje doświadczenie ze współpracy z rynkiem amerykańskim i europejskim to tam to podejście jest takie bardziej skupione. W sensie, że jest wrażenie, że tych projektów eksploruje się mniej, ale eksploruje się je dłużej. Właściwie to jest bardzo dobre pytanie w sensie jak te rzeczy się ze sobą porównują.




Ciężko mi tutaj podać jakąś konkretną odpowiedź, bo z jednej strony chińskie firmy produkują naprawdę olbrzymią ilość urządzeń, toczy się olbrzymia ilość eksperymentów, ilość doświadczeń zdobywanych przy tych rzeczach jest naprawdę niewiarygodna. Też wydaje mi się, że eksplorowane są znacznie często ciekawsze scenariusze, które często brzmią jak science-fiction i może na pierwszy rzut oka właśnie te prototypy nie wyglądają jakoś zachwycająco, ale no naprawdę każda kolejna iteracja jest lepsza.




Taka rzecz, która mi przychodzi do głowy to z tego co pamiętam Xiaomi ostatnio wypuściło prototyp ładowarki, która stoi w pokoju i ładuje telefon bezprzewodowo bez konieczności kontaktu z telefonem. Skojarzyło mi się to dlatego, że ten prototyp działa. Wydaje mi się, że jest to wczesna faza, więc pojawia się wiele problemów, ale mimo wszystko zostało to przedstawione jako ciekawostka i podejrzewam, że prototyp toczy się dalej. 



Natomiast mam wrażenie, że właśnie to moje doświadczenie z firmami w Europie jest takie, że owszem tam też w pewnym sensie ilość tych eksperymentów się toczy, natomiast jak już jakieś konkretne eksperymenty wchodzą w grę to ilość uwagi, która jest jej poświęcona jest znacznie większa, bo w związku z olbrzymią ilością skalą eksperymentów i ich zakresem, wydaje mi się, że też znacznie łatwiej jest takie eksperymenty ucinać na rynku chińskim. W związku z tym, też ten czas poświęcony na to jest znacznie krótszy.




Wydaje mi się, że kolejne lata, na pewno obserwacja tego jak te różnice do takich produktów doprowadzą będzie potwornie interesująca. To były takie moje najbardziej poruszające obserwacje.




Każdy z nas, nawet jeżeli ma styczność z tym rynkiem,  to jest zawsze taki wycinek, bo skala jest przeolbrzymia i w ogóle spróbować to jakoś usystematyzować co tam się dzieje i dokąd to prowadzi to pewnie nie jest takie łatwe, ale jest takie satysfakcjonujące. Jest taki żywy organizm, który w tej chwili mocno się rozpędza.



To jest taki być może już nastolatek, a już za chwilę będzie bardziej dorosły i czym to się skończy, jak to będzie dalej się rozwijać to pewnie rozmowa na znacznie dłuższą rozmowę, można się nad tym zastanawiać porządnie dokąd to wszystko dąży. 








Dobre praktyki w Machine Learning



Zmienię teraz temat. Porozmawiajmy o dobrych praktykach, w szczególności w ML, biznesie, więc powiedz proszę, czym dla Ciebie są dobre praktyki w ML i może najlepiej właśnie w takich punktach, konkretach jakbyś mógł wymienić.



To jest bardzo dobre pytanie, też dlatego, że jest bardzo szerokie. Wydaje mi się, że jest  ich wiele w ML, więc może podam jakieś konkretne przykłady w jaki sposób ten ML może się różnić i co uważam w tym jest dobrą praktyką. Wydaje mi się, że taką jedną linią podziału jest to, jaki jest oczekiwany czas ile to nasze rozwiązanie machine learningowe ma żyć.




Wówczas wydaje mi się, że taki prototyp albo taki krótki projekt, wiadomo, że wówczas te projekty są znacznie prostsze, ponieważ jest zdefiniowany dosyć prosty i konkretny cel do osiągnięcia, więc wówczas te projekty toczą się stosunkowo prosto i wydaje mi się, że też, kiedy uczymy się Machine Learningu lub kiedy wchodzimy w Machine Learning, to mamy styczność z takimi projektami, które mają krótki cykl życia. Natomiast wydaje mi się, że znacznie ciekawsze są takie projekty, które mają taki znacznie dłuższy cykl życia i tutaj wydaje mi się, że konieczność tych dobrych praktyk automatycznie jest większa.





W punktach pierwsza rzecz, która wydaje mi się bardzo dobrą praktyką to jest bardzo dokładne zdefiniowanie tego, co chcemy uzyskać. Czyli np. taką konkretną, bardzo dobrą praktyką jest po prostu nawet zrobienie takiego nazwijmy to mechanicznego Turka, którym my udajemy ten algorytm i po prostu ustalenie kontraktu i przeeksplorowanie bardzo konkretnych odpowiedzi na pytania na jakie klienci chcą uzyskać odpowiedzi, wydaje się to być oczywiste, natomiast naprawdę bardzo często może doprowadzać do ciekawych wniosków.





Bardzo często wychodzi mnóstwo różnic w terminologii, w oczekiwaniach. Takim chyba najbardziej klasycznym przykładem to było to, że w jednym momencie, podczas takiej jednej rozmowy klient, który był bardzo przekonany do tego co chce, właściwie totalnie przedefiniował zadanie.  Miał to być jakiś problem klasyfikacji, okazało się, że   to jest problem klasteringu tak naprawdę. Tych klas miało być 6, wyszło jest ich ponad 10 razy więcej. Okazało się, że skuteczność wcale nie jest taka istotna, żeby powiedzmy te klastry wydawały mu się najbardziej interesujące, wcale nie były takie ważne, a ważne było to, żeby te klastry, które są największe, a właśnie najmniej interesujące, żeby łatwiej odfiltrowywać.




Więc taką na pewno dobrą praktyką jest właśnie rozpisanie i poczucie tego co chcemy osiągnąć. Więc to jeśli chodzi o taką praktykę biznesową.




Taka praktyka niżej poziomowa, którą ja na pewno bardzo gorąco polecam to moje doświadczenie podpowiada mi, żeby bardzo mocno separować takie rzeczy, które są bardzo niskopoziomowo w języku programowania, w którym piszemy od takiej logiki biznesowej. Takie konkretne uwagi to jest tak, że np. bardzo często, kiedy chcemy np. napisać pipeline, w którym konkretne obiekty biznesowe są przekształcane w inne obiekty biznesowe, wydaje mi się, że bardzo trzeba tam unikać obiektów niskopoziomowych, bo to doprowadza do naprawdę olbrzymiego chaosu itd.





Zarówno z takiej perspektywy po prostu czystości tego rozwiązania, ale przede wszystkim modyfikacji czyli przyszłych rozszerzeń albo przyszłych dopasowań do tego. Czyli na pewno bardzo bym doradzał taką totalną separację od tych metryk.




Trzecia praktyka, która wydaje mi się też stosunkowo prosto, aczkolwiek bardzo często może unikać w rozwoju takich algorytmów machine learningowych to jest właśnie w jaki sposób walidować te modele.




Wydaje mi się, że to też trochę dotyczy tego punktu pierwszego, ale wydaje mi się, że przynajmniej taką praktyką, którą ja stosuję przynajmniej w części walidacji modeli biznesowych jest zastanowienie się jak będzie wyglądała pierwsza porcja danych, które ten model dostanie czyli, że w pewnym sensie definicja tego czyli np. czy to będą dane, które ten model będzie dostawał jednego dnia, czy to będą jakieś nowe dane, które po prostu przylecą z jakiegoś serwisu o danej godzinie itd.




Wydaje mi się, że takie wymyślenie sobie jak będzie wyglądał pierwszy dzień albo pierwszy taki atomowy, jednostka czasu użycia tego modelu, niewiarygodnie ułatwia zdefiniowanie tego w jaki sposób ten model należy walidować. Walidacja przebiega w ten sposób, że z części naszych danych po prostu wycinamy sobie taki fragment, który ewidentnie będzie zachowywał się w taki sam sposób i to ustawia nam zarówno strategię tej walidacji, jak i to co tak naprawdę będzie do tego algorytmu wchodzić.





Natomiast taką ostatnią cechą, też związaną z tym nazywaniem rzeczy to wydaje mi się, że właśnie w rozwijaniu takich długofalowych projektów to jest właśnie pamiętanie o takiej w sumie bardziej programistycznej zasadzie czyli pamiętanie o zasadzie otwarty-zamknięty czyli, że dobry kod powinien być otwarty na rozszerzenia, natomiast zamknięty na modyfikację.




Wydaje mi się, że szczególnie w wypadku Machine Learningów, w którym jednak często te modele to są obiekty nie do końca zrozumiałe co robią, często ciężko nam zrozumieć jak one działają. Potwornie jest ważne przygotowanie tego rozwiązania, żeby w pewnym sensie potencjalne zmiany albo rozszerzenia nie wpływały na to co się działo w naszym projekcie dotychczas. W związku z tym, że często jakby te modele wprowadzają bardzo dużo losowości do tego całego naszego pipeline to w momencie, w którym będziemy musieli kontrolować na ile to jest kwestia problemu czy modelu, a na ile to jest kwestia naszych zmian jest bardzo  trudne.





W związku z tym, taką konkretną rzeczą, którą  bym proponował, to właściwie sprowadza się do takich dobrych praktyk programistycznych jak odpowiednie ponazywanie rzeczy. Zasada otwarty-zamknięty najczęściej dzieje się wtedy, kiedy mamy jakąś czynność, która jest nienazwana i która jest w cyklu tego całego kodu, wykonuje się gdzieś. Wówczas, kiedy będziemy chcieli ją zmienić to jeśli mamy czysto napisany kod to jest wówczas podmiana pewnego interfejsu. Jeśli nazwiemy tę czynność i umieścimy odpowiedni interfejs, który ją wykonuje to wówczas podmiana tego polega na tym, że możemy po prostu wstawić tam nowy element i tworzy się nowa rzecz. W tym sensie jesteśmy otwarci na rozszerzenie. Natomiast jeśli ją zmienimy to moje najgorsze doświadczenie machine learningowe jest takie, że takie jakieś delikatne zmiany w jednym takim miejscu powodują niewiarygodne zmiany w innym.





Podsumowując wydaje mi się, że niewiele mówiłem w sumie o samych modelach, głównie mówiłem o programowaniu. Wydaje mi się, że taką na pewno dobrą praktykę jest też, żeby to wszystko łączyło się (mówię o długofalowych projektach).



Biznes & Akademia – czy mogą współpracować?



Wszystkie punkty, które wymieniłeś są fajne, rezonują bardzo mocno, warto się wsłuchiwać i też pewnie trzeba parę razy się oparzyć, żeby zrozumieć co miałeś na myśli. Powiedziałeś też, że właśnie będziesz robić doktorat w szczytnych celach. Porozmawiajmy też trochę o tym, ale tak trochę z innej strony. Jest sobie świat akademicki i biznes – one dość mocno się różnią od siebie, zupełnie inaczej podchodzą do projektów ML’owych i też jest zupełnie inna dynamika, inne cele wbrew pozorom.








Czy widzisz tu jakąś szansę na efektywną współpracę w polskich warunkach, pomiędzy światem akademickim, a biznesem? Co musi się stać, żeby taka współpraca w ogóle miała miejsce, a jeżeli już ma to co zrobić, aby była efektywna? Być może znasz jakieś konkretne przykłady, kiedy takie współpracy się zaczynają?








Oczywiście tutaj można wymienić NCBR, też zresztą bardzo duże środki w najbliższych latach będą wydane na takie projekty, ale z tego co słyszę to różnie to bywa i zdarza się, że w świecie akademickim pojawia się taki sposób, żeby spełnić pewne warunki formalne niż faktycznie pewne rzeczy wnoszą w taki sposób, że ten projekt raczej zabija się niż się rozwija. Temat jest trudny, być może nawet delikatny, ale chciałbym usłyszeć Twoją perspektywę. Co powinno się stać, aby właśnie te światy zaczęły współpracować, bo ostatecznie myślę, że na tym wszyscy mogą zyskać.



Ja bym trochę to pytanie podzielił i właściwie nawet zaczął od podzielenia jednego z głównych bohaterów tego pytania, czyli tego świata akademickiego. Mi się wydaje, że jeśli chodzi o Machine Learning i świat akademicki, przynajmniej moje doświadczenie podpowiada mi, że są co najmniej 3 takie światy, które wydaje mi się, że warto byłoby rozdzielić i każdemu przyjrzeć się bliżej.




Pierwszy świat –  to jest taki świat, w którym traktujemy świat akademicki jako źródło wiedzy, którą student na etapie licencjackim lub magisterskim dostaje i potem w pewnym sensie możemy spytać się jak ta wiedza, którą on zdobywa w tym czasie, transferuje się na konkretny biznes, czy dany system edukacji generuje kandydatów, którzy później idą do biznesu i właśnie się w tym biznesie odnajdują. Wydaje mi się, że z tej perspektywy to odpowiedź jak to w chwili obecnej wygląda jest bardzo rozmyta.





Z jednej strony wydaje mi się, że (też myślę w kategoriach swojego wydziału MIM) z jednej strony każdy kolejny rocznik składa się naprawdę z świetnych programistów, którzy są szanowani na całym świecie. Są to też ludzie, którzy bardzo szybko adaptują się w biznesie, są bardzo cenione, więc z tej perspektywy wydaje mi się, że to jest na pewno super. Z drugiej zaś strony wydaje mi się, że to jest taka cecha przede wszystkim takiego kształcenia IT. Wydaje mi się, że w wypadku Data Science jest troszkę inaczej. Pierwszym problemem, który się tutaj pojawia jest to, że świat akademicki w ramach tego kształcenia akademickiego w naturalny sposób może robić bardzo ograniczoną liczbę projektów.




Widzę takie dwa największe ograniczenia. Pierwsze ograniczenie to jest po prostu czas. Jak rozmawialiśmy o dobrych praktykach i rozwiązaniach machine learningowych, które mają trwać dłużej to zazwyczaj myślimy o systemach, które mają działać wiele lat. Ze swego doświadczenia wiem, że są systemy, które tam żyją po 7, 10 lat itd. i wiadomo, że ciężko jest w ramach 6-miesięcznego kursu czy rocznej magisterki przygotować się do tego. W związku z tym wydaje mi się, że tego trochę nie przeskoczymy.





Natomiast z tego co wiem, tutaj jest bardzo fajna inicjatywa, która została podjęta – od przyszłego roku na MIM-ie rusza nowy kierunek związany ze sztuczną inteligencją i wydaje mi się, że tam bardzo interesującym rozwiązaniem, które się pojawia jest właśnie konieczność odbycia stażu. Z tego co pamiętam jest teraz na rok. Ja bym to nawet rozszerzył na 2 lata, bo wydaje mi się, że im dłużej ludzie współpracują i im dłużej mają styczność z rzeczą, która żyje znacznie dłużej niż te 3 miesiące albo pół roku, a potem się o niej zapomina, tym lepiej i to na pewno uczy zarówno dobrych praktyk i daje dobre intuicje tego co jest ważne, a co nie.





Drugi problem wydaje mi się być troszkę głębszy, ale jak się nad tym zastanowimy to jednak to co dla mnie osobiście jest strasznie fascynujące i przyjemnie w Machine Learningu jest to, że jednak te dane, ten problem wprowadza bardzo dużo losowości. Często rozwiązanie projektu machine learningowego to jest taka przygoda. Jest część nieprzyjemna, w której trzeba czyścić dane, ale na pewno taka umiejętność reakcji, radzenia sobie z niepewnością, zarówno co do danych jak i do samego problemu, jak i do algorytmu, wydaje mi się, że to wymaga takiej pewnej adaptatywności. Kiedy myślimy sobie o takim kursie akademickim to wydaje mi się, że po prostu na taką niepewność, taki trochę chaos na to przesadnie nie ma miejsca, ponieważ Uczelnia albo kurs to jest dokładnie miejsce, w którym w jakiś tam ustrukturyzowany sposób chcemy przekazać wiedzę.




W związku z tym wstrzyknięcie to w takiej umiejętności, żeby te kursy miały tą niepewność to jest to dosyć trudne. Też wydaje mi się, że jeżeli chodzi o matematykę, informatykę jest sprzeczne z aktualnym modelem nauczania, który raczej wiąże się z tym, że my mamy pewną taką naczelną wiedzę czyli wiedzę na temat danych działów matematyki albo danych technologii informatycznych, danych języków programowania itd. i po prostu chcemy tą wiedzę przekazać. Oczywiście to jest świetny początek do tego, natomiast z perspektywy dalszych kroków to może to robić takie wrażenie, że właśnie ta rzeczywistość jest taka dosyć uporządkowana, przewidywalna, że łatwo te problemy znaleźć.





Tutaj na pewno ciężko jest takiego rozwiązywania problemów w takim dużym chaosie się nauczyć. Liczę na to, że ten nowy program i konieczność odbycia stażu pomoże, natomiast wydaje mi się, że tutaj taka transformacja w kierunku takiego radzenia sobie z chaosem i radzenia sobie z takimi rzeczami, które żyją znacznie dłużej jest ważna. Więc to jest jeśli chodzi o taki punkt przygotowywania nowych pracowników i w jaki sposób to się tworzy.




Druga rzeczywistość akademicka, nazwałbym to taką rzeczywistością akademicką klasyczną. Czyli kiedy mówię o takiej rzeczywistości akademickiej klasycznej to myślę o takim profesorze, doktorancie, post docu, który pracuje nad swoją dziedziną, swoje wyniki publikuje w określonych czasopismach, te czasopisma mają proces review dosyć zaawansowany. Wymaga się właśnie w tej przestrzeni akademickiej wysokiej jakości tego rozumowania, wysokiej jakości eksperymentów.




Ten proces oczywiście często trwa długo i w związku z tym przenikanie tych nowych wieści i nowych nowinek trwa dłużej, co jest w sprzeczności z tym trzecim światem, bo to są dwa zupełnie inne światy. To jest też świat akademicki, który jest najbardziej związany z uczeniem maszynowym czyli te niewiarygodnie bujne środowisko badań w Machine Learningu.



Wydaje mi się, że są dwa zupełnie różne światy i wydaje mi się, że na pewno warto byłoby im się przyjrzeć, żeby zrozumieć w jaki sposób one wpływają i dyskutują z biznesem, bo to jest dosyć fascynujące. Ten drugi świat czyli w chwili obecnej ten najgorętszy świat, który bardziej niż w żurnalach żyje na Twitterze, w których artykuł, który ma tyle cytowań, że jest właściwie kluczowy dla danej dziedziny. To jest naprawdę fascynujący świat. Wydaje mi się, że obydwa światy zarówno w różny sposób dyskutują z biznesem, wpływają na niego i oczywiście w drugą stronę. Więc właśnie ja bym podszedł do tego bardziej holistycznie.





Wydaje mi się, że szczególnie jeśli chodzi o ten trzeci świat czyli ten świat najbardziej bujny to jest taka przestrzeń, która paradoksalnie wpływa w chwili obecnej na biznes znacznie bardziej niż ten drugi. Ja lubię sobie o tym myśleć, że ten aktualny świat, najbardziej bujny, lubię sobie często porównywać do Formuły 1 czyli, że to jest taki mega interesujący, wyżyłowany wyścig, w który są kamery z całego świata skierowane. Wszyscy wiedzą co tam się dzieje, znają kierowców, każdy chce z tego świata motoryzacyjnego coś uszczknąć itd. Wszyscy słyszymy, że co chwile jest jakieś nowe rozwiązanie w nowym bolidzie, nowy algorytm tam został stuningowany o te 3%.





Wszyscy są podekscytowani, wydaje mi się, że jest tam bardzo silna atmosfera i dzięki temu istnieje olbrzymia ilość hype na to, to też generuje olbrzymie zainteresowanie inwestorów, olbrzymie nadzieje i to jest ta pozytywna część tego świata.



Natomiast wydaje mi się, że istnieje też taka nie do końca pozytywna. Tutaj takie problemy, na które wydaje mi się, że bym chciał zwrócić uwagę to korzystając z tej metafory, że jednak biznes potrzebuje bardziej samochodu dla mas, dopasowanego do konkretnego transportu niż obserwowania tego najgorętszego show, w którym to jest. Więc pierwsza rzecz, która jest olbrzymim problemem w tym wszystkim to jest brak przenoszenia wyników z tego toru na taki zwykły ruch drogowy, co wydaje mi się być dosyć oczywiste. Tutaj widzę kilka problemów. Pierwszy problem często jest taki, że słyszymy i ludzie w biznesie słyszą, że sztuczna inteligencja rozwiązała problem X.




Ale właściwie co to oznacza? Czy to oznacza, że istnieje jakiś tor w tej Formule 1, na którym te pojazdy wykręciły faktycznie świetne wyniki, które potencjalnie nawet człowiek nie byłby w stanie wykręcić? Tutaj olbrzymi problem, który się pojawia jest to, że właśnie często ta definicja problemów w naturalny sposób w tym świecie najgorętszym, tam problemy nie istnieją w kategorii takich życiowych problemów tylko istnieją w kategorii konkretnych zbiorów danych i konkretnych wyników, na które trzeba to osiągnąć. To niestety się nie transferuje, ponieważ po pierwsze te problemy życiowe czy biznesowe generują zupełnie często inne dane, znacznie bardziej zaszumione, często w zupełnie innej naturze. To jest pierwsze źródło braku transferowalności.





Drugie źródło, które wydaje mi się być znacznie bardziej subtelne to jest to, że mam wrażenie, że wszyscy te tory znają. Strasznie mnie zafascynowało ostatnie badanie, bo kiedy np. pomyślimy sobie o takim zbiorze jak CIFAR-10 to w chwili obecnej wydaje mi się, że ilość treningów na tym CIFAR, szczególnie z bujnym rozwojem neural architecture search czyli ilość modeli, które były trenowane na tym CIFAR podejrzewam, że przekracza już ilość gwiazd w tej części galaktyki. Ostatnio ktoś spróbował zrobić taki prosty eksperyment, w którym po prostu spróbował stworzył nowe dane do tego CIFAR’a, które będą podobne do istniejących danych, ale będą mimo wszystko nowe.





Okazało się, że te wyniki w pewnym sensie drastycznie spadły czyli ewidentnie za każdym razem ścigamy się na tym torze i w ramach tych wyścigów rywalizacja jest uczciwa, natomiast jeśli ten tor delikatnie zmienimy to wówczas pojawiają się problemy i to też bardzo drastycznie wpływa na biznes, bo ten tor jest zupełnie inny i koniec końców doprowadza to bardzo często do zawiedzionych oczekiwań, co mi się wydaje być największym problemem dlatego, że właśnie ta transferowalność jest trudna.




Drugim problemem, który się tutaj tworzy to jest problem hype. Kiedy pracowałem w Sigmoidalu, braliśmy udział w konkursie. Zostaliśmy zaproszeni razem z innymi zespołami do tego, żeby brać udział w konkursie. Nagrodą w tym konkursie było podpisanie kontraktu, żeby rozwijać technologie dla tego klienta. Jeszcze dodam, że to był jeden z takich najbardziej ryzykownych działów dla tego klienta.





W związku z tym, kiedy pojechaliśmy na ten konkurs, który trwał dwa dni, skupiliśmy się bardzo bardzo mocno na tym, żeby te dane odpowiednio opracować, oczyścić je, znaleźć wszystkie potencjalne ryzyka, które się z tym wiążą. Bardzo mocno skupiliśmy się na tym ryzyku. Ostatecznie nie wygraliśmy tego konkursu, bo wygrał zespół, który te całe dwa dni na infrastrukturze klienckiej stawiał BERTa. Więc po dwóch dniach udało mi się w końcu postawić BERTa. Fakt, że ta nowa technologia była bardzo ważna.




Też wiem z takich rozmów z ludźmi, że szczególnie dla menedżerów też jest bardzo często ważne, żeby móc się pochwalić taką technologią. Mi się wydaje, że to generuje olbrzymi problem, ponieważ jednak te algorytmy na końcu są jakie są i też moje doświadczenie mówi, że często te wyniki  nie transferują się na konkretne problemy, więc na pewno to powoduje rośnięcie bańki, niemożliwych do zaspokojenia oczekiwań. To powoduje bardzo dużo projektów, które po prostu próbuje się rozwiązywać przy pomocy tych bolidów. Po prostu nie wychodzi, co też automatycznie stanowi problem.



Trzeci problem z tym związany to które bolidy albo które rozwiązania są premiowane. Tutaj taki przykład, który mi przychodzi do głowy, który też jest bardzo pouczający – ja pracuję teraz dużo w modelach generatywnych czyli właśnie w rodzinie modeli, w których są GANy, autoenkodery, ostatnio pojawiła się technika dyfuzji. Przyjrzenie się temu jak wygląda rozwój tej dziedziny będzie bardzo pouczające. Kiedy powstaje jakiś nowy algorytm generatywny to okazuje się, że strasznie ciężko taki model generatywny jest zewaluować. To jest faktycznie prawda, ponieważ to co chcemy to w pewnym sensie chcielibyśmy uzyskać.




Model generatywny to jest taki model, który stara się w pewnym sensie zamodelować rozkład danych czyli jeśli mamy jakieś obrazki to chcielibyśmy model, który pozwoli nam wygenerować nowy obrazek bardzo podobny albo np. ocenić czy dany obrazek jest w miarę wiarygodny. Wbrew pozorom to jest bardzo trudne zadanie, ponieważ ciężko jest tak naprawdę zdefiniować co to znaczy jakiś rozsądny obrazek.




W związku z tym, taką dominującą metryką, która jest stosowana w ewaluacji tych modeli jest to czy obrazki, które są generowane przy pomocy tego modelu wyglądają ładnie czyli czy nie są rozmyte, czy mają odpowiednie tekstury itd. Jak się nad tym zastanowimy to częścią ewaluacji tych modeli jest to, żeby kiedy taki artykuł się pojawia, wygenerował obrazki, które będą miłe dla oka. Ja mogę powiedzieć ze swojego doświadczenia, że zajmuję się rozwijaniem jednej z takiej rodziny modeli i zauważyłem, że wiele innych zespołów, które właśnie korzysta z podobnych rzeczy i też czyta artykuły, które powstają w ten sposób, jedno z naszych doświadczeń jest to, że kiedy troszkę oderwaliśmy od tych obrazków i bardzo dokładnie się przyjrzeliśmy tak matematycznie tym modelom, też co one modelują, udało nam się np. uzyskać znacznie lepsze wyniki w wyborze tych modeli tylko dlatego, że troszkę odeszliśmy od tego, że to nie są obrazki i nie optymalizowaliśmy tych obrazków.





Więc mi się wydaje, że to może powodować konkretne problemy, natomiast samo w sobie pokazuje taki problem, że dosyć istotnym czynnikiem w tym środowisku jest to, żeby właśnie to środowisko odbierało algorytmy dobrze. Nie ma takiej konkretnej walidacji również biznesowej, bo ona po prostu jest bardzo trudna do uzyskania, natomiast też ta presja, żeby te algorytmy były interesujące, nowinkowe, na pewno dosyć mocno na to wpływa.




To środowisko z perspektywy biznesu wydaje mi się z jednej strony wpływa pozytywnie, ponieważ rodzi olbrzymie zainteresowanie, pojawiają się tam duże środki, natomiast właśnie  te problemy, o których wspomniałem, dotyczą tego czego ja najbardziej się obawiam czyli takiego rozczarowania i pęknięcia tej bańki. Więc z tej perspektywy to dla mnie rodzi pewną obawę.



Tutaj oczywiście pojawia się ten drugi świat, o którym wspomniałem – klasyczny akademicki, zamkniętego review. W ostatnim czasie pojawiają się jakieś takie delikatne dyskusje pomiędzy tymi światami apropo właśnie tego co to znaczy dobry artykuł itd., więc ta dyskusja jest szalenie ciekawa.




Ja mogę ze swojej strony powiedzieć ciekawą anegdotę, że właśnie też kiedy też w ramach naszych współprac przygotowaliśmy artykuł do journala, w jednym miejscu zastanawialiśmy się dosyć długo czy dana operacja jest uzasadniona matematycznie. To wszystko obracało się w takim frameworku matematycznym, który nazywa się framework wariacyjny, ten framework ma określone założenia.





Tam zrobiliśmy rzecz, która była taka bardzo inżynieryjna, działała, ale ciężko było ją uzasadnić z tej perspektywy wariacyjnej. Zastanawialiśmy się czy to przejdzie przez review, a w tym samym czasie pojawił się artykuł, który zrobił jeszcze bardziej inżynieryjną rzecz, okazało się, że przeszedł przez review, tylko okazało się, że przyniósł naprawdę świetne rezultaty, więc to go obroniło.




Ale to też pokazało mi, że taki klasyczny świat akademicki jest bardzo skupiony na takiej jakości tych rozwiązań, żeby to było też takie spójne, czyste. Pojawia się takie bardzo dobre pytania.. z jednej strony wydaje mi się, że na pewno ta dyskusja pomiędzy tymi światami jest szalenie interesująca, przewiduję coraz większego rozczarowania, ten powrót potencjalnie starych, sprawdzonych metod będzie następował. Moja ocena tego jest taka, że to są dwie skrajności czegoś, co jest bardzo potrzebne.




Właśnie z jednej strony potrzebujemy tego parcia, tego pędu, z drugiej strony potrzebujemy też takiej kontroli, tego żeby te rzeczy były robione w sposób kontrolowany, żeby były też reprodukowalne. Więc po cichu liczę na to, że uda nam się w najbliższym czasie znaleźć bardzo ciekawą syntezę tych światów. Wydaje mi się, że to będzie potwornie ważne z perspektywy biznesu, również dlatego, że na pewno potencjalnie wprowadzenie jakiejś biznesowej walidacji do tego całego procesu będzie dla tego biznesu ważne.




Tak się przedstawia ten mój krajobraz tego środowiska.

Ciekawy był ten przykład z zakrętem, że wystarczy zmienić troszkę zakręt i już benchmark może się rozsypać albo pogorszyć. A w biznesie nie tyle, że zakręt się zmienia, tam rzeka nagle może się pojawić.




To jest też na tyle śmieszne, jak bierzemy sobie np. computer vision i fajnie jak mamy ImageNet, a jeżeli bierzemy sobie zdjęcie  z komórki to tam ciemno, rozmazane i jakość nam zdecydowanie spada, a przede wszystkim takie zdjęcia są w dużej ilości robione. Ale jedna rzecz mnie ciekawi. Pierwszy świat na pewno Ciebie nie dotyczy, bo to już minąłeś, ale drugi i trzeci – to Ty dołączasz teraz do którego świata? Drugiego?




Wydaje mi się, że choćby nawet z oczekiwań doktorskich w chwili obecnej jest to raczej drugi świat, ale wydaje mi się, że z upływem czasu te granice zaczną się znacznie przenikać. Pamiętam jak na MIM’ie parę lat temu podejście do Machine Learningu było bardzo ostrożne, teraz to Machine Learning wchodzi w ramach nowego przedmiotu. Po cichu liczę na to, że wchodzimy w przestrzeń tej fuzji, że jednak się jakoś spotkają te światy. Aczkolwiek na pewno wchodzę z perspektywy tego drugiego świata.


Przyszłość Machine Learning


Dzięki za te wszystkie wypowiedzi. Zbliżamy się do końca. Na koniec pobawmy się trochę w futurologa lub marzyciela i spróbujmy dokonać takiej predykcji co może się wydarzyć za jakiś czas. Wiadomo, że różnie z tym bywa, nie zawsze to jest łatwe, ale wydaje mi się, że jak słuchałem Twoją wypowiedź to rozważać tak o przyszłości lubisz, więc myślę, że to pytanie też będzie takie fajnie trafne: jak myślisz jakie kamienie milowe przekroczymy za 5 czy 10 lat w uczeniu maszynowym i co wtedy będzie osiągalne?




To jest bardzo dobre pytanie. Wspominałem, że wydaje mi się, że najbliższe 5 czy 10 lat może się różnić od tych obecnych. To już wydaje mi się powoli widać, chociażby w tym roku pierwszy raz mieliśmy mniejszą ilość aplikacji niż w zeszłym roku czyli pojawiły się pierwsze objawy saturacji też trzeciego świata, najbardziej dynamicznego. Więc mam wrażenie i po cichu liczę też na to, że możliwe, że zmienią się priorytety tego researchu. Wydaje mi się, że  takie kolejne kroki milowe będą związane z takimi rzeczami, które teraz są mniej eksplorowane.




Nie wiem czy przewiduję, na pewno bardzo chętnie bym widział z tej takiej perspektywy, np. stworzenie nawet nie kolejnych modeli rozwiązujących kolejne problemy, tylko np. modeli generatywnych (już teraz powstają tzw. work models czyli modele, w których przewidujemy zachowanie środowiska albo rzeczywistości).




Przewiduję, że jeśli faktycznie ten świat najbardziej bujnego rozwoju spowolni i przyjdzie świat refleksji to wydaje mi się, że takim jednym z bardziej kluczowych rzeczy będzie stworzenie takich modeli, które będą dosyć dobrze odwzorowywać pewne rzeczywistości. Przez pewne rzeczywistości myślę, że np. stworzenie modelu, który może nawet w jakimś ograniczonym stopniu, ale będzie mógł wnioskować w sposób zrozumiały dla człowieka i np. w oparciu o to generować obrazy albo teksty potencjalnie nowe.




Wydaje mi się, że na początku to pewnie będzie w ograniczonym stopniu, ponieważ system symboli, nazw często jest dla nas bardzo nieczytelny. Ale liczę na to, że w ciągu 5 lat się uda tak to zrobić, żeby stworzyć takie modele rzeczywistości w jakiś taki sposób, który będzie korzystał ze sztucznej inteligencji. To jest taki kamień milowy w ogólnym rozwoju.





Natomiast to na co bardzo liczę to to się aktualnie już toczy, ale wydaje mi się, że jest taki trochę problem z transferem do danych medycznych, też obrazowych. Np. wydaje mi się, że ten przełam tam następuje, jest coraz szybszy, ale nie jest na pewno aż tak widoczny i tak bujny jak w zdjęciowej wizji komputerowej. Więc liczę na to, że te modele dojadą do tego poziomu, szczególnie, że takie modelowanie obrazowe pójdzie znacznie do przodu.




Trzeci taki kamień milowy to wspominaliśmy o tych systemach. Podejrzewam, że rzeczy związane z ryzykiem, niepewnością, dopuszczeniem, że jednak sztuczna inteligencja może się mylić i zapytaniem jej, kiedy się faktycznie myli i stworzenie technologii, która daje na to faktycznie rozsądną odpowiedź będzie kolejnym kamieniem. To są takie moje 3 przewidywania.




Fajnie, akurat nagraliśmy, zapisaliśmy, zobaczymy za 5-10 lat, sprawdzimy, skomentujemy. Brzmi bardzo ciekawie, w szczególności ten temat związany z obrazkami medycyny to temat, który wiem, że Ciebie bardzo mocno interesuje, więc też tam częściowo się przyłożysz, żeby to też się stało w jakimś tam stopniu.




Marcin, dzięki wielkie za rozmowę. Wyszła troszkę dłuższa, ale bardzo ciekawa. Myślę, że wiele ciekawych wątków tu padło. Nie wszystko w sumie zdążyliśmy omówić, ale myślę, że to jest dobra okazja, aby jeszcze raz się spotkać i przedłużyć przy kolejnym nagraniu. Życzę Ci wszystkiego dobrego, z doktoratem i innymi rzeczami, które chcesz zrealizować. Do usłyszenia, do zobaczenia. Cześć.




Dzięki wielkie za zaproszenie i do zobaczenia, cześć.


Dziękuję za wysłuchanie tego odcinka, wspólnie spędzony czas. Mam nadzieję, że również dla Ciebie to było takie pozytywne doświadczenie. Ciekawy jestem, co myślisz właśnie o tym podejściu, rozważaniu o umiejętności nazywania rzeczy, o tych poradach, które wybrzmiały od Marcina. Czy to są takie rzeczy, które chcesz u siebie w jakiś tam sposób zastosować? Podziel się swoimi przemyśleniami. Zawsze chętnie posłucham Twojej opinii. To tyle na dzisiaj, dzięki wielkie, do usłyszenia.


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ć.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *