sztuczna inteligencja

POIT #017: Sztuczna inteligencja

Witam w siedemnastym odcinku podcastu „Porozmawiajmy o IT”. Tematem dzisiejszej rozmowy jest sztuczna inteligencja a zwłaszcza uczenie maszynowe.

Dziś moimi gościem jest Vladimir Alekseichenko programista od ponad 10 lat związany z różnymi technologiami i językami programowania. Od 4 lat zajmuje się tematami machine learning, big data i sztucznej inteligencji. Prowadzi podcast o nazwie “Biznes myśli” traktujący o tych właśnie tematach. Inicjator cyklicznych spotkań pod nazwą “Data Workshop”, na których dzieli się swoją wiedzą z uczenia maszynowego. Prezenter na różnych konferencjach i spotkaniach tematycznych. Prywatnie bardzo skromny człowiek, ojciec i miłośnik podróży.

W tym odcinku o sztucznej inteligencji opowiemy w następujących kontekstach:

  • czym są pojęcia sztucznej inteligencji, machine learning, big data i AI?
  • czy jest trudna i zawiła?
  • czy wyprze programistów z pisania kodu?
  • czy nam zagraża?
  • jak uczy się maszyny?
  • jakie języki programowania są najczęściej wykorzystywane?
  • jakie technologie bazodanowe się wykorzystuje?
  • czy tylko duzi gracze inwestują w AI?
  • jak wygląda obecnie rynek pracy dla specjalistów od machine learning?
  • jak upowszechnienie się chmury wpływa na popularyzację sztucznej inteligencji?
  • czym jest data science?
  • dlaczego wizualizacja danych jest ważna?
  • powiemy też od czego zacząć swoją przygodę ze sztuczną inteligencją.

 

W imieniu Vladimira zapraszam na „DataWorkshop Tour” (http://tour.dataworkshop.eu/), który już się rozpoczął i nadal będzie miał miejsce w kilku miastach Polski. Po tym wydarzeniu 13 października 2018 w Warszawie odbędzie się konferencja „Data Workshop Club Conf” (http://conf.dataworkshop.eu/), na którą również bardzo zapraszam! Celem tych wydarzeń jest pomoc osobom, szczególnie początkującym w temacie uczenia maszynowego lepiej poukładać podstawowe zagadnienia z tej dziedziny.

🔥KONKURS:

13 października 2018 w Warszawie odbędzie się konferencja „Data Workshop Club Conf”, której pomysłodawcą i współorganizatorem jest Vladimir. Vladimir przygotował 3 wejściówki na transmisję live z tej konferencji. Zostaną one rozdane wśród słuchaczy, którzy w najciekawszy sposób opiszą jakie zmiany czekają IT w kontekście sztucznej inteligencji. Swoje wypowiedzi proszę opublikować w komentarzach do tego odcinka podcastu pod adresem https://porozmawiajmyoit.pl/17. Na komentarze czekamy do 23 września 2018. Wtedy to zostanie opublikowana lista zwycięzców. Powodzenia!

🔥💵RABAT:

Vladimir przygotował specjalny rabat na swój kurs o uczeniu maszynowym (http://www.dataworkshop.eu/). Jest to 20% upust na pakiety Gold i Premium, który można aktywować po wpisaniu kodu POROZMAWIAJMYOIT podczas zakupu tego kursu.

Subskrypcja podcastu:

Linki:

Pozostańmy w kontakcie:

 

Muzyka użyta w podcaście: „Endless Inspiration” Alex Stoner  (posłuchaj)

Transkrypcja podcastu

To jest 17. odcinek podcastu Porozmawiajmy o IT, w którym z moim gościem rozmawiamy o sztucznej inteligencji. Z tego odcinka dowiesz się: 

* Czym jest uczenie maszynowe i big data?

* Jak uczy się maszyny?

* Jakich technologii do tego się używa?

* Czy sztuczna inteligencja nam zagraża i czy zawód specjalisty od sztucznej inteligencji jest przyszłościowy?

Jeśli spodoba Ci się ta rozmowa, powiedz o niej koleżankom i kolegom, żeby też wyciągnęli z niej coś wartościowego dla siebie.

Witam Cię serdecznie w Porozmawiajmy o IT. Ja się nazywam Krzysztof Kempiński i w tym podcaście rozmawiam z moimi gośćmi o branży informatycznej, przedstawiam trendy, zjawiska i opinie. Staram się przybliżyć tę branżę tym, których w niej na co dzień nie ma, jak również zaciekawić stałych bywalców. Pozostań z nami.

A teraz zapraszam już na kolejny odcinek.

Krzysztof: Cześć! Mój dzisiejszy gość, to programista od ponad 10 lat związany z różnymi technologiami i językami programowania. Od 4 lat zajmuje się tematami Machine Learning, Big Data i sztucznej inteligencji. Prowadzi podcast o nazwie Biznes Myśli, traktujący o tych właśnie tematach. Inicjator cyklicznych spotkań pod nazwą Data Workshop, na których dzieli się swoją wiedzą z uczenia maszynowego. Prezenter na różnych konferencjach i spotkaniach tematycznych. Prywatnie bardzo skromny człowiek, ojciec i miłośnik podróży. Moim i Waszym gościem, jest Vladimir Alekseichenko. Witaj Vladimir! Bardzo się cieszę, że będziesz gościem podcastu Porozmawiajmy o IT.

Vladimir: Cześć Krzysiek! Bardzo miło mi jest, że właśnie mogę podzielić się swą opinią, doświadczeniem w tym temacie i mam nadzieję, że to będzie wartościowe dla Twoich słuchaczy. 

Krzysztof: Przyjemność po mojej stronie. Przedstawiłem ciebie jako specjalistę od Machine Learning i sztucznej inteligencji, i to właśnie te tematy będziemy dzisiaj poruszać w rozmowie. Ja zawsze zaczynam od takiego wprowadzającego i trochę rozluźniającego pytania, czy słuchasz podcastów i jeśli tak, to jakich najczęściej?

Vladimir: Ja słucham, uwielbiam słuchać podcastów lub audiobooki. Jeżeli chodzi o polskie podcasty, też dość sporo ich słucham. Myślę, że warto chociażby wymienić Mała Wielka Firma, Marek Jankowski, którym w swoim czasie bardzo mi pomógł ze startem z moim podcastem, też takie podcasty znane chociażby z finansami. Też słucham, jeżeli chodzi o podcast, Z pasją o Twoich mocnych stronach (Dominika Juszczyka – wtrącenie Krzysztofa). Bardzo fajny, bardzo go lubię. Jeszcze tak teraz na szybko już nie powiem, ale wydaje mi się, że na swojej liście mam około 20. Kiedyś tam na LinkedIn, nie wiem, czy to można podlinkować tutaj, ktoś mnie zadał to samo pytanie i ja to wszystko wymieniłem, więc może lepiej tam się będzie odwołać, bo ta lista jest długa naprawdę.

Krzysztof: No to faktycznie podlinkujemy na końcu później w notatkach. Ok, Vladimir. Często pod określeniem sztuczna inteligencja rozumiemy kilka odrębnych dziedzin wiedzy, takich jak: uczenie maszynowe, uczenie głębokie, Big Data, AI. Mógłbyś pokrótce wyjaśnić różnice pomiędzy tymi pojęciami.

Valdimir: Spróbujmy. To, jeżeli chodzi o definicję sztucznej inteligencji, albo Artificial Inteligence AI, to można pójść w stronę akademicką i prawdopodobnie tam nie chcemy pójść, bo wtedy jeszcze bardziej się pewnie zgubimy. Ja zwykle tłumaczę to w ten sposób, że sztuczna inteligencja, to jest pojęcie wizjonerskie, które, spróbuję określić, że pojawi się byt, inteligentny byt, który ma tą inteligencję stworzoną w sposób sztuczny. Przy czym warto zauważyć, że czym jest inteligencja, to nadal nie wiemy, mam na myśli teraz tą naturalną albo ludzką inteligencję, bo nie wiemy i nikt tak naprawdę nie jest w stanie to zdefiniować w sposób jednoznaczny. Owen Turing w latach 50. ubiegłego stulecia, stworzył takie coś, co się nazywa Turing Test, to zamiast tego, żeby się skupiać czym jest ta inteligencja, to skupiamy się na tym, czy to coś, co on robi jest inteligentne czy nie. Jeżeli tak, no to stwierdzamy, żeby to stworzyć, to musiało posiadać pełną inteligencję. I z tym Owen Turingiem też jest taki pewny trik, bo już mówi się, że ten test został przerobiony, ale to nie dlatego, że ta sztuczna inteligencja, aż na tyle została rozwinięta, tylko bardziej ta ludzka inteligencja była na tyle sprytna, żeby znaleźć pewne dziury w tej definicji, więc tak trochę podsumowując, jeżeli chodzi o tą sztuczną inteligencję, to jest pojęcie wizjonerskie, które skupia się na tym, żeby powstał byt, który ma inteligencję. Co do reszty tych haseł, które były wymienione: uczenie maszynowe, deep learning, big data. Uczenie maszynowe jest bardziej takim namacalnym obszarem, związanym wprost też z kodowaniem, matematyką, też statystyką. Uczenie maszynowe też jest już dość starym pojęciem, które się pojawiło mniej więcej też gdzieś tak w latach 50. ubiegłego stulecia i to ma różne algorytmy pod spodem. Jako algorytm można rozumieć, że na różne sposoby możemy uczyć maszyny. Jeden z algorytmów są sieci neuronowe. Właśnie sieci neuronowe pojawiły się w latach 50, Te sieci neuronowe też są różnych rodzajów i tam jest takie pojęcie jak ilość warstw, i czym jest więcej warstw, czyli czym bardziej sieć jest skomplikowane, to w pewnym momencie stwierdzamy, że ich jest tak dużo, że sieć jest głęboka albo deep. Deep learning jest stosunkowo młodym hasłem, tak powiedzmy ostatnie 5 lat, to jest bardzo gorące. Jeżeli chodzi o Big Data to jest gdzieś tak temat z boku się pojawił, bo w tym przypadku chodzi o to, że dane są bardzo ważne w tym procesie uczenia się, W jednym ze swoich podcastów tłumaczyłem trzy najważniejsze elementy w uczeniu maszynowym, to jest: algorytm, dane i infrastruktura. Algorytm, to już powiedzieliśmy, to mogą byś na przykład sieci neuronowe albo wiele innych jak drzewo decyzyjne i tak dalej. Dane jako Big Data, chociaż ja bardziej lubię Smart Data, bo Big Data może zakładać, że zbieramy duże ilości danych, mniej zastanawiając się, co tam jest w środku, to równie dobrze możemy odpalić generator liczb losowych i zabrać terabajty, tylko pytanie po co, więc dane są ważne, tylko niekoniecznie duże dane tylko bardziej takie przemyślane dane. No i trzeci element, to jest infrastruktura duże CPU, RAMa, albo GPM. Chyba już odpowiedziałem na to pytanie? 

Krzysztof: Dzięki Vladimir za to wyjaśnienie. Myślę, że teraz słuchacze będą już mieli większe pojęcie i lepsze zrozumienie właśnie tych kwestii. Dla przeciętnego zjadacza chleba sztuczna inteligencja kojarzy się powiedzmy z filmami science fiction. Dla kogoś kto nieco dotknął tego tematu, może bardziej oznaczać już jakieś obliczenia matematyczne, jakieś zawiłe algorytmy. Ja sobie myślę, że jest sporo takiego niezrozumienia, i osoby które nie rozumieją tego tematu mogą mitologizować tą dziedzinę. Czy według Ciebie sztuczna inteligencja jest trudna, jest zawiła?

Vladimir: Jeszcze przed tym jak odpowiem na to pytanie, tutaj spróbujmy jeszcze wprowadzić terminologię i jak zapytałeś mnie o sztuczną inteligencję, to powiedziałem, że to jest pojęcie bardziej wizjonerskie i tak jest, z drugiej strony, teraz w mediach używa się zawsze hasła sztuczna inteligencja, i to wtedy mówi się sztuczna inteligencja, a tak naprawdę dorównuje się do uczenia maszynowego, więc dalej jak będziemy mówić o sztucznej inteligencji, to dla mnie to jest synonim uczenia maszynowego, chociaż to nie zawsze jest prawda, jeżeli wrócimy krok wstecz, ale tak, żeby słuchacz był na tej samej stronie, jak mówimy o sztucznej inteligencji, to mówimy przede wszystkim o uczeniu maszynowym. Teraz, czy jest to zawiłe? Ja pamiętam, kiedy ja zaczynałem uczyć uczenia maszynowego ponad 5 lat temu, to faktycznie zderzyłem się z taką ścianą, bo wszystkie materiały, które mogłem znaleźć, to przede wszystkim były materiały mega akademickie, taka sucha matematyka, która była taka niejednoznaczna, dość często nie było tłumaczone o co chodzi w tych gwiazdkach, które tam były. Dlatego można było stwierdzić, że bardzo ciężko było tam wejść, ale później jak już udało się tam przebrnąć, nie było to proste, to zrozumiałem, że matematyka w tym przypadku jest językiem, który w sposób tłumaczy się jak to działa pod spodem, ale to wcale nie oznacza, że ten język, którym jest tłumaczone jak to działa, musi być tylko matematyczny. I to, co właśnie ja teraz robię, jak uczę ludzi, to pokazuję już bardziej prostszy sposób, gdzie pokazuje się analogię, gdzie się pokazuje prostokąt, bo też mam duże doświadczenie jako programista, i dla mnie na przykład łatwiej jest zrozumieć poprzez czytanie kodu niż czytanie takiej wartości akademickiej, jakiejś publikacji akademickiej. Chociaż też już się to zmienia, ale nadal mnie kod taki jak Python jest łatwiej przeczytać. I teraz już, czy jest to zawiłe? Więc to zależy od sposobu tłumaczenia. Na pewno to nie jest trywialny temat, na pewno wymaga skupienia się i chęci poświęcenia dużej ilości godzin. Z drugiej strony, wydaje mi się, że każda osoba, która lubi programowanie, wcześniej czy później będzie chciała to spróbować, bo to jest ciekawe. Wydaje mi się, że po pewnym czasie robienia takich zwykłych kodów, jest nudno, i mózg potrzebuje jakiegoś takiego większego wyzwania, to wtedy uczenie maszynowe jest jak najbardziej dla takich ludzi. 

Krzysztof: Bardzo fajnie to przedstawiłeś, że uczenie maszynowe to jest powiedzmy taka dziedzina, która może być opisana przez matematykę w skrajnym przypadku, takim akademickim, jak to powiedziałeś, ale dla programisty może bardziej będzie zrozumiałe, kiedy zobaczy fragment kodu będący impregnentacją jakiegoś algorytmu. Tego podcastu słucha wielu programistów, testerów, administratorów. Niekiedy słyszy się takie opinie, jakoby w przyszłości to roboty miały pisać oprogramowanie, wspierając ludzi albo wręcz miały zastąpić ludzi w pisaniu oprogramowania. Jakie jest twoje zdanie na ten temat?

Vladimir: To zależy o jakiej perspektywie czasowej mówimy, bo jeżeli mówimy na przykład co się stanie za 20 lat, a teraz jeżeli słucha nas osoba, która ma 20 lat, albo nawet 30 lat, a nawet 35, to za 20 lat będzie miała jedynie 55 lat, to według mnie jeszcze nie będzie na emeryturze, to ciężko tak naprawdę powiedzieć, co wtedy będzie. W tej chwili zapowiada się, że ten świat za 20 lat będzie wyglądał zupełnie inaczej, przynajmniej z takim dużym naciskiem na zupełnie. Teraz, co się dziej teraz? Czy ta tendencja, która już obecnie jest, jakoś wskazuje na to, że programistę można zastąpić? Wydaje mi się, że nie do końca. Ja w ogóle często na konferencjach występuję z prezentacją o nazwie Programista 2.0, też można znaleźć to na YouTubie, robiłem taki webinar, ponieważ tam tłumaczyłem o zawodach przyszłości, i to jak o tym myślę, to klasyczny programista nadal będzie istniał jako zawód, tylko co raz bardziej te rutynowe elementy będą zastąpione. Ja zaraz wyjaśnię, co ja mam na myśli. Jeżeli przez chwilę się zastanowimy, ile jest aplikacji w Internecie, to ich jest sporo, więc tej liczby nawet nie musimy sobie wymieniać. Natomiast, jeśli spróbujemy zrozumieć, których aplikacji jest najwięcej, to okazuje się, że WordPress, tam bodajże było ponad 35%, albo jakoś w tej ilości. Ja pamiętam kiedyś tam dawno miałem okazję widzieć kod WordPress’a, nawet miałem coś tam zmienić, to było zrobione w PHP, jeszcze w tej starszej, chyba to była 4 wtedy, no ten kod wyglądał bardzo brzydki, nieprzyjemny i cieszę się, że nie muszę tam teraz nic zmieniać. Podobno to się teraz zmieniło i teraz ten kod może jest troszkę lepszy, ale do czego dążę, zaraz opowiem taką historię. Do mnie kiedyś napisała taka osoba, jeden człowiek, tam był długi mail, ale powiedział, że ja nie jestem programistą, jedynie potrafię zainstalować WordPress’a i znaleźć jakąś tam wtyczkę, a to oznacza, że on jest w stanie postawić bloga, znaleźć jakąś skórkę na ten blog, pozmieniać to menu itd., nie mając tej wiedzy programistycznej. Dlaczego to jest możliwe? Bo mamy takie narzędzia jak WordPress. I teraz, pomyślmy poprzez tą analogię do programowania, że za jakiś ten czas, ten czas pewnie jest co raz krótszy, już te rzeczy się pojawiają, że zamiast tego, żeby pisać kawałki kodu, to będziemy mieć już gotowe elementy, które będziemy tylko zbierać do siebie. Teraz pomyślmy o tym tak, co robi programista dość często. Jeżeli potrzebuję coś napisać, jakiś kawałek kodu, który teraz nie znam, bo jest nowa biblioteka, albo jeszcze coś, to idzie sobie na Stock Everflow, wpisuje i w ten sposób kopiuje ten kawałek kodu, fragment kodu, który tam się pojawił, do swojego projektu, trochę go zmieniając. Jeżeli na przykład pojawia się jakiś błąd w jakimś tam produkcie, to kopiuję ten błąd do Google i sprawdzam co inni powiedzieli, i w ten sposób to się rozwiązuje. Teraz, jeżeli mamy takie rzeczy, jak github, który ostatnio został przejęty przez Microsoft, ale tego nie komentuję, następnie Stock Everflow, i inne różne źródła, gdzie mamy bardzo dużo różnych informacji, jak na razie korzystamy tylko z wyszukiwarki, żeby to znaleźć, to tak naprawdę możemy nauczyć model, który będzie rozumiał, który kawałek kodu trzeba tu wciągnąć i będzie to dodawać. Podam może jeszcze takich kilka przykładów. Jest taki bardzo prosty przykład, który robi taką rzecz, że na źródle Kernel Linuxa, tylko nie na wszystkich bodajże było wzięte, teraz już nie pamiętam, ile, koło 16 Megabajtów, może troszkę mniej. Była nauczana sieć, to był język C i przez dwa czy trzy dni ta sieć się uczyła i następnie po prostu zaczęła generować kod. Ten kod wyglądał nawet całkiem fajnie. Te prezentacje, które pokazuje, możemy zobaczyć, że ten synteks wyglądał całkiem fajnie, nawiasy otwierające, zamykające, kwadratowe, okrągłe, nic tam się nie gubiło, ten kod był trochę bzdurny, ale widać było ten potencjał. Teraz dalej, jeżeli chodzi o takie kawałki kodów powtarzających się elementów, to ostatnio dostałem, bodajże kilka albo pół roku temu, ta publikacja jest tak duża, że ciężko to nadążyć, żeby pamiętać, czytałem taką publikację o nazwie Code to Worki idea tej publikacji była następująca, że przed tym wszystkie rozwiązania, które były, one były bardziej oparte na syntaks. Tak bardzo upraszczając, jeżeli mamy jakieś koło kody, to ona zliczy, ile jest tam ifów, ile tam jest forów i na podstawie prawdopodobieństwa stwierdza, że ten kod robi to czy tamto. Teraz to poszło trochę dalej i tak naprawdę tam był taki fajny przykład, że mamy trzy podobne kawałki kodu, które zawierają podobną ilość ifów, podobną ilość forów, ale robią zupełnie coś innego. Tam wtedy chodziło o Javę, tam było bodajże contains, jeszcze tam jakieś dwie. I to jest bardzo ciekawe, to znaczy, że to już potrafi zrozumieć semantykę, innymi słowy, że mamy pełen fragment kodu, który możemy sobie nazwać jakkolwiek, nie ważne jak tam nazwiemy metody, itd. On jest w stanie wychwycić, że ten koło kodu, bo robię tą czy inną logikę, tylko i wyłącznie dlatego, że, w sumie to nie jestem w stanie tu jasno wyjaśnić, bo to nie chodzi o takie logiczne myślenie, w każdym bądź razie on już idzie krok dalej, niż zwykły Synteksys, bardziej chodzi o semantykę, że jest w stanie jak człowiek patrząc na kod, może nie zrozumieć, bo to jest trochę krok do przodu, ale już gdzieś jest pomiędzy. Czyli nie tylko rozumie, że tam wystąpił dwa razy if, ale też rozumie, że akurat te ify robią taką czy inną logikę. No też wydaje mi się, że warto tu wspomnieć o edytorach, które teraz się pojawiają i te edytory działają tak, że wpisujesz dosłownie trochę kodu albo jedno słowo i on ci pomaga już dodać resztę kodu. Już tak podsumowując, czy Programista 2.0 wyeliminuje 1.0, raczej nie, ale to co się stanie, to ta praca rutynowa, która wcześniej była tworzona przez ludzi, będzie teraz tworzona przez maszyny, roboty, jakkolwiek to nazwać i raczej każdy programista w tym czy innym stopniu, gdzieś tam liźnie uczenie maszynowe. Prawdopodobnie na poziomie takim, jak rozumienie, niż eksperckim, ale gdzieś to tak dotknie każdego.

Krzysztof: Ja mam zupełnie podobną opinię. Też wydaje mi się, że to raczej nie będzie rewolucja, tylko swoista ewolucja. Na pewno będzie tak, że to programowanie będzie się oczywiście różniło, będzie na wyższym poziomie abstrakcji niż jest teraz, tak jak powiedziałeś, natomiast też raczej bym był spokojny i nie obawiał się o to, że to sztuczna inteligencja będzie pisała za nas kod. A jeszcze taką anegdotkę dodam na temat tych edytorów, bo gdzieś tam usłyszałem, chyba w którymś podcaście, pojęcia Stuck Overflow Driven Development i to się właśnie odnosiło do edytorów, że ktoś napisał taki plug-in, nie pamiętam szczegółów, nie pamiętam do jakiego edytora, ale właśnie w momencie kiedy zaczęło się coś tam wpisywać, jakiś kod, to Stuck Overflow był przeszukiwany i wybierane najlepsze rozwiązanie i automatycznie przeklejane, więc tak, to jakby trochę taka anegdota, ale myślę, że pokazuje też pewien trend. Ok, Vladimir. Sztuczna inteligencja otacza nas zewsząd, jest w smartfonach, samochodach, na Facebook’u, serwerach różnych portali, aplikacji Internetowych, w centrach obsługi klientów, praktycznie zewsząd. I to się dzieje już na naszych oczach. Niektórzy biją na alarm, niektórzy myślą o regulacjach prawnych, a co ty myślisz, czy sztuczna inteligencja nam zagraża w jakiś sposób?

Vladimir: Powiem przede wszystkim, że to jest dość przerażające i to było jedno z dlaczego uruchomiłem podcast Biznes Myśli, gdzie próbuję o tym mówić, też edukować ludzi, opowiadać, co o tym myślę. Czy jest to zagrażające? To jest pytanie, tak jak do wielu innych rzeczy. Na pewno czym bardziej potężne jest narzędzie, ML czy AI, to jest narzędzie, to tym większe możliwości, ale też pewne ryzyko, zagrożenie z tym mamy. I teraz sztuką jest skorzystać z tego narzędzia w taki sposób, żeby przynieść same korzyści, ale to zagrożenie w jakiś sposób zminimalizować. Taka prosta analogia, jak wcześniej ludzie musieli się przemieszczać z punktu A do punktu B i mieli tylko konie, też zdarzały się pewne wypadki, ktoś tam pod konia czasem wpadł, ale to były raczej rzadsze przypadki, teraz, jeżeli mamy samochód, który jest w stanie się rozpędzić do 100, czasem 200 km itd., to już zdecydowanie jest bardziej większe zagrożenie i po to właśnie mamy te przepisy, żeby to minimalizować i nadal niestety to nie działa, albo działa nie tak skutecznie jak chcielibyśmy. A teraz pomyśl drogi słuchaczu, jeśli chodzi o sztuczną inteligencję, że to ma znacznie jeszcze większe możliwości i jeżeli zostanie to użyte w sposób inny niż z korzyścią dla ludzkości, to też niestety zadziała i może przynieść bardzo duże kłopoty i problemy. Teraz dużo się mówi na temat etyki, powstają też instytuty, które próbują badać takie tematy. Też warto powiedzieć, że temat sztucznej inteligencji już nie jest na poziomie akademickim, gdzieś tam w zamkniętych laboratoriach, tylko na poziomie państw. W zeszłym roku już kilka państw wydało strategię sztucznej inteligencji dla tego państwa, np. Stany Zjednoczone, Chiny, Chiny to w ogóle mają bardzo ambitne plany, kolejne państwa jak Wielka Brytania, Francja, Finlandia też wydała swoje plany, Estonia pracuje jeszcze i kilka innych państw pracują. W Polsce swoją drogą też są plany, żeby też przygotować taką strategię sztucznej inteligencji i gdzieś tam między innymi byłem zapraszany na takie dyskusje w ministerstwie. To jest ciekawe, że to się dzieje, i dlaczego o tym wspomniałem? W niektórych tych strategiach, które są przygotowane, mówi się na temat etyki, a w niektórych państwach w ogóle o tym się nie mówi, np. strategie od Wielkiej Brytanii, z tego co pamiętam, nie ma ani słowa na temat etyki, to dla mnie jest trochę przerażające. Z drugiej strony w Chinach, które dla mnie są też bardzo przerażającym krajem, w szczególności, jeśli chodzi o te postępy, które mają, to jest naprawdę z jednej strony inspirujące jak to szybko może się rozwijać, ale z drugiej strony nie do końca wiadomo, gdzie to dąży, natomiast oni wspomnieli o etyce, to akurat mnie cieszy. Tak trochę podsumowując, to już zależy od nas, od ludzi, dokąd użyjemy to, czy wciśniemy czerwony guzik i uniesiemy tą ziemię i po prostu nasza cywilizacja zniknie czy nie, to się okaże. Ja chciałbym, żeby sztuczna inteligencja była narzędziem, które pomoże nam wyeliminować takie rutynowe zadania, które psują tą kreatywność, twórczość ludzi, i teraz spróbuję wyjaśnić poprzez przykład: wiele osób pracując w korporacjach i wykonując takie rutynowe zadanie, do domu wracają jak zombie, w ogóle nie czują sensu życia itd. Dla mnie byłoby bardzo fajnie, żeby takie rzeczy wykonywały roboty, a ten człowiek miał coś bardziej twórczego, bardziej złożonego do zrealizowania. Z drugiej strony ta idea też nie jest taka prosta, bo tam się pojawia kilka wątków „a co jeśli” itd. Mam nadzieję, że odpowiedziałem w miarę precyzyjnie na to pytanie.

Krzysztof: Jak najbardziej. Czyli sztuczna inteligencja jako narzędzie i tak samo jak nóż, który może służyć albo do zabicia, albo w rękach chirurga do ratowania życia. Tak samo sztuczna inteligencja jest tylko narzędziem. Bardzo fajnie to przedstawiłeś. Tak jak mówiliśmy na początku, dziedziną, w której się specjalizujesz jest Machine Learning. Powiedz proszę jak w ogóle można nauczyć maszynę? 

Vladimir: W mojej prezentacji mam taki bardzo fajny slajd, jak chcesz, to możemy go dodać, tam jest taki duży monitor i później stoi kilka małych, które patrzą na ten duży i zwykle tak zaczynam tłumaczyć, jak to działa. Ale tak bardziej na poważnie, też warto powiedzieć, że są dwa rodzaje, co najmniej dwa, tak naprawdę jest ich więcej, tzw. uczenie nadzorowane i nienadzorowane. Zwykle mówi się o uczeniu maszynowym, to ma na myśli uczenie nadzorowane i zaraz wyjaśnię, o co tutaj chodzi. Załóżmy, że mamy pewne dane, pewną rzeczywistość, mamy jakiś proces, niech tym procesem będą kryptowaluty, i ta wartość Bitcoina cały czas się zmienia w czasie. Załóżmy, że te dane zebraliśmy kilka lat wstecz, też zebraliśmy różne inne parametry, co się dzieło np. z innymi kryptowalutami, ale też nie tylko kryptowalutami, jakie komentarze się pojawiały, jakieś tam ceny na złoto, srebro itd. Zebraliśmy wszystkie te atrybuty, które zwykle nazywamy cechy i mamy wartość na konkretny moment, mamy np. wartość Bitcoina na 1 stycznia, na 2 stycznia, 3 stycznia, możemy to wyobrazić jako pierwszy w tym wierszu mamy zbiór cech, albo atrybutów dotyczących tego dnia i wartość tego Bitcoina. Następnie tych wierszy mamy powiedzmy 1000, 10000, może nawet milion. Zadaniem modelu jest zrozumieć, jak poszczególne cechy wpływają na wynik końcowy. W terminologii uczenia maszynowego te poszczególne cechy to są fitchers, a wynik końcowy albo ta jedna kolumna, to jest target albo zmienna docelowa. Mając dane historyczne, przepuszczamy przez model te dane, a w modelu mamy różne pokrętła, które sobie kręcimy i dobieramy takie parametry, żeby ten model jak najlepiej zgadywał tą wartość, która była w rzeczywistości. No i teraz wyobraźmy sobie, że mamy taki model, model na wejściu przyjmuje dane historyczne, te wszystkie atrybuty, przyjmuje jaka wartość miała być i próbuje też zgadywać. Ich zadaniem jest dobierać wewnętrzne parametry w taki sposób, żeby zgadywać jak najlepiej. To jest trochę podobnie jak w życiu mamy, jak totalnie nic nie wiemy, to nam jest bardzo trudno zgadnąć jakiś tam temat, np. jak ktoś nie kupował iPhone’a to nie wie, ile to kosztuje, jak wie, że iPhone’y np. 4 kosztowała tyle i tyle, to posiada już jakiś tam kontekst i jest w stanie zgadnąć ile będzie kosztować najnowsza wersja iPhone’a, bo wie ile kosztował któryś tam. Podobnie jest z modelem, że czym więcej on rozumie tą rzeczywistość, czym więcej ma tych cech, tym lepiej mu jest odgadywać. Z drugiej strony też, co jest bardzo ciekawe, że to uczenie się tak naprawdę polega na optymalizacji, próbujemy zmieniać pewne parametry, żeby ten model zgadywał jak najlepiej. I teraz, co jest ważne, co jest bardzo istotne, że ten model tak naprawdę nie rozumie, dlaczego tak jest, on nie próbuje porozumiewać się, zadawać pytań, dlaczego tak się dzieje, on wykrywa bardziej korelacje. Co prawda te korelacje nie są liniowe, to jest ważne, bo jeżeliby to były korelacje liniowe, to wtedy człowiek mógłby to rozwiązać już używając zwykłego Excela. W tym przypadku mamy dużo różnych atrybutów i są pewne zależności mniej oczywiste, i model te zależności wychwytuje. A le z tymi korelacjami trzeba uważać, bo tak naprawdę model może wychwycić pewne rzeczy, ale to jakby nie jest przyczyną, to jest tzw. corelatione without causation, mogę też podać link, jest bardzo dużo śmiesznych wykresów, które wykazują różnice np. jak ilość morderstw bardzo mocno skorelowana z ilością Internet Explorera. Więc to jakby nie jest przyczyną, ale bardzo mocno koreluje i takie rzeczy uczenie maszynowe wychwytuje idealnie. 

Krzysztof: Bardzo fajnie przedstawiłeś na rzeczywistych przykładach. Wspomniałeś o dwóch typach uczenia maszynowego, czy mamy jeszcze jakieś inne? Mógłbyś je pokrótce opisać i powiedzieć do czego służą?

Valdimir: Tak, więc wspomniałem o nadzorowanym i już go wyjaśniłem, że mamy cechy i mamy też odpowiedź, to jest bardzo ważne, czyli przy takich i takich warunkach odpowiedź jest taka, przy takich i takich warunkach odpowiedź jest inna, i to jest nadzorowane. Przy czym z tą odpowiedzią jest taki też problem czy wyzwanie, załóżmy, że jeżeli rozpoznajemy zdjęcia radiologiczne, mamy rentgen i tam sprawdzam czy tam jest rak, jakaś choroba czy nie, no i teraz problem jest taki, że po pierwsze tych zdjęć zwykle nie jest tak dużo, a po drugie, że te zdjęcia nie są tak zwane olejbelowane tzn. nie ma odpowiedzi, ktoś musi usiąść i to rozpisać, to jest takie trochę wyzwanie. Z drugiej strony po prostu tak trzeba zrobić, żeby to nauczyć. I to są plusy i minusy, jeżeli chodzi o uczenie nadzorowane. Teraz nienadzorowane uczenie maszynowe oznacza, że nie mamy odpowiedzi. Mamy kilka danych jakie są i model sam w jakiś tam sposób próbuje zrobić pewne wnioski, podam tutaj kilka przykładów, żeby było zrozumiałe. Załóżmy, że jest duża firma, jest około dużo klientów, ci klienci są bardzo różni, więc fajnie by było ich podzielić na pewne grupki, takie grupki dotychczas robione są manualnie, np. robimy pierwszą grupkę patrząc na wiek, patrzymy jakie są dochody i takich grup pojawia się 5, 10, 20 itd. Natomiast taka manualna praca jest dość żmudna, to musi się dynamicznie zmieniać i trzymać to manualnie jest bardzo skomplikowane. I tu uczenie maszynowe też może pomóc, bo to co ona robi, ona próbuje znaleźć podobne do siebie obiekty, w ten czy inny sposób, są różne funkcje, które umożliwiają to zdefiniować i w ten sposób na wyjściu dostajemy ilość grupek, też definiujemy. Drugi przykład uczenia nienadzorowanego, to jest, jak idziemy kupować w sklepie coś, to mając jeden produkt, to jesteśmy w stanie z dużym prawdopodobieństwem, skoro kupujesz produkt A, to kupisz też produkt B, bo mamy reguły asocjacyjne, bo po prostu zbieraliśmy to historycznie, zebraliśmy wszystkie obiekty, które są kupowane razem, jesteśmy w stanie stwierdzić te powiązania. Najbardziej popularny przykład, to jest pieluchy i piwo, jeżeli kupisz jeden, to też kupisz drugie. Z drugiej strony jest też takie może mniej oczywiste, ale bardzo takie mocne w polskich realiach sprawdzone, to marchewka i pietruszka, tzn., jeżeli kupujesz pietruszkę, to prawie, że na 100% kupisz też marchewkę, tutaj drodzy słuchacze proszę sprawdzić, czy zapytać żony albo męża, w zależności kto kupuje, czy to jest prawda, ale zgodnie z danymi to jest prawie że 100%, kupując pietruszkę kupisz też marchewkę.

Krzysztof: No tak, bo to do rosołu chyba. Porozmawiajmy chwilę o takich technologicznych aspektach uczenia maszynowego. Bo przecież na koniec dnia jest to ugruntowane w jakiejś nauce, jest to technologia ugruntowana w nauce. Jeśli chodzi o języki programowania, najczęściej mówi się o Pythonie lub nieco wyspecjalizowanym R. Powiedz proszę, skąd fenomen Pythona w tej dziedzinie?

Vladimir: Python jest bardzo prostym językiem. Jako przykład, jeżeli chcesz napisać Hello World, to piszesz print, nawias otwierający, zamykający Hello World, i tyle. Jeżeli chcesz napisać Hello World w Javie czy w C Sharpie, to jednak musisz te klasy stworzyć, mainy, nie mainy itd. To zajmie ci 10 czy 15 linii kodu i to jest dość uciążliwe. Ta prostota po prostu zwyciężyła. Myślę, że tutaj dość mocnym takim napędem na to wszystko był też mocny nacisk biznesowy, bo biznesom bardzo zależy na tym, żeby dostarczyć pewne wartości do swoich klientów. Oni tak naprawdę w ogóle się nie zastanawiają, czy ty chcesz użyć Jave czy C Sharpa, czy Pythona, czy jeszcze cokolwiek innego. Dla nich jest dobre jedno bardzo proste pytanie, ile czasu potrzebujesz, żeby skończyć funkcjonalność A czy B. Jeżeli powiesz, że mam Pythona, to potrzebuję jeden dzień, a jeżeli mam Jave, to potrzebuję trzy dni, to bardzo prosta decyzja, dlaczego wybieramy Python. I Python, szczerze mówiąc, bardzo fajnie się sprawdza. Zwykle na Python można narzekać, że jest językiem wolnym, bo jest dynamicznym typowanym, to oznacza, że nie podajemy wprost typ i ten typ jest inferowany w trakcie i dlatego jest wolny. Na przykład taka zwykła pętla, kiedy masz fora i w tej pętli piszesz I=1, to ona za każdy raz, kiedy przechodzi tą pętlę musi stwierdzić: „aha okay”, więc coś tam robi. Nie robi to raz jak w języku statycznym typowanym, tylko robi to w każdej tracy. Mamy miliony tracy, a zwykle w uczeniu maszynowym mamy takich trac bardzo dużo, to na tym tracimy. I to zwykle się krytykuje. Natomiast takie rzeczy też są rozwiązane, bo mamy pełną bibliotekę, np. bibliotekę Noompa, która pod spodem jest napisana w C i bardzo mocno zoptymalizowana, jeżeli chodzi o wydajność i używając Python już w tym przypadku bardziej jako interfejs, też masz dostęp do bardzo wydajnego środowiska. Jeżeli chodzi o R, to jest też bardzo ciekawa historia i o tym, wydaje się, że mało kto wie, w ogóle R pojawił się jako następca języka S, bo R jest po S, S był językiem komercyjnym i R stał się opensourcem bardzo podobnym do S, ale został stworzony przez statystyków i to jest dobrze i źle jednocześnie dla osób, które są bardziej przyzwyczajone do programowania takimi klasycznymi językami, to z R czują się dość dziwacznie. Z drugiej strony R ma np. takie zalety, że bardzo dużo różnych środowisk akademickich pracuje nad różnymi rozwiązaniami, które działają gorzej lub lepiej, niektóre z nich działają całkiem fajnie i po prostu nie robiąc nic, bierzesz to rozwiązanie i używasz, ale to też jest jednocześnie problem, kiedy mamy rozproszoną sieć ludzi, którzy piszą swój algorytm w taki sposób, w który chcą, to też mamy pewne luki z dokumentacją, z testowaniem itd. Więc pod tym względem R według mnie jest mniej uporządkowany. Teraz czy jest szansa, że jakiś inny język może tutaj teraz jeszcze wkroczyć i zacząć konkurować, według mnie dość marna, bo jeżeli chodzi o partycypowanie, to Python raczej tą niszę już zajął, z drugiej strony, jeżeli chodzi o produkty, to dość częste kawałki, które sprawiają problemy, że są mało wydajne, są przepisywane w językach takich jak C++, albo chociażby Java, ale to jedynie takie kawałki, które faktycznie sprawiają problemy i tam musi być bardzo i to bardzo szybka, i co robi się wtedy, to nie robi się Machine Learning wprost, tylko wycina się kawałki logiki, która już jest znana i przepisuje się na inny język, który będzie bardziej optymalny w tym momencie. Czy jest szansa, że prototypy będą robione w innym języku kodu?  Wiem, że się robi, ale to według mnie taka trochę zabawka. Na przykład jest taki język jak Julia, który próbuje jakoś tam pokazać, że jest wydajny, ale też to chodzi o takie inne rzeczy jak ekosystem. Python w tej chwili ma zbudowany dość mocno ekosystem, który jest rozwijany też przez też takich dużych graczy, jak chociażby Google, Facebook, Uber i wiele innych, i teraz tworząc nawet język lepszy w jakimś tam stopniu, pod jakimś tam kryterium, to i tak brakuje tego ekosystemu, by używać to sprawnie. Dlatego wydaje mi się, że to już ustabilizowało się, jeżeli chodzi o języki. Jeżeli ktoś chce się zająć uczeniem maszynowym, to polecam poznać Pythona.

Krzysztof: Ale język programowania to nie wszystko. Uczenie maszynowe, które jest jednym z możliwych podejść do osiągnięcia sztucznej inteligencji, wymaga przetwarzania nie rzadko, tak jak mówiliśmy, dużej ilości danych. Mamy zatem bazę danych i ogólnie rozumiane technologie powiedzmy bazodanowe. Czego się obecnie najczęściej używa, jeżeli chodzi o bazy danych w uczeniu maszynowym?

Vladimir: Bazy danych. Szczerze mówiąc, to jest ciekawe pytanie, można trochę powiedzieć podchwytliwe, bo pewnie oczekujesz jakąś nazwę technologiczną, nie wiem, MySQL, albo Oroc, albo jeszcze cokolwiek, a według mnie to wygląda trochę inaczej. To, co ja zwykle robię, to ja potrzebuję dane, najlepiej w postaci tabularnej, w takim najprostszym przypadku, to jakiś plik csv, ale powiedzmy, jak jest dużo danych, to csvka nie jest najbardziej optymalna, bo taki format przechowywania danych w postaci surowej przez przecinek jakiś tam. Lepiej takie większe bloki danych przechowywać w tzw. formacie H5. To jest format wymyślony jeszcze przez NASA, dobre myślę, że prawie chyba 20 lat temu, może troszkę mniej 15, i ten format został wymyślony z taką myślą, że jeżeli piszą jakiś softwear do tych wszystkich swoich statków kosmicznych itd., to za jakieś 15-20 lat chcą wrócić do tego kodu, albo danych, które mają i też mieć możliwość odczytać w sposób jednoznaczny, więc pod tym względem ufam, że to jest dość stabilne i też umożliwia to przechowywanie bardzo dużo danych, właśnie fajnie byłoby zdefiniować, co to jest duże, ale spokojnie gigabajty danych tam się zmieszczą, być może nawet terabajty. I to fizycznie wygląda jako plik, który wczytujemy sobie do komputera i pracujemy. Swoją drogą też warto powiedzieć czym jest Big Data teraz, bo w Big Data nie chodzi tylko o ilość danych, bo tam jest kilka też innych wymiarów, ale pamiętam kiedyś wcześniej jak ktoś mówił, że np. ma 100 GB, albo 1 TB danych i to już jest Big Data i potrzebuje tam iluś serwerów, żeby to obliczyć , to w tej chwili, jeżeli popatrzymy jakie mamy możliwości w chmurach, to można spokojnie sobie zamówić maszynę, która ma 1 TB RAM-a albo nawet 2 TB RAM-a. Teraz mając taki plik, który możesz sobie wczytać po prostu w całości, nawet nie musisz paczkami wczytywać, w całości wczytujesz do komputera, to nagle się okazuje, że nie masz Big Data, albo masz tak duże komputery, że nie masz potrzeby rozbijać tego na większą ilość serwerów, dlatego jak najbardziej możesz trzymać to w jednym pliku. Myślę, że tam też pytanie może trochę zahaczyć o to czy w ogóle nie używamy bazy? Bazy tam są, ale to nie chodzi o uczenie maszynowe, raczej te bazy wykonują taką normalną, klasyczną rolę w architekturze jak jest dotychczas, że zbieramy informacje, trzymamy je tam. Ja myślę, że tutaj, jeżeli chodzi o rozumienie całej tej architektury wspomnę takie coś jak lander architektura, możemy to też podlinkować i to wygląda całkiem fajnie. Też taka idea jak event sourcing. Chodzi o to, że dość często, jeżeli chodzi o dane, zbieramy tylko stan faktyczny i jakby trzymamy tak jak jest, gubimy całą historię i to jest bardzo słabe podejście. W uczeniu maszynowym znacznie lepiej jest, jeżeli zbieramy dane w takie fakty, coś się wydarzyło np. użytkownik zmienił swoje imię, użytkownik gdzieś tam kliknął, coś tam napisał, zapisał itd. i te wszystkie fakty najlepiej sobie odkładać i zwykle takie fakty nie wrzucamy do bazy danych wprost, taki relacyjny, chociaż też możemy, bo kto nam zabroni, ale dość często to po prostu się składa w takich plikach, te pliki mogą w zależności od naszych celów, to też możemy tam pomyśleć, ale te pliki mogą być odpowiednio skompresowane i wrzucamy na S3, albo na Google Store albo jeszcze gdzieś i wtedy tak naprawdę nie potrzebujemy takich baz relacyjnych, w bardzo prosty sposób można je wczytać, tutaj możemy używać Isparkow albo jakichś innych rzeczy, ale tak naprawdę, jeżeli danych mamy mało, i to jest w ogóle ciekawostka, której się nauczyłem, bo też konsultuję firmy z uczeniem maszynowym i z mojego doświadczenia najwięcej firm posiada danych mniej niż terabajt i moja hipoteza jest taka, że jeżeli masz mniej niż terabajt danych, to raczej nie potrzebujesz Sparka, bo to wprowadza kolejną abstrakcję i jak używasz jakiegoś narzędzia, to znaczy, że musisz go rozumieć w 100%, bo tam są pewne ograniczenia architektoniczne, w szczególności, jeśli użyłeś Sparka, to tam jest przejście pomiędzy Pythonem a Java itd. Więc chciałem skończyć tą myśl w ten sposób, że jeżeli masz mniej niż terabajt danych prawdopodobnie taki goły Python, takie surowe pliki wystarczą. To jest takie trochę podejście rób jak najprościej jedną rzecz, ale rób to dobrze, zamiast tego, żeby komplikować te elementy w architekturze.

Krzysztof: Dzięki, że przeszedłeś przez te różne aspekty. Myślę sobie, że event sourcing, jeśli właśnie chcemy zbierać takie dane co się, kiedy wydarzyło idealnie się nadaje i pewnie też bazy takie SQL, jakaś Casandra, myślę, że tego typu rzeczy też moglibyśmy z powodzeniem zastosować. Programista w kontekście sztucznej inteligencji występuje najczęściej w roli jej budowniczego. Czy szeroko rozumiana sztuczna inteligencja może być wsparciem i pomocą dla programistów czy testerów w ich codziennej pracy? Już po części trochę powiedzieliśmy o tych edytorach, ale może masz jeszcze jakieś inne przykłady? 

Vladimir: Myślę, że tak. Wydaje mi się, że teraz to się dzieje na poziomie prototypu, ale jak najbardziej, to może sprowadzić się do tego, że (spróbujmy podlinkowac tez tę prezentację) tam jest bardzo fajnie to pokazane, że człowiek pisze koło kodu i maszyna próbuje zgadnąć jaka jest reszta tego kodu, i w tej chwili nie chodzi o to, że on w tej chwili online uczy się na Stuck Overflow, bo swoją drogą takie narzędzia mają taki problem, jeżeli chodzi o edytory, że musisz swój kod wysłać gdzieś w chmurę, no i w większości przypadków nie możesz tego zrobić, bo prawdopodobnie nikt się na to nie zgodzi, chyba, że robisz jakiś open source, który i tak już jest dostępny publicznie. Wracając do tego przykładu, jeżeli chodzi o uzupełnienie kodu, więc o tyle życie może być łatwiejsze, kiedy piszesz dosłownie jedną linię, a zamiast tego dostajesz 10-15 już gotowych linii kodu, który wykonuje to, co chciałeś zrobić. To trochę przypomina, to co jest na jakichś tam 43:46 generują kody 43:49 bardziej generuje na podstawie zgadywania nazwy funkcji, to w tym przypadku jest krok dalej, że po prostu zgadujesz, jeżeli chcesz odczytać plik, to, jeżeli mówimy o Javie, to tam musisz te bufory podłożyć i on z siebie po prostu to wszystko tworzy i takim bum generuje cały kawałek, te 5-10 linii kodu. Myślę, że podlinkujemy, to można sobie pooglądać. Kolejna rzecz, która wydaje mi się zmienia, to gdzieś tam już wspomniałem, że te najprostsze elementy, które dotychczas były robione przez człowieka, będą robione przez komputer albo przez uczenie maszynowe. I znowu jako analogia WordPress, jeszcze powiedzmy 10 lat temu, było tak dużo agencji interaktywnych, które tworzyły strony i za takie, mówiąc wprost brzydkie kawałki tych stron internetowych potrzebowali za to jakieś tam duże pieniądze, to teraz sobie wyklikając w tym WordPressie dostajesz bardzo, tam możesz dyskutować, jeżeli chodzi o jakość HTML, ale całkiem fajne rozwiązanie, bardzo elastyczne, proste i nie musisz za to płacić tak naprawdę to jest w stanie zrobić prawie że każdy. I podobnie będzie z programowaniem, jeżeli są elementy, które są zbyt proste, to ja bym polecał teraz jak najbardziej się przestać rozwijać w tym kierunku i zacząć robić coś bardziej kreatywnie. Myślę, że wcześniej to było bardzo fajnie w wielu książkach podkreślane, może trochę zrobię krok wstecz, było takie odkrycie jeszcze jak zacząłem czytać książkę z lat 70. na różne koncepcje związane z programowaniem, że już wtedy ludzie odkrywali ciekawe rzeczy i wtedy sobie uświadomiłem, że rozumienie fundamentu jest znacznie bardziej ważniejsze niż rozumienie tych bieżących freamworków, bo to szybko się starzeje. I to co mógłbym polecić programistom, testerom, skupić się na rozumieniu fundamentu i rozumienie takich bardziej twórczych elementów, które nie są wprost zrozumiałe, takie oczywiste, np. jak powiązać programowanie z wartością biznesową, albo jak zrobić tak, żeby ta aplikacja była bardziej user experience, czyli bardziej użyteczna dla użytkownika, i dzięki takim rzeczom można dalej kontynuować swoją pracę. A te rzeczy takie powtarzalne, wydaje mi się, że w krótkim czasie, uczenie maszynowe będzie wykonywać za nas. 

Krzysztof: Dzięki za tą odpowiedź. Z mojego punktu widzenia uczenie maszynowe wydaje się być odpowiednie dla dużych graczy na rynku, dysponujących taką powiedzmy dużą ilością danych, przy czym definicja tej dużej ilości danych, to mam wrażenie, że przesuwa się co raz bardziej. Czy z punktu widzenia startup’u budując np. produkt internetowy, uczenie maszynowe to jest któryś z kolejnych etapów jego rozwoju czy też może warto pomyśleć o tym od samego początku, by, tak jak powiedziałeś, odpowiednio zbierać np. dane, które później wykorzystamy? 

Vladimir: To jest bardzo ciekawe pytanie też. Zależy jaki cel ma taki startup. Jeżeli celem startup’u, który dość często teraz jest, jest pozyskać pieniądze i dotychczas wystarczało dodać gdzieś tam w opisie deep, deep learning, albo w nazwie deep, to od razu ta chęć inwestorów zainwestować pieniądze nagle wzrastała, chociaż pod spodem tak naprawdę nie było tego uczenia maszynowego, albo było coś bardzo prostego, tylko chodziło o to, żeby zwiększyć atrakcyjność tego startup’u w oczach inwestora. To jest tak jakby jeden aspekt, który gdzieś tam też przy okazji pojawił się w mych oczach i się nad tym zastanawiałem. Mówiąc o tym tak bardziej technologicznie, to faktycznie brak danych może być trudnością, ale startup po to jest startup’em, żeby jakoś sobie radzić. Bo jeżeli człowiek, który zakłada startup nie jest wystarczająco przedsiębiorczy, to prawdopodobnie nie musi zakładać startup, bo takie problemy będą ciągle się pojawia i brak danych to jest jeden z problemów, które on będzie miał. Jak taki problem można rozwiązać? To zależy, są mniej ciekawsze rozwiązania, np. dość często robi się tak, że pisze się pełną funkcjonalność, udostępnia się za darmo jak najszybciej i robi się to po to, żeby zbierać dane. I teraz uwaga, jeżeli widzisz jakieś aplikacje za darmo, to nie myśl o tym, że to był dobry człowiek, który chciał napisać dla ciebie aplikację za darmo, prawdopodobnie, jeżeli nie płacisz za aplikację, to wtedy ty jesteś właśnie tym klientem i zbierają dane jak wykorzystujesz tą aplikację. Jest wiele startup’ów, które w ten sposób funkcjonuje. Mało tego, często jak jakieś startup’y uzbierają jakiś danych trochę za dużo, niż powinny, bo jak często zwracamy uwagę, ja akurat zwracam ostatnio dość dużo, ale jak często zwracamy uwagę statystycznie do jakich danych ma dostęp ta aplikacja, którą zainstalowaliśmy, to dość często ma do wszystkiego, albo prawie wszystkiego: SMS’y, kontakty telefoniczne, to wszystko wysyłane jest do sieci i później sprzedawane. To już teraz nie wchodzę w aspekty RODO. Pod tym względem fajnie, że RODO weszło w UE, przynajmniej trochę próbuje chronić klienta. Też są różne inne sposoby jak można uzyskać dane, np. ostatnio pomału rodzi się trend, że powstają takie markety, gdzie takie dane można kupować, co prawda zwykle jest mało chętnych, żeby te dane sprzedawać, ale jednak są, np. jeżeli chodzi o dane finansowe np. o rynkach, ile kosztowały te czy inne produkty, takie dane zdobyć jest znacznie łatwiej i one są już skomercjalizowane, można je kupić, natomiast inne dane już niekoniecznie można tak łatwo kupić, ale też to często wynika z tego, że tych danych może po prostu nie być. Jeżeli na przykład popatrzymy na dane związane z takimi większymi przemysłami, np. jakaś energetyka albo jakieś rolnictwo, to można robić wiele ciekawych rzeczy, ale oni tak naprawdę nie posiadają danych albo mają ich tak mało, że nawet jakby ktoś chciał kupić, to nie ma od kogo.

Krzysztof: Widzimy, obserwujemy, że mnóstwo firm począwszy od takich potentatów jak Google, Facebook, Apple, po sklepy internetowe, nawet rządy, tak jak powiedziałeś, inwestuje w uczenie maszynowe i takie szeroko rozumiane Data Science. Oznacza to pewnie powstawanie nowych stanowisk pracy i myślę sobie, że ten proces będzie postępował. Jak obecnie wygląda rynek pracy dla specjalistów z tej branży?

Vladimir: Jeżeli chodzi o specjalistów ML albo Data Sciencest, to w Stanach Zjednoczonych to naprawdę jest boom i oni z jednej strony kształcą co raz więcej ludzi, mają dużo różnych BootCamp’ów, też różne prywatne inicjatywy, które uczą ludzi jak zacząć uczenie maszynowe, ale nadal brakuje im specjalistów, to tak w tysiącach. Jeżeli chodzi o Polskę, to tutaj dopiero wszystko się zaczyna. Ja na przykład obserwuję co jakiś czas na pracuj.pl albo na innych tablicach i widzę, że jeszcze kilka lat temu, jak wpisywałem Machine Learning albo Data Science, to jedne czy dwie były pozycje. Teraz już jest ich więcej, na Machine Learning bodajże jest ponda 100, na Data Science jest około 500, po czym ja tam zbieram te dane i tam widać, że ten wykres pomału zaczyna rosnąć nawet już w sposób wykładniczy, nie liniowy, więc to oznacza, że pomału biznes w Polsce też się budzi. Taką mam swoją własną hipotezę, że teraz jest ten moment, bo człowiek potrzebuje czasu, żeby się nauczyć, Teraz to jest fajny moment, żeby zacząć się uczyć co to jest i przebrnąć ten okres juniora do chociażby middla, i za kilka lat, jak już rynek ten rozkwitnie, to nie jesteś już juniorem tylko jesteś osobą gdzieś tam po środku albo może nawet seniorem w tych tematach, to nagle się okaże, że takich ludzi jest kilku na całym rynku i możliwości, które będą ogromne. Dlatego bardzo polecam, w szczególności, ale to nie dla wszystkich wiadomo, ale bardzo polecam dla osób, które faktycznie mogą się tym zainteresować, to trzeba spróbować. To jak najlepiej przygotować kilka modeli, zobaczyć co się podoba. Jeżeli się podoba, to nawet się nad tym nie zastanawiać, jak najbardziej znaleźć czas i zacząć go inwestować w naukę wykonując coś bardzo praktycznego, np. jakiś projekt dla siebie hobbystycznie, może jakiś konkurs, może jeszcze gdzieś, bo wtedy znacznie szybciej się uczysz i wtedy pewnie za kilka lat nagle się okaże, że taka osoba będzie bardzo potrzebna. Tutaj jeszcze dodam, że w szczególności, jeżeli w tej chwili ta osoba posiada doświadczenie związane z programowaniem na takich prawdziwych projektach, bo to jest dość unikalna kombinacja umiejętności, kiedy powiedzmy jest jedna osoba po uczelni, ma doktora na przykład, i ma dużą wiedzą na temat, takiej przynajmniej teoretycznej, o ML, ale nie jest w stanie tego zaimplementować, to taka osoba przegrywa w porównaniu z osobą, która potrafi programować i też ogarnia wystarczająco jak działają modele i jak to w ogóle skonfigurować. Dlatego wydaje mi się, że teraz jest taki najlepszy okres, jeżeli chodzi o zawody przyszłości, żeby tam się pojawić.

Krzysztof: To bardzo fajnie. Mi też wydaje się, że ten rynek dopiero zaczyna tak wzbierać i ta eksplozja gdzieś jest dopiero przed nami. Ok, Vladimir. Czy upowszechnienie się chmury publicznej i dostępność takiej co raz tańszej mocy obliczeniowej wpływa pozytywnie na popularyzację sztucznej inteligencji? 

Vladimir: Myślę, że tak, ale tutaj wyjaśnię, co mam na myśli. Bo warto podzielić to na dwa wymiary. Pierwszy wymiar, to taka infrastruktura, czyli większe maszyny, też tańsze, bo co raz tańsze się stają, a druga rzecz, że te chmury, przynajmniej większe oprócz infrastruktury, czyli tego żelaza pod spodem, też dostarczają tzw. usługi, które coś tam potrafią już robić i to coś staje się co raz bardziej skomplikowane. I może zacznę od końca. Jeżeli chodzi o usługi, to Google Cloud albo inne chmury dostarczają już co raz więcej takich różnych ciekawych rzeczy, np. Google Cloud dostarcza takiej usługi jak After ML, działa to w ten sposób, że dostarczasz zdjęcie i dostarczasz tych lejbele, czyli jaka jest odpowiedź do tego zdjęcia, wrzucasz tam, ono automatycznie buduje modele i nagle okazuje się, że o ile to było możliwe, dostajesz model w ogóle nie ingerując w kod i nie zmieniając nic nisko poziomo tylko przygotowałeś dane. Też są inne przykłady jak Google Translate, że możesz tłumaczyć na wiele różnych języków albo chociażby tłumaczenia mowy mowa w tekst, tekst w mowę itd. Są tam pewne wyjątki, w szczególności, jeśli chodzi o język polski. Jest tutaj niestety mniej dopracowane, chociaż to się pomału też zmienia, ale dość często brakuje usług dotyczących języka polskiego. A drugi numer, który wspomniałem, to jest ta infrastruktura, natomiast mi to się podoba mimo tego, że mam nie najmniejszy laptop, tam 16GB RAM-a, jak na MAC’a to jest całkiem dużo, ale jednak 16 GB RAM-a dość często to jest za mało, w szczególności jak chcę zrobić coś większego. To wtedy wynajmuje sobie taką większą maszynę 100 GB, 200 GB, czy jeszcze więcej. Odpalam ten swój model na kilka godzin czy tam kilka dni czasem i mam wynik. I płacę za tą maszynę, w zależności od tego jak duża maszyna itd., ale płacę tam dolara czy kilkadziesiąt dolarów za ten okres, więc patrząc na to wszystko, to oczywiście można stwierdzić, że to pomaga i to bardzo, bo  nie potrzebujesz teraz większej maszyny, by robić naprawdę poważne rzeczy, i też mogę powiedzieć, że jeżeli chodzi o samo żelazo, to tutaj się zmieni np., ile osób kojarzy karty graficzne GPU, bo to jest związane z grami, ale np. już zdecydowanie mniej osób kojarzy coś takiego jak CPU. T jak Tencer, i to jest taki chip stworzony przez Gooogle specjalnie dopracowany pod Tencerflow, to jest nazwa freamworku dla Deep Learningu, który działa optymalnie jeżeli chodzi o czas, czy li wydajnie i też o koszt, dzięki temu jakiś taki bardziej skomplikowany, jest taki konkurs o nazwie Imagined i wcześniej, żeby nauczyć taki model, to potrzebowałeś naprawdę potężnej maszyny i czasem to zajmowało dwa tygodnie lub coś takiego, to teraz wykorzystujące te karty CPU, jesteś w stanie zrobić znacznie szybciej, nawet w mniej niż jeden dzień i za to zapłacisz bodajże, o ile dobrze pamiętam, to z tego czytałem artykuł, za 50 dolarów udało się powtórzyć ten sam. To robi duże wrażenie, bo ten konkurs Imagined jeszcze kilka lat temu wydawał się na tyle skomplikowany, że tylko naprawdę wybitne jednostki potrafią to zrobić, a tu nagle się okazuje, że tak naprawdę każdy student, który nie zje 5 obiadków, czy 10 obiadków jest w stanie powtórzyć to samo.

Krzysztof: To faktycznie niesamowite jak ten postęp dzieje się na naszych oczach. Jeden z takich baswordów kojarzonych ze sztuczną inteligencją, to data science. Brzmi dość enigmatycznie. Czy mógłbyś powiedzieć czym jest i czy jest to bardziej nauka czy inżynieria?

 Vladimir: Data science ma wszystkiego po trochu, ale generalnie chodzi o to, że z punktu widzenia biznesowego zależy na tym, żeby rozwiązanie wdrażać w produkcję, że jest konkretny problem i ten problem trzeba rozwiązać. I niestety w praktyce wygląda to znacznie bardziej brzydko, niż w teorii, bo musisz te dane jakoś tam zebrać, te dane są rozproszone, w różnych bazach, w różnych miejscach, jakiś tam danych nie ma, jakieś są, jakieś tam zmieniły się w trakcie, i ten Data Scientist musi pobrudzić swoje ręce i potrafi to jakoś poukładać, pozbierać, znormalizować, pouzupełniać te wszystkie luki itd. Ale również też musi umieć użyć uczenie maszynowe, jeżeli chodzi o budowanie modeli. Tutaj oczywiście trzeba powiedzieć wprost, że w praktyce co najmniej zwykle 70%, czasem nawet więcej spędza się na to, żeby przygotować dane, bo to dość często jest takie skomplikowane zadanie i mało firm jest dojrzałych, że po prostu masz jedną prostą tabelkę, te tabelki masz wszystko co potrzebujesz, zwykle to jest rozrzucone po całym świecie, też ta logika non stop się zmienia, osoba, która wiedziała, dlaczego tak jest już się zwolniła itd. Wydaje mi się, że więcej jest tego inżynieringu, ale też ta nauka tam jest.

Krzysztof: Wiemy już, że dane trzeba zbierać, kategoryzować, przetwarzać i na końcu je w jakiś sposób pokazywać, wizualizować. Dlaczego wizualizacja jest tutaj ważna? Jakich narzędzi się do niej używa?

Vladimir: Wizualizacja jest bardzo ważna. Bo też wynika z tego jak działa nasz mózg. Jeżeli sobie wyobrazimy, popatrzymy sobie na taki wykres i załóżmy, że w tym wykresie jest takie kółeczko zrobione, i teraz jeżeli patrzymy na to kółeczko, od razu widzimy, że jest jakaś korelacja pomiędzy tymi danymi, to kółeczko nie jest przypadkowe. W przyrodzie nie może się pojawić tak w sposób losowy, takie kółeczka. Z drugiej strony, jeżeli mamy te same dane ułożone w tablicy Excela albo jakiejś tam innej tablicy, tam są takie liczby, mamy dwie kolumny i są liczby, to zobaczyć to kółeczko w tych kolumnach będzie bardzo ciężko, wręcz niemożliwe. Dlatego to wizualizujemy i zwykle wizualizacja, tak jak powiedziałem nasz mózg jest tak zbudowany, że jest w stanie wychwytywać pewne wzorce, które nie jesteśmy w stanie wychwycić w inny sposób. Kolejna rzecz, która jest tu pomocna, to przez to, że my widzimy jak te dane są poukładane, to np. widzimy, że jest tam wartość odstająca albo outlaw po angielsku, bo widzimy, że ta kropeczka totalnie jest gdzieś za wysoko albo za nisko i możemy to odciąć, bo będzie wprowadzać nam szum itd. Wizualizacja jest bardzo fajna. Gdzieś tam ktoś kiedyś powiedział, że jeżeli dane torturować dość długo to w końcu się przyznają i to chodziło właśnie o to, że wizualizujesz je na różne wymiary, agregujesz, znów wizualizujesz, to bardzo pomaga zrozumieć z czym pracujesz. Ja osobiście bardzo polecam przed tym, żeby zrobić cokolwiek, to zrozumieć tą domenę, w której jesteś. Często jest tak, że nie masz tego eksperta pod bokiem, żeby dopytywać, albo nawet, jeżeli go masz, to on jest zbyt „drogi”, żeby go wykorzystywać cały czas. Dopytujesz powiedzmy raz w tygodniu. To, co robisz, to zwykle wizualizujesz i patrzysz co tam jest. Jakie narzędzia do tego można używać? Są przeróżne, jeżeli chodzi o Business Inteligence, to oni mają jakieś tam swoje narzędzie takie jak Tablo, Clickview itd. Ja osobiście używam bardziej związane z Pythonem, zaczynając od Matpotli, bo to jest najniższa taka biblioteczka, w pewnym sensie taki asambler, w którym dużo trzeba napisać kodu, ale masz też dużą kontrolę, co się dzieje, ale są też takie biblioteki, jak chociażby Cibiorn, GGPlo też jest w Python’ie i tam jeszcze kilka innych. Które całkiem fajnie umożliwiają, w bardzo prosty sposób zobaczyć jak te dane wyglądają, jakieś tam histagramy porobić itd. 

Krzysztof: Myślę, że z naszej rozmowy jednoznacznie wynika i nie ulega wątpliwości, że uczenie maszynowe i tematy sztucznej inteligencji, to przyszłościowe zagadnienia. Od czego warto zacząć swoją przygodę? Czy musimy dysponować potężną maszyną i gigabajtami danych na początku?

Vladimir: Od czego zacząć? Ja kiedyś nagrałem taki webinar, też powstała transkrypcja, myślę, że warto to zlinkować, bo to trwało 1,5 godziny, wydaje mi się mniej więcej, więc tam jest znacznie więcej informacji. Wydaje mi się najważniejszą rzeczą i największy błąd, który ludzie popełniają, to jest to, że zaczynają od teorii i próbują ją uczyć schodząc na jakieś takie mało ważne elementy, np. algorytm próbujemy zrozumieć na 100% jak to działa tam pod spodem, a później jak to zrozumiałem, to tak naprawdę nie wiadomo po co to zrozumiali i też nie potrafią tego wykorzystać. Też np. jak popatrzymy na większość kursów, które są dostępne chociażby na Corserze albo na innych, to po takim kursie z jednej strony potrafisz, albo nie potrafisz, jeżeli to przerobiłeś, to wyjaśniasz, jak działa algorytm A lub B, ale jak ktoś Ci powie: „Dobra, to mam taki problem biznesowy, to spróbuj go rozwiać.” No i niestety tu pojawia się taka wątpliwość, a w sumie nie wiem jak za to się zabrać. No i właśnie wskazówka od czego zacząć. Zacząć od czegoś namacalnego. Niech to będzie na początek bardzo prosty przykład, ale taki od początku do końca, żebyś poczuł, że potrafisz to zrobić. Ja np. prowadzę takie wprowadzenie do uczenia maszynowego i tam bardzo prosty przykład, to jest klasyfikacja imion i na podstawie imienia, stwierdzamy, czy to jest imię męskie czy żeńskie. Problem jest bardzo prosty, wręcz nawet trywialny, ale okazuje się, że osoba, która totalnie nic nie wiedziała, jest w stanie w ciągu takiego jednego dnia zrozumieć, jak wygląda proces uczenia maszynowego i też budować swój model, i cieszy się, że zrobił coś więcej niż tylko zrozumiał jakieś teoretyczne zagadnienia. Krok dalej, jeżeli chodzi o ten rozwój, to albo zrobić swój hobbystyczny projekt i tu najlepiej dobrać się w pary, żeby był ktoś, osoba, która nie umożliwia nam tak łatwo odpuścić, albo zrobić jakiś konkurs na kaggle.com albo inne są platformy i tam można bardzo łatwo się wkręcić, albo chociaż na tym kaggle też jest forum, gdzie ludzie się dzielą pomysłami jak to można lepiej zrobić itd. I to bardzo fajnie nakręca. Co prawda tutaj od razu powiem, kaggle uczy bardziej o uczeniu maszynowym i pewnych optymalizacjach i mniej uczy o tym jak przygotować dane, jak wyczyścić dane, zadać pytanie biznesowe, takie prawidłowe pytanie biznesowe. Ja zwykle mówię, że są pewne aspekty, które trzeba opanować i trzeba zrozumieć, że ok, teraz chce więcej zrozumieć ML, to idę sobie na kaggle, jeżeli chcę zrozumieć więcej pewne procesy związane z SQL, jak takie SQL pisać, jak ich wyciągać, to muszę albo w swojej pracy znaleźć taki projekt i porobić coś w tym temacie albo komuś innemu pomóc. Warto to rozbić na mniejsze kawałki tego słonia i w ten sposób go zjeść, ale bardzo uprzedzam, żeby unikać zbyt zawiłych tłumaczeń, w szczególności, jeżeli czujesz, że to jest zbyt skomplikowane dla mnie, prawdopodobnie podchodzisz do złej strony i są inne ścieżki, które będą dla Ciebie zrozumiałe.

Krzysztof: Dzięki za te cenne rady. Vladimir, jesteś pomysłodawcą i współorganizatorem inicjatywy pod nazwą Data Workshop, która niedawno wystartowała. Jest to cykl takich spotkań w kilku największych miastach Polski. Co prawda, wiem, że już tutaj nie ma wolnych miejsc, bilety się wyprzedały, ale 13.10.2018 r., bo nie wiadomo, kiedy ten podcast będzie słuchany, odbędzie się konferencja w Warszawie. Mógłbyś coś więcej na ten temat powiedzieć?

Vladimir: Tak, zaraz wytłumaczę, jak to funkcjonuje. Jakiś tam czas temu zacząłem na takich zwykłych etapach tłumaczyć czym jest uczenie maszynowe, bo jakoś mi wydawało się, że kiedy ja zaczynałem, to wyglądało znacznie bardziej skomplikowanie, ale nie mogłem cofnąć się w czasie, by wytłumaczyć samemu sobie. Natomiast mogłem cofnąć czas w innej postaci, w innym wymiarze, że są ludzie, którzy są na tym samym poziomie jak ja w przeszłości, ja mogę im pomóc i w ten sposób zacząłem pomagać na zwykłych etapach. Wtedy to była taka bardziej, można też powiedzieć, że zabawa, niż tempo pracy, po wieczorach albo zwykle po weekendach i okazało się, że to moje tłumaczenie po pierwsze jest zrozumiałe dla ludzi, też dostałem dużo pozytywnego feedbacku i też zauważyłem, że to mi się podoba. I to właśnie polubiłem jako człowiek. W ogóle każdy człowiek musi znaleźć swoje pewne mocne strony. Ja poczułem, że to jest moja, bo to sprawia mi satysfakcje, nie ma tej dużej komplikacji, która jest pod spodem i czasu, który na to poświęcam, i w pewnym momencie to zaczęło iść w kierunku, że meet upu pojawiał się online kurs, już były dwie edycje tego kursu, trzecia edycja będzie w październiku, 29 października w poniedziałek to startuje, tym bardziej, że jest jeszcze drugi kurs, który powiem może o nim później. I po tych dwóch edycjach zrozumiałem, że ludzie po tych kursach, absolwenci moi, wiele się nauczyli takich praktycznych zagadnień, część z nich już to wprowadziła w praktyce, część z nich znalazła pracę i już pracuje jako juniory albo jeszcze gdzieś tam powiązane stanowiska, ale dla części osób brakowało czegoś. Ja próbowałem zbadać czego jeszcze brakuje i te braki wynikały nie tyle z tej wiedzy technicznej, ale takiej wiedzy życiowej, biznesowej, np. jest człowiek, który pracuje w firmie X i on wie jak zbudować model, ale okazuje się, że on nie jest w stanie wyjaśnić menadżerowi albo prezesowi, albo jeszcze komuś z tej firmy, dlaczego to ma sens, bo nie ma takiej umiejętności, Ja pomyślałem jak ja mogę pomóc ludziom, bo chciałbym wspierać swoich absolwentów i wtedy do głowy przyszła mi taka prosta myśl, a co jeżeli zbiorę najlepsze osoby, które znam w Polsce zajmujące się uczeniem maszynowym, które mają swoje pewne sukcesy, żeby każdy ten człowiek powiedział o swojej ścieżce, o swoich porażkach, o swoich sukcesach, jako on widzi to uczenie maszynowe, jakie on pytania zwykle zadaje, co jest ważne, co jest nie ważne, bo on to bardzo zróżnicował, tam są osoby ze świata akademickiego, osoby bardziej samouki, praktyki i w ten sposób w jednym miejscu, w jeden dzień, będzie pigułka wiedzy, która umożliwia poukładać priorytety czym jest uczenie maszynowe, jak do tego podejść, na co należy zwracać uwagę i mam nadzieję, że w ten jeden dzień można dzięki temu jednemu dniu zaoszczędzić być może nawet kilka lat, bo to jest praktyczna wiedza, którą już ktoś tam przepuścił przez siebie, i też chciałem, żeby ludzie mówili o swoich porażkach, bo wydaje się, że to jest taka dość rzadka informacja, ale bardzo cenna, bo ktoś kto patrzy ze strony, wydaje się, że ok, ten człowiek jest dyrektorem technicznym, to jest super taki inteligentny i nigdy nie popełnił żadnego błędu, a tak nie jest. Prawdopodobnie on jest tym dyrektorem technicznym, że popełnił mnóstwo błędów i wie, że tak nie można robić i wie, jak można robić, to co działa najlepiej. Chciałem zrobić takie konferencje i też dla mnie to jest taki eksperyment, bo jak badałem rynek, w Polsce tego jeszcze nikt nie robił, w świecie zachodnim jak badałem też nie za bardzo znalazłem, bo więcej się robi o tych analogiach, o projektach, które się realizują, ale mniej takich bardzo życiowych spotkań, gdzie możesz się spotkać z człowiekiem i on powie, że: „Słuchaj kolego/koleżanko. Wydaje mi się, że nie chcesz się bawić w te algorytmy pod spodem itd., tylko pójść do swojego prezesa i powiedzieć mu to i tamto.” Wiadomo, ten zdrowy rozsądek musi być, trzeba oczekiwać, że będzie wprost rozwiązanie, że zrób A i dostaniesz B, ale z drugiej strony mam nadzieję, że to będzie taka pigułka wiedzy, którą ciężko będzie znaleźć w innym miejscu.

Krzysztof: Pewnie. Bardzo serdecznie wszystkich na to zapraszamy. A Vladimir wspomniałeś o kursie, mógłbyś coś więcej na ten temat powiedzieć?

Vladimir: Mam dwa kursy już w tej chwili. Pierwszy kurs nazywa się „Praktyczne uczenie maszynowe” i to jest wprowadzenie do uczenia maszynowego. Ja wcześniej to nazywałem praktyczne uczenie maszynowe dla programistów, bo sam wychodzę z tego środowiska, później się okazało, że ta osoba programisty w sumie niekoniecznie tam musi być, bo te osoby, które nie programowały bardzo fajnie się odnajdują. To jest kurs przede wszystkim dla osób, które chcą przejść w krótkim czasie, to jest dwa miesiące, też kurs jest online, więc dobierasz sobie czas, kiedy chcesz pracować, ale przejść przez taki szybki kurs, kiedy zrozumiesz, o co chodzi w tym uczeniu maszynowym tak w sposób praktyczny i też przerobić pewne praktyczne rzeczy. Też w trakcie kursu np. jest konkurs jako przykład ten konkurs się zmienia, ale w drugiej edycji w tym konkursie było zadanie, były dane, koszt samochodów i na podstawie danych historycznych trzeba było powiedzieć, ile powinien kosztować ten samochód. Na przykład, jeżeli samochód jest marki BMW rok 2005, cztery drzwi albo pięć itd., to koszt musi wynosić tyle i tyle. I to jest o tyle ciekawe, że też to jest namacalne, bo tak czy owak każdy z nas w rodzinie albo w znajomych rodzinach posiada samochód i mając taki model zupełnie nie znając się na samochodach, jesteś w stanie oszacować, ile taki samochód powinien być warty. Ale też ciekawostka jest taka, że ten konkurs działa tak, że najpierw przygotowuję człowieka, pokazuję, jak to trzeba zrobić, a potem rzucam na głęboką wodę i już dalej nic nie pokazuje. I to robi wrażenie, jak osoby, które nic nie wiedziały na temat ML, nagle okazuje się, że potrafią robić takie cuda, że ja też byłem zdziwiony. Jak chcesz, to możemy też podlinkować taki notebook, tam, gdzie jest to rozwiązanie osoby, która wygrała ten konkurs i to była osoba, która przed tym nic nie wiedziała na temat ML, albo coś tam wiedziała, w tym sensie, że być może coś tam na studiach przerabiała, ale nic nie robiła tak fachowo i wystarczyło pokazać jakie narzędzia są, jak o tym myśleć i on sobie tak fajnie z tym poradził. To jest pierwszy kurs. A też tam powiem, że wiele rzeczy rozwiązałem takich dodatkowych jak przygotowanie środowiska, wszystko jest przygotowane, jedynie potrzebujesz przeglądarkę. A drugi kurs, o który mnie prosiło wiele osób, żeby zrobić, on jest w pewnym sensie kontynuacją, dlatego, że tam już nie ma o podstawach i skupiamy się na jednym takim problemie nazywa się predykcja albo prognozy szeregów czasowych. Szereg czasowy, to na przykład jest chociażby te kryptowaluty możemy wziąć albo prognozy popytów w czasie, np. ile bochenków chleba musi być jutro w sklepie X, czyli mamy taki wykres na osi X mamy daty, na osi Y mamy wartości i próbujemy przewidzieć na podstawie danych historycznych, jaka wartość będzie w jakimś tam czasie, jakimś tam przydziale czasowym. No i ten kurs startuje 5 listopada, ja akurat go polecam osobom, które już przerobiły pierwszy kurs, albo mają takie solidne podstawy z ML, bo inaczej może być im trochę ciężko się tam odnaleźć, ale z drugiej strony jak ktoś już ma te warunki spełnione, to będzie fajne uzupełnienie.

Krzysztof: Pewnie. Wszystkie te rzeczy, o których rozmawialiśmy, linki do nich zawrzemy w notatkach. Teraz uwaga, uwaga, będzie konkurs. Wraz z Vladimirem, przygotowaliśmy dla Was trzy wejściówki na transmisję live z konferencji o której mówił Vladimir i zostaną one rozdane wśród słuchaczy podcastu, którzy w najciekawszy sposób opiszą, jakie zmiany czekają IT w kontekście sztucznej inteligencji? Swoje wypowiedzi proszę abyście publikowali w komentarzach do tego odcinka podcastu pod adresem porozmawiajmyoit.pl/17 jak numer tego podcastu. Na komentarze czekam do 23.09.2018 r, i wtedy to zostanie opublikowana lista zwycięzców. Wszystkim życzę powodzenia. Tobie Vladimir bardzo dziękuję za rozmowę, bo myślę, że oprócz naprawdę dużej dawki wiedzy, mam wrażenie, że zainspirowałeś słuchaczy do tego, żeby zainteresować się Machine Learningiem, bo to jest rzeczywistość, która ma miejsce, coś, co się dzieje na naszych oczach i czym warto się zainteresować. Ja tak z góry trzymam kciuki za wszystkich, którzy będą brali udział w konkursie. Tobie Vladimir życzę powodzenia z twoimi inicjatywami. Jeszcze raz bardzo ci dziękuję i na koniec, powiedz, gdzie cię można znaleźć w Internecie, w jaki sposób się z Tobą skontaktować najlepiej?

Vladimir: Najlepiej mnie znaleźć na LinkedIn, albo na Twitterze też można, też można na Facebook’u, albo napisać hello@dataworkshop.eu. Staram się odpowiadać na wszystkie pytania, pod warunkiem, że one są dla mnie ciekawe. Na pewno wszystkie przeczytam, ale staram się też odpowiadać na wszystkie, czasem jest trochę opóźnienia. Jeżeli ktoś potrzebuje pomocy, to na takie wiadomości odpowiadam z dużą uwagą, bo zawsze mnie cieszy wspieranie osób, które faktycznie mają motywację, taką determinację do czegoś, w tym przypadku o ML chodzi, i jeżeli jestem w stanie pomóc, to z dużą przyjemnością to robię. Z drugiej strony staram się nie kryć, że ktoś coś powie, a może ja bym chciał, tylko nie wiem jak coś tam, wtedy czuć, że ta osoba marnuje czas, więc jeżeli chcesz się tym zająć i potrzebujesz takiej ręki, która ci pomoże, to pisz śmiało ja cię na pewno będę wspierać, I też chciałem bardzo podziękować Krzyśku za to, że mnie zaprosiłeś, a na koniec drodzy słuchacze zostajecie z myślą taką bardziej do rozważania, pomyśl jak szybko zmienia się nasz świat i co tak naprawdę stanie za 10 może 20 lat, i czy chcesz być osobą, która później powie, że ja nie wiedziałem, że tak będzie, czy jednak chcesz być osobą, która się do tego przygotuje? 

Krzysztof: Dokładnie. Do przemyślenia. Dzięki Vladimir, do usłyszenia. Cześć! I to na tyle z tego, co przygotowałem dla Ciebie na dzisiaj. Mam nadzieję, że po wysłuchaniu, temat sztucznej inteligencji jest Ci bliższy i lepiej rozumiesz technologie, które za tym stoją. Vladimir pokazał, że można się tego nauczyć. Mało tego, trzeba się zaznajomić z tematem, gdyż już teraz otacza nas z zewsząd, a w przyszłości będzie jeszcze bardziej. Dla mnie osobiście jest to fascynujący temat i bardzo się cieszę, że miałem okazję o tym porozmawiać z Vladimirem. Ponownie zapraszam Cię do wzięcia udziału w konferencji organizowanej przez Vladimira i do jego kursów. Vladimir przygotował dla Ciebie specjalną niespodziankę. Jest to 20% rabat na jego kurs o uczeniu maszynowym. Rabat jest ważny do 29.10.2018 roku i, żeby go uzyskać, wystarczy wpisać promocode PorozmawiajmyoIT. Do wygrania udział w transmisji live ze wspomnianej konferencji. Bardzo Ci dziękuję za wysłuchanie. Dzięki za kolejne oceny w iTunes. Jeżeli masz jakieś pytania, komentarze albo propozycje, co do kolejnych odcinków, a może czujesz się na siłach, żeby wystąpić w jednym z kolejnych epizodów, zapraszam do kontaktu ze mną pod adresem krzysztof@porozmawiajmyoIT.pl. Ten podcast otrzymałeś ode mnie bezpłatnie, ale nie jest on tak do końca darmowy. Poproszę Cię o polubienie Fanpage’a na Facebook’u lub gwiazdki i recenzję iTunes, Spreaker, SoundCloud lub innej aplikacji, na której słuchasz tego podcastu. Ja się nazywam Krzysztof Kempiński, a to był odcinek podcastu Porozmawiajmy o IT, o sztucznej inteligencji. Zapraszam Cię na kolejne odcinki. Cześć!

mm
Krzysztof Kempiński
krzysztof@porozmawiajmyoit.pl

Jestem ekspertem w branży IT, w której działam od 2005 roku. Zawodowo zajmuję się web-developmentem i zarządzaniem działami IT. Dodatkowo prowadzę podcast, kanał na YouTube i blog programistyczny.