Uwaga! Trwają prace nad nową wersją serwisu. Mogą występować przejściowe problemy z jego funkcjonowaniem. Przepraszam za niedogodności!

🔥 Zgarnij PŁATNY STAŻ w 3 edycji kursu programowania front end (zapisy do 22.01) 🔥

Uczenie głębokie: odkrycia naukowe, nowe algorytmy i komputery kwantowe – część II

Co czeka programistów w przyszłości?

Doktor Marcin Płodzień opowiada o sztucznej inteligencji i uczeniu głębokim. Poruszamy temat barier w rozwoju deep learningu i wyzwań czekających na programistów w tej dziedzinie. Nawiązujemy również do technologii kwantowych i ich roli w rozwoju sztucznej inteligencji. Odcinek stanowi drugą część rozmowy z dr. Płodzieniem.

Poruszane tematy

  • Jakie trudności trzeba było pokonać, aby deep learning był w tym miejscu, w którym jest dziś?
  • Co ogranicza rozwój uczenia głębokiego i jakie są perspektywy na to, by te ograniczenia pokonać?
  • Czy sieci neuronowe to dziś po prostu software?
  • Czy deep learning może znaleźć zastosowanie w informatyce kwantowej lub technologiach kwantowych?
  • Jakie wyzwania w obrębie uczenia głębokiego czekają na programistów?
  • Czy uczenie maszynowe może pomóc odkrywać nowe prawa fizyczne lub nowe twierdzenia matematyczne?
  • W jaki sposób Ty wykorzystujesz uczenie głębokie w swoich badaniach?
  • Z jakich dziedzin polecasz rozwijać wiedzę, jeśli ktoś programuje lub dopiero zaczyna i chciałby w przyszłości zająć się uczeniem głębokim?
  • Czy sztuczna inteligencja zastąpi programistów?
  • Jaką książkę i materiały polecisz osobie, która chce lepiej poznać temat uczenia głębokiego?
  • Gdzie możemy Cię znaleźć w sieci?

Polecane materiały

➡ Kanał na YouTubie: StatQuest

➡ Kanał na YouTubie: Serrano Academy

➡ Terrence J. Sejnowski, „Deep learning. Głęboka rewolucja”

➡ Ian Goodfellow and Yoshua Bengio and Aaron Courville, „Deep Learning”, an MIT Press book

➡ darmowe wykłady od MIT: MIT Introduction to Deep Learning

➡ Christopher Bishop „Pattern Recognition and Machine Learning”

➡ Cathy O’Neil, „Broń matematycznej zagłady”

➡ Erik Larson „The Myth of Artificial Intelligence. Why Computers Can’t Think the Way We Do”

➡ Francois Chollet, „Deep Learning, Praca z jezykiem Python i biblioteka Keras”, Keras documentation: keras.io

➡ Zastosowanie metod uczenia maszynowego w mechanice kwantowej, w chemii kwantowej, w symulatorach kwantowych, w komputerach kwantowych: „Modern applications of machine learning in quantum sciences”

Kontakt do gościa

➡ LinkedIn: linkedin.com/in/marcin-plodzien

➡ Strona: sites.google.com/site/marcinplodzienphysics

Transkrypcja

Jest to druga i zarazem ostatnia część rozmowy o sztucznej inteligencji i uczeniu głębokim. Moim gościem jest doktor Marcin Płodzień, który w poprzedniej rozmowie przybliżył nam zagadnienia m.in z zakresu trenowania modeli np. do rozróżniania obrazów. Opowiedział również o obecnej i przyszłej roli uczenia głębokiego w odkryciach naukowych czy doskonaleniu medycyny, technologii i życia codziennego. Zapraszam do odsłuchania tej rozmowy.

W tym odcinku natomiast poruszamy m.in. temat barier w rozwoju deep learningu i wyzwań czekających na programistów w tej dziedzinie.

 

Marcinie, powiedz nam, trudności trzeba było pokonać, aby deep learning był w tym miejscu, w którym jest dziś.

Tak jak powiedzieliśmy, uczenie głębokie i początki uczenia maszynowego są już stare – sięgają lat 50. i 60. Faktycznie największy boom nastąpił w ostatniej dekadzie. Składają się na to głównie trzy czynniki.

Pierwszym z nich jest rozwój sprzętu komputerowego. Żeby trenować modele na masową skalę, potrzebujemy ogromnych mocy obliczeniowych, które dopiero ostatnimi laty mamy do dyspozycji. Te moce są relatywnie tanie, tak że niemal każda firma, która chce wejść w taki temat, może sobie kupić komputery z kartami graficznymi itd., żeby dokonywać trenowania modeli. Mamy szybkie pamięci, dużą przepustowość, szybkie procesory. Potrzeba więc było tych wszystkich lat w rozwoju sprzętu komputerowego, żeby uczenie było relatywnie tanie i możliwe na tak masową skalę.

Drugi ważny etap to to, o czym już wspomniałeś: mamy ogromny dostęp do danych. W erze Internetu, smartfonów codziennie generowane są nowe ilości danych (czy to audio, wideo czy tekst). Dane te można parsować, można je zbierać z Internetu i na nich trenować modele. Można sobie wyobrazić sytuację, w której mamy ogromne moce obliczeniowe, mamy superkomputery, ale nie mamy dostępu do danych treningowych – wtedy deep learning na niewiele się zda.

Od razu tutaj zaznaczę, żebyśmy byli świadomi, dlaczego Google wszędzie jest darmowy: mamy przeglądarkę, dokumenty Google, Androida (na telewizor, na komórkę) – więc jest skąd pozyskiwać te wszystkie dane i dzięki nim jesteśmy w stanie zrobić coś większego. Nie jest więc tak, że wszystko jest darmowe.

Zgadza się.

Oczywiście nie mówię, że Google jest zły i okropny, ale musimy być świadomi, że to nie tak, że on na tym nie zarabia.

Oczywiście. Jeżeli coś jest za darmo, to znaczy, że Ty jesteś produktem. W dzisiejszych czasach ta reguła funkcjonuje chyba bardziej niż kiedykolwiek – jeśli chodzi o dostęp do darmowych usług internetowych.

Przyszła mi teraz do głowy ta historia (nie wiem, na ile to było prawdziwe) – została uruchomiona aplikacja „wrzućcie swoje zdjęcia z dzieciństwa i swoje zdjęcia z teraz, żeby zobaczyć… ”. No nie wiem, jaki był podtekst tego, ale jeżeli wiemy, że dana osoba wyglądała tak w młodości, a teraz wygląda tak, to gdzieś po środku można znaleźć, jak przebiegał proces starzenia. Wyobrażam sobie, że dla nas to była taka baza danych, którą możemy wykorzystać do trenowania modeli.

Tak, zdecydowanie tak. Te dane były wykorzystywane do trenowania modeli. Trzeba naprawdę uważać, co się wrzuca do Internetu i komu się powierza naszą fotografię.

Ciekawe, ciekawe. To może jeszcze taka bardzo stara historia (to było dawno temu, gdy powstały karty kredytowe): na podstawie tego, co kupowała żona, firma będąca właścicielem karty kredytowej była w stanie ocenić, czy żona jest w ciąży jeszcze zanim wiedział o tym mąż. Więc kiedy to było i jakie to były dane, a jak jest teraz? Nie chcę nikogo przerazić…

No tak. Normalnie to jest wykrywanie patternów w danych, które – jak by się wydawało – są niezwiązane z obiektem badań. Tutaj maszyny świetnie sobie radzą.

Nie chcę źle strzelić, ale powiedzmy, że są to lata 70. Jaki jest teraz skok i co teraz o nas wiedzą?

Dokładnie tak.

No dobrze, kończmy offtop. Lećmy z tematem.

Trzecim elementem, kluczowym dla nowoczesnego uczenia maszynowego i głębokiego jest algorytm automatycznego różniczkowania. Musimy tutaj wrócić do zagadnienia trenowania sieci głębokich: trenowanie polega na odpowiednim, iteracyjnym doborze wag sieci neuronowej, tak aby funkcja kosztu była jak najmniejsza. Czyli szukamy minimum funkcji kosztu, która zależy od wag sieci.

Ze szkoły średniej zapewne pamiętamy pojęcie pochodnej funkcji. Dla prostoty rozważamy funkcje jednowymiarową zależną od parametru x. Chcąc znaleźć minimum takiej funkcji, szukamy takiego położenia x, dla którego pochodna funkcji w tym punkcie wynosi 0.

W sytuacji sieci głębokiej jest bardzo podobnie: sieć głęboka jest sparametryzowana wagami, czyli jest to wielowymiarowa funkcja wag. Minimalizowanie funkcji straty polega na znalezieniu takiego zestawu wag, dla którego gradient funkcji koszt wynosi 0.

Kluczowe w tym wszystkim było znalezienie algorytmu, który potrafiłby liczyć takie gradienty w sposób automatyczny. Taki pierwszy algorytm został zaproponowany w 1960 roku, a jego nowocześniejsza wersja w 1970. Dziś wszystkie biblioteki numeryczne, które służą do programowania sieci neuronowych, wykorzystują ideę automatycznego różniczkowania – tym samym pozwalają automatyzować proces trenowania.

To może ja to podsumuję i „spłycę” do swojego poziomu: chodzi głównie o to, że szukamy najlepszego wyniku, ale nie idealnego. Czyli w najkrótszym czasie chcemy znaleźć rozwiązanie, które nas interesuje – żeby był to jak najmniejszy koszt.

Tak. Lokalne minimum – możemy nie spodziewać się znalezienia globalnego minimum funkcji kosztu, ale coś lokalnego. Tak można to pokrótce powiedzieć.

 

Co ogranicza rozwój uczenia głębokiego i jakie są perspektywy na to, by te ograniczenia pokonać?

Myślę, że dziś sprzęt nie jest ograniczeniem. Możliwości obliczeniowe nie są ograniczeniem. Mamy narzędzia software'owe, które też nie są ograniczeniem. To, co naprawdę jest ograniczeniem, to dane i ich jakość.

O ile danych mamy bardzo dużo, często się zdarza, że są to dane złej jakości. Dane te nie są ustandaryzowane i dobrze oetykietowane. W myśl zasady garbage-in, garbage-out trenując modele na źle przygotowanych danych, mamy złe predykcje. Zatem obecnie gromadzenie i czyszczenie danych jest bardzo ważne z punktu widzenia wdrażania modeli, ale etykietowanie danych jest procesem, który najczęściej wymaga ludzi. I to jest główny koszt. Etykietowanie danych w taki sposób, żeby były czyste oraz dobrej jakości, i ich standaryzowanie – to jest dzisiaj główne ograniczenie.

Innym, nie mniej ważnym zagadnieniem, są aspekty etyczne i prawne wdrażania uczenia maszynowego i integrowania go z naszą codziennością. Jako społeczeństwo musimy odpowiedzieć sobie na pytania dotyczące etyki sztucznej inteligencji (ogólnie rzecz biorąc) i odpowiedzialności za konsekwencje akcji dokonanych przez wytrenowane modele. Tak naprawdę nie mamy żadnej odpowiedzi na to, jak sobie poradzić z takimi pytaniami. Może tu podam kilka przykładów.

Wyobraźmy sobie autonomiczny samochód, który bierze udział w wypadku śmiertelnym. Pozostaje pytanie: kto odpowiada prawnie przed sądem? Osoba siedząca w samochodzie? Producent samochodu? Dostawca, który zastosował model rozpoznawania pieszych? Czy może tylko twórca architektury sieci neuronowej? To pytanie jest na razie bez odpowiedzi. I o ile uczeniem maszynowym zajmują się głównie inżynierowie i specjaliści z tzw. hard science, to zagadnienia etyki oraz prawa należą do filozofów, prawników, etyków. Jest to bardzo ważna część rozwoju sztucznej inteligencji i wszystkich metod uczenia maszynowego oraz integrowania ich z naszą codziennością.

Drugim zagadnieniem, które w pewnym sensie też może trochę ograniczać badań nad sztuczną inteligencją, są prawa autorskie. Niektórzy mogą pamiętać wspomniany wcześniej konkurs malarski, w którym zwycięski obraz był wygenerowany przez sieć neuronową. I tu powstają pytania: czy taki obraz to rzeczywiście dzieło sztuki? Kto jest autorem takiego dzieła: czy osoba, która je wygenerowała przy użyciu dostarczonego modelu, czy może inżynierowie, którzy wytrenowali model, czy może ludzie, którzy odpowiadali za dostarczanie i etykietowanie danych? A może nikt nie jest właścicielem? To pytanie również jest bez odpowiedzi. To też w pewnym sensie ograniczy rozwój w rozumieniu wdrażania do naszej codzienności sieci neuronowych. Musimy odpowiedzieć sobie na to pytanie – i to jest rola filozofów, etyków, prawników itd.

Ostatnim nie mniej ważnym tematem jest, oprócz jakości danych, również różnorodność danych. Należy zwrócić uwagę na to, że modele treningowe są oparte na danych pochodzących z relatywnie wąskiego kręgu kulturowego: powiedzmy europocentrycznego. Natomiast wiemy, że większość ludzi na Ziemi żyje w Chinach i na Półwyspie Indyjskim oraz w Afryce.

Dochodzimy do sytuacji, w której relatywnie wąska grupa ludzi, czyli Europejczycy i Amerykanie, generują modele, które mają ogromny wpływ na gospodarkę globalną – ale dane pochodzą z bardzo wąskiego kręgu kulturowego.

Jako przykład weźmy modele do przetwarzania języka naturalnego i do tłumaczenia pomiędzy językami. Wiemy dziś, jak świetnie radzą sobie te modele w tłumaczeniach z języka angielskiego na inne języki europejskie: bo mamy bardzo wiele danych treningowych. Natomiast można się spodziewać, że te translatory dużo słabiej będą sobie radzić w tłumaczeniu na języki afrykańskie czy azjatyckie.

Zatem demokratyzacja postępu w dziedzinie uczenia maszynowego jest związana z trenowaniem modeli na danych z różnych kręgów kulturowych. To oznacza, że musimy mieć te dane, musimy je oetykietować – i to prawdopodobnie zajmie nam czas.

To są główne punkty, które mogą nas powstrzymać przed pełnym aplikowaniem sieci neuronowych i uczenia maszynowego w społeczeństwie, gdzie to jest możliwe. Te ograniczenia nie są sprzętowe, tylko bardziej wynikają z filozoficznych, prawnych i etycznych aspektów.

 

Czy sieci neuronowe to dziś po prostu software?

To jest bardzo dobre pytanie. Oprócz software’owych rozwiązań w sieciach neuronowych istnieją tzw. neuromorficzne sieci neuronowe (ang. neuromorphic neural networks). Jest to połączenie układów fizycznych, które można skonstruować w laboratorium, z trenowalną warstwą, która jest w komputerze (czyli z software’em).

Tutaj chyba najbardziej ostatnio znanym przykładem są polarytonowe sieci neuronowe. Są to rozwiązania oparte na układach fotonicznych, w których dane wejściowe, np. obrazy ze zbioru danych MNIST, są kodowane w sygnał fizyczny, są przepuszczane przez układ tzw. polarytonów ekscytonowych – i tam układ wykonuje wiele nieliniowych operacji. Już nie wchodząc w szczegóły fizyki: te dane przechodzą, są transformowane w bardzo różny sposób, a wyjście jest wkładane do komputera, do warstwy, która znajduje się na poziomie software'owym. Właśnie ta ostatnia warstwa jest trenowana.

W serii kilku prac z ostatnich lat zostało pokazane, że trenowanie modelu opartego o polatyrtonowe sieci neuronowe jest dużo szybsze niż trenowanie modelu tylko w softwarze.

Co jest ważne, Polska ma bardzo duży wkład w badania nad sieciami neuromorficznymi – m.in. grupy badawcze z Warszawy. Jest to więc bardzo miły aspekt dotyczący rozwoju alternatywnych podejść do sieci neuronowych.

 

Czy deep learning może znaleźć zastosowanie w informatyce kwantowej lub technologiach kwantowych?

To jest bardzo ekscytujący obszar badań, relatywnie bardzo nowy – ma kilka lat. Obecnie istnieją prace, które mówią, w jaki sposób uczenie przez wzmacnianie można wykorzystać do stabilizowania eksperymentów z pojedynczymi fotonami.

Bez wchodzenia w szczegóły: układ optyczny, w którym chcemy mieć dokładnie jeden foton, jest sprzężony z siecią neuronową, w której agent uczy się, jak sterować wiązką lasera stabilizującą nasz układ. Pokazano, że takie sprzężenie sieci neuronowej (która jest uczona przez wzmacnianie) z układem w laboratorium, pozwala nam stabilizować układ. To jest taki przykład zastosowania sieci neuronowej w technologii kwantowej obecnie.

Innym bardzo ciekawym wykorzystaniem uczenia przez wzmacnianie są tzw. kompilatory kwantowe. Możemy sobie wyobrazić układ bramek kwantowych, które mają zrealizować nam jakiś algorytm kwantowy. Dany algorytm kwantowy może być wykonany przez różny zestaw bramek. Zagadnieniem, które chcemy zoptymalizować, jest wybranie takiego zestawu, bramek, które generują nasz algorytm w najmniejszej możliwej liczbie warstw – tak aby sumy kwantowe były jak najmniejsze (w dużym uproszczeniu).

Architektury komputerów kwantowych – czy to opartych np. o nadprzewodzące kubity, czy o bramki realizowane w zimnych gazach atomowych – mają swoje różne właściwości. Pewne bramki działają lepiej w jednej architekturze, inne w drugiej. Można sobie wyobrazić, że sieć neuronowa znajduje optymalny zestaw bramek do zrealizowania danego algorytmu kwantowego w zależności od tego, w jakiej architekturze algorytm ma być wykonany. Jest to więc taki, można powiedzieć, kompilator kwantowy – czyli wykorzystanie sieci neuronowych do jak najlepszej implementacji danego algorytmu kwantowego.

 

Jakie wyzwania w obrębie uczenia głębokiego czekają na programistów?

Myślę, że głównie ta bolączka, czyli analiza, przetwarzanie i czyszczenie ogromnych zbiorów danych. Wiemy, że nie można polegać tylko na tym, że ludzie będą siedzieć, klikać i etykietować dane. Wszystkie rozwiązanie oparte na ogromnych bazach danych będą cały czas potrzebne, będą rozwijane i programiści w tych dziedzinach będą bardzo potrzebni. Tak myślę.

Drugim obszarem, w którym można się spodziewać wielu wyzwań, jest bezpieczeństwo tych zgromadzonych i oetykietowanych zbiorów danych. Można sobie wyobrazić, że mamy zbiór danych ludzi z etykietami różnych chorób. Ci ludzie zgodzili się na to, aby ich historia medyczna posłużyła trenowaniu modeli diagnostycznych. Celem programistów, celem ogólnie IT, jest zapewnienie bezpieczeństwa tych danych. Gdyby zostały one wykradzione, to bardzo poufne dane dostałyby się w niepowołane ręce. Firmy ubezpieczeniowe mogłyby odmawiać sprzedaży ubezpieczeń na życie osobom, które swoje rekordy mają w takich bazach danych chorobowych.

Kolejnym zagadnieniem jest tzw. hakowanie sieci neuronowych, czyli zapewnienie bezpieczeństwa trenowanym modelom. Tutaj znanym przykładem jest problem oszukiwania detekcji twarzy na lotniskach, np. przez noszenie koszulki z jakimś konkretnym wydrukowanym znakiem. Można znaleźć takie filmiki, gdzie systemy detekcji ludzi wariują, kiedy ktoś ma koszulkę z kilkoma plamami. Jak wiemy, tego typu ataki na sieci nie powinny mieć miejsca, ponieważ bezpieczeństwo powinno być zapewnione, a te systemy detekcji ludzi mają temu służyć. Wyzwaniem w dziedzinie wizji komputerowej jest projektowanie modeli, które potrafią sprostać tego typu atakom na model – aby były odporne na próby oszukania sieci.

Innym zagadnieniem związanym z hakowaniem sieci neuronowych jest oszukiwanie rozpoznawania obiektów poprzez np. zmianę jednego piksela w obrazie. Jest bardzo znany przykład tzw. one pixel attack, gdzie sieć neuronowa jest wytrenowana do rozpoznawania obiektów z bardzo wielu klas na obrazkach o niskiej rozdzielczości kilkudziesięciu pikseli w pionie i poziomie. Zmiana jednego piksela o jakąś drobną wartość potrafi zupełnie zmienić predykcję modelu. Przykładowo na zdjęciu możemy mieć czołg – i my widzimy, że to jest czołg. Można też przygotować zdjęcie, które dla ludzkiego oka wygląda jak czołg, ale ma zmienioną wartość jednego piksela – wówczas predykcja modelu na takich danych daje np. klasę „kaczka”.

Zagadnienia atakowania sieci neuronowych mają duże konsekwencje w dziedzinie autonomicznych pojazdów. Tu też był znany atak na układ wizji komputerowej w samochodzie autonomicznym, w którym inżynierowie zamontowali rzutnik na dachu samochodu. Samochód jechał, bardzo dobrze radził sobie z trakcją na jezdni i z różnymi znakami drogowymi, aż w pewnym momencie inżynierowie zdalnie włączyli rzutnik, który był skierowany na pojawiające się znaki. Był pokazany przykład wyświetlenia jakiegoś patternu na znaku stop. System wizji komputerowej nie rozpoznał, że jest to znak stop z jakimś wyświetlonym na nim napisem, tylko myślał, że jest to znak ograniczenia prędkości – i oczywiście przejechałby przez skrzyżowanie bez zatrzymywania się. Mogłoby to mieć tragiczne konsekwencje dla osób siedzących w takim pojeździe i biorących udział w kolizji.

Czyli jak jest taka niezbyt korzystna aura, pada śnieg i przykleja się on do znaków na większej powierzchni, to już może być problem z rozpoznaniem. Często też widzimy, że do znaku przyklejona jest jakaś naklejka, która dla nas jest niewidoczna, a dla systemu może być końcem żywotności.

Dokładnie tak. Tego typu ataki są więc obecne. Bardzo ważne jest, by te ataki testować. Ważne, by ludzie sami atakowali swoje modele i starali się je ulepszać.

Kolejną klasą ataków na sieci neuronowe jest tzw. inżynieria odwrotna, w której mając dostęp do wytrenowanego modelu jesteśmy w stanie odzyskać instancje danych treningowych. Można sobie wyobrazić system chorób skórnych, nowotworowych na podstawie zdjęcia twarzy. Atak polega na tym, że analizując wagi modelu jesteśmy w stanie wyekstrahować zestaw twarzy, który był w danych treningowych. I tu oczywiście znów dochodzimy do zagadnienia zabezpieczania danych treningowych, tak aby nie dostały się one w niepowołane ręce.

Kolejnym bardzo ważnym zagadnieniem dotyczącym bezpieczeństwa nas i wizji komputerowej modeli generatywnych jest tzw. deep fake, czyli preparowanie kompromitujących materiałów wideo i audio, w których nanosimy np. twarz i tembr głosu jakiejś znanej postaci czy nawet nas samych na wideo, które docelowo ma nas kompromitować. Wyzwaniem dla inżynierów sieci głębokich jest wykrywanie takich wideo oraz blokowanie możliwości udostępniania ich w serwisach internetowych. Pod tym względem bardzo kluczowe jest zadbanie o bezpieczeństwo nasze i użytkowników oraz aby sieci neuronowe nie mogły wytworzyć żadnych szkód społecznych.

Można sobie wyobrazić sytuację przed wyborami. Jakaś sieć neuronowa tworzy deep fake z materiałami kompromitującymi polityka. Wiemy wówczas, że wybory są wtedy przegrane. Należy włożyć wiele wysiłku, aby udaremnić tego typu próby.

Wspomniałeś o nagraniach audio i wideo – a co z informacjami? Czy taka sieć jest w stanie sprawdzić, czy dana informacja jest prawdziwa, czy nie? Mówię o tekście pisanym.

Są modele, które służą do analizowania argumentacji w dyskusjach, np. politycznych. Celem jest właśnie weryfikowanie, czy podawane dane statystyczne są prawdziwe, czy nie. Takie modele jak ChatGPT są w stanie to szybko zweryfikować. Kiedy w dyskusji politycznej pojawia się informacja, że np. eksport dokądś jakichś dóbr wynosił tyle i tyle, z czego my zarobiliśmy tyle i tyle, to sieć neuronowa jest w stanie taką informację przetworzyć i zweryfikować.

Oczywiście to teraz jeszcze nie wejdzie do powszechnego użytku, ale można uważać, że szybka weryfikacja danych wypowiadanych w debacie publicznej będzie miała miejsce, co tym bardziej pokazuje, jak ważna jest jakość danych i ich bezpieczeństwo. To przypomina trochę problem w filmie na podstawie książki Raport mniejszości, gdzie główny bohater został oskarżony o przestępstwo, którego ma dokonać w przyszłości. Cały film polega na tym, że bohater próbuje dojść do tego, dlaczego w ten sposób to przewidywanie zostało zrobione. To są takie futurystyczne problemy, niemniej dość bliskie przyszłości – tak myślę.

Ciekawy jestem, gdy będzie debata w Polsce, czy nie okaże się, że 50% oglądających wpisze: „czy ten ktoś nie skłamał, mówiąc, że…”. I potem na Facebooku i wszędzie będą tylko screeny: „tak, kłamał, to jest nieprawda”.

Myślę, że należy bardzo mocno kontrolować polityków. Jeżeli ludzie będa mieli narzędzia do weryfikowania słów i tez wypowiadanych przez nich, może jakość polityki ogólnie wszędzie, w każdym kraju się zmieni i ludzie nie będą manipulowani. Miejmy taką nadzieję.

No ciekawe, chyba będę musiał to sprawdzić. Co dalej mamy?

Ostatnie zagadnienie, które jest bardzo ekscytujące i stanowi ogromne wyzwanie dla programistów i inżynierów sieci neuronowych, to budowanie sieci neuronowych, które są w stanie zaprojektować architektury sieci neuronowych do danego zagadnienia, które jest naszym zapytaniem.

Czyli: mamy jakiś problem i nie chcemy spędzać wiele czasu na szukaniu różnych optymalnych architektur. Chcielibyśmy, aby nasza architektura – taka bardzo ogólna, bardzo szeroka – odpowiedziała nam: do tego zagadnienia proponujemy taki model. To jest coś, co jest już chyba bardzo bliskie buntowi maszyn, gdzie maszyny są w stanie programować same siebie i różne architektury, które szybko okazują się dużo bardziej optymalne niż to, co człowiek potrafiłby w krótkim czasie zaproponować.

 

Czy uczenie maszynowe może pomóc odkrywać nowe prawa fizyczne lub nowe twierdzenia matematyczne?

W zasadzie tak. Już wcześniej wspominaliśmy o tym, że AlfaTensor znalazł algorytm mnożenia macierzy, który działał 10-20% szybciej. Ma to ogromny wpływ na całą branżę IT, bo przetwarzanie każdych danych, każdej treści audio i wideo opiera się na mnożeniu macierzowym.

Widać więc, że rozwój w tym kierunku – czyli wyszukiwania nowych algorytmów przy pomocy narzędzi uczenia maszynowego – może mieć ogromny wpływ na rozwój technologii.

Innym przykładem są rozwiązania dostarczone przez firmę OpenAI. Firma ta stworzyła tzw. Neural Theorem Prover, czyli sieć neuronową zdolną do rozwiązywania zadań z matematyki na poziomie olimpiad matematycznych dla uczniów szkół średnich. To jest tak naprawdę niesamowite, bo zagadnienia wymagające ogromnej kreatywności, mogą zostać rozwiązane przez sieć neuronową, która była wytrenowana do rozwiązywania tego typu zadań i rozwiązywania zadań, które są jakościowo nowe.

Działa to w taki sposób, że zadania matematyczne można przedstawić w formalnym języku programowania, w którym podajemy dane wejściowe, zadajemy pytanie sformułowane w tym języku i sieć neuronowa, analizując dane wejściowe oraz postawiony problem, jest w stanie zaproponować rozwiązanie w tym języku. Można je tak naprawdę przetłumaczyć na rozwiązanie do zapisania na kartce.

Innym ogromnym postępem jest AlphaCode od DeepMind. Jest to sieć neuronowa zdolna do rozwiązywania zagadnień algorytmicznych. Taka sieć neuronowa również w sposób sformalizowany na wejściu dostaje zagadnienia algorytmiczne do rozwiązania i proponuje algorytm, który nie tyle jest poprawny, co w miarę optymalny. Ten algorytm do kilku przykładów, do których został zaaplikowany, proponował rozwiązania, które były w top 28% wszystkich rozwiązań.

Model neuronowy AlphaCode potrafił więc zaproponować rozwiązania, które są naprawdę bardzo szybkie. Czyli ponad 70% ludzi miało gorsze propozycje niż ta od AlphaCode. To jest dość niesamowite.

W fizyce teoretycznej natomiast od kilku lat wykorzystuje się metody uczenia maszynowego i sieci głębokich w celu sprawdzenia ich potencjalnych zastosowań w odkryciach naukowych. Jednym z przykładów może być wykorzystanie algorytmów detekcji anomalii do analizy diagramu fazowego jakiegoś układu kwantowego, którego właściwości dobrze znamy. Sieć neuronowa wytrenowana jest na danych pochodzących z jednej fazy materii i przy pomocy detekcji anomalii jesteśmy w stanie wskazać obszar, w którym następuje tzw. przejście fazowe. W tym sensie więc sieć neuronowa jest w stanie powiedzieć, że „dla tego i tego zestawu parametrów naszego modelu mamy inną fazę”. Potrafiło to dostarczyć benchmark, że sieć neuronowa może być wykorzystywana w badaniach z fizyki teoretycznej i materii skondensowanej.

Innym przykładem jest wykorzystanie sieci neuronowych do analizy układów dynamicznych. Sieć analizuje dynamikę układu i stara się dopasować postać równania różniczkowego, którego rozwiązaniem jest zaobserwowana dynamika. Jest to podejście z tzw. odwrotnej inżynierii – znamy „rozwiazanie” i szukamy odpowiedzi na to, jakie było zadane pytanie, czyli: „obserwowana dynamika jest rozwiązaniem jakiego równania różniczkowego?”. Te zagadnienia są z ogromnym powodzeniem eksplorowane właśnie przy pomocy sieci neuronowych.

 

W jaki sposób Ty wykorzystujesz uczenie głębokie w swoich badaniach?

Obecnie pracuję w trzech projektach, w których staramy się wykorzystać sieci neuronowe do badań w fizyce kwantowej.

Pierwsze projekt polega na sprawdzeniu, czy sieci głębokie są w stanie dokonać detekcji i klasyfikacji stanów splątania w układzie trzech kubitów. Układy trzech kubitów są bardzo dobrze znane w historii informatyki kwantowej. Wiemy o nich w zasadzie wszystko, potrafimy je sklasyfikować.

Pytanie, które zadajemy, to: czy informacje o klasach, które są dostępne w takim układzie trzech kubitów, mogą być odzyskane tylko przy pomocy sieci neuronowych? Na razie mamy bardzo obiecujące wyniki. Okazuje się, że sieć neuronowa jest w stanie rozpoznać, że trzy kubity mogą być w sześciu różnych klasach.

Drugi projekt to wykorzystanie uczenia przez wzmacnianie w celu znalezienia obwodu kwantowego pozwalającego wygenerować maksymalnie splątany stan wielu kubitów. Jest to dość blisko związane ze wspomnianym przeze mnie problemem kompilatorów kwantowych.

Trzeci obszar badań to odzyskiwanie informacji na temat tzw. niezmienników topologicznych w nadprzewodnikach topologicznych na podstawie danych pochodzących z eksperymentu. Projekt ten był czasochłonny. Jednym z najbardziej czasochłonnych elementów był odpowiednio dobrany zbiór danych treningowych – to jest to, o czym wcześniej wspominałem. O ile architektura nie była mocno skomplikowana, o tyle dużo czasu poświęciliśmy temu, na jakich danych należałoby model trenować. Na szczęście z sukcesem.

Brzmi bardzo skomplikowanie.

 

Z jakich dziedzin polecasz się rozwijać, jeśli ktoś programuje lub dopiero zaczyna i chciałby w przyszłości zająć się uczeniem głębokim?

Myślę, że punktem startowym – to nie będzie zaskoczeniem – jest oczywiście umiejętność programowania w jakimś współczesnym języku. Obecnie w tej dziedzinie najłatwiej wykorzystać Pythona, w którym nie trzeba programować na bardzo wysokim poziomie. Naprawdę podstawy już wystarczą, żeby zacząć. Nie trzeba mieć w pamięci całej arytmetyki wskaźników (a można by się spodziewać czegoś skomplikowanego) albo nie trzeba znać wszystkich niuansów programowania obiektowego. Naprawdę: na start Python i podstawy.

Następnie należałoby wybrać jakąś bibliotekę do uczenia głębokiego. Ja osobiście polecałby zacząć od biblioteki Keras – jest to najłagodniejsze wejście do budowania i trenowania modeli. Na chwilę obecną mamy dwie główne biblioteki: TensorFlow od Google (Keras jest z nią zintegrowany), oraz PyTorch od Facebooka. Te biblioteki są dość podobne, ale na strat polecałbym właśnie Kerasa, który ma najprostszą składnię.

Dla kogoś, kto chciałby zrozumieć, co dzieje się pod spodem tych wszystkich algorytmów, uczenia maszynowego i deep learningu, zawsze polecałbym matematykę – odświeżyć sobie wiedzę z liceum, przypomnieć rachunek różniczkowy. To pozwoli zrozumieć, na czym polega proces trenowania – później już nie musimy się tym zajmować. Można trenować modele bez zrozumienia tego, ale dla higieny intelektualnej warto odświeżyć sobie matematykę i przez to wszystko przejść. Później można już się bawić i trenować.

Jeśli chodzi o zabawę – rok lub dwa lata temu widziałem, że Google udostępnia narzędzie, które pozwala budować swój model: wrzucamy grafiki, obrazy i na ich podstawie budowany jest model. Zastanawiam się, czy coś takiego jest teraz dostępne.

Nie wiem. Wiem, że Google udostępnia Google Colab. Jest to dostęp do klastra obliczeniowego, na którym możemy wykonywać obliczenia zdalnie. Nie musimy instalować żadnych bibliotek. W zasadzie piszemy kod w Pythonie i importujemy potrzebne biblioteki. Mamy też ograniczony w czasie dostęp do kart graficznych. Nie wiem, czy to miałeś na myśli.

Chyba tak. Ciężko mi już teraz… Ale myślę, że to było to. Czyli możemy przetestować sobie gotowe rozwiązania od Google’a i nic więcej nie potrzebujemy.

Dokładnie. Google Colab – możemy zacząć importować różne zbiory danych, np. zbiór danych MNIST, czyli odręcznie pisanych cyfr. Jest też kilka innych zbiorów danych, np. Fashion-MNIST.

Tak naprawdę więc próg wejścia jest coraz niższy, jeśli chodzi o uczenie maszynowe. Można się tym po prostu bawić.

Może wykorzystam to rozwiązanie do tego, żeby obliczyć, jak ustawić sobie ogrzewanie podłogowe, żeby zużywało jak najmniej energii.

To jest bardzo dobre zagadnienie.

Czyli mam dane: w jakim pokoju, jaka temperatura na piecu, jakie zużycie, i mam nadzieję, że coś z tego wyjdzie. Nie wiem, czy będę miał czas, ale ciekawe… Może wyszłoby z tego coś większego. Myślę, że wiele osób ma z tym problem, zwłaszcza że u nas jest po -10 czy -15 stopni.

To jest temat ważki. Warto się nad nim zastanowić.

 

Czy sztuczna inteligencja zastąpi programistów? Wspomniałeś o tworzeniu algorytmów przez sztuczną inteligencję – lepszych niż te, które wymyślili najlepsi programiści czy największe umysły na świecie. Ostatnio też bardzo popularne jest proponowanie kodu. Wielokrotnie widziałem, co generował ChatGPT na podstawie zapytania typu „stwórz slajder„ albo „stwórz algorytm”. Myślisz, że programiści mają czego się obawiać?

Myślę, że takie ogromne modele językowe jak ChatGPT na pewno odciążą programistów w ich codziennej pracy i pozwolą im szybciej generować taki „prosty, codzienny, powtarzalny kod”. Nie uważam, że programiści powinni się obawiać. Powinni widzieć w tym szansę na przyspieszenie swojego procesu produkcyjnego. Pod tym względem jest to ekstra narzędzie.

Myślę, że dobrzy programiści zawsze będą potrzebni, właśnie np. po to, żeby debugować lub optymalizować kod, który został zaproponowany przez taki model jak ChatGPT. Może być tak, że programiści w najbliższej przyszłości będą dostarczać rozwiązania dużo niższym kosztem dla firmy ich zatrudniającej. Można sobie wyobrazić sytuację, że zamiast 10 programistów do budowania np. jakiegoś dużego sklepu internetowego potrzebny będzie tylko jeden programista wyposażony w ChatGPT. Można też się spodziewać, że firma będzie chciała zatrudniać tych 10 programistów, każdego korzystającego z ChatGPT, ale będzie oczekiwała 10-krotnie szybciej dostarczonego produktu. Pod tym względem uważam, że programiści mają po prostu kolejne, wygodne narzędzie.

Trzeba jednak zaznaczyć, że takie modele jak ChatGPT są wytrenowane RAZ na podstawie dostarczonej porcji wiedzy i w chwili obecnej nie są w stanie aktualizować się automatycznie przez jakieś „podłączenie do Internetu” (cokolwiek by to znaczyło) – więc to, co teraz umie ChatGPT, przedstawia stan wiedzy na 2021 rok. Pod tym względem programiści są w stanie uczyć się nowych rzeczy szybciej. Codziennie jesteś w stanie aktualizować wiedzę z danych bibliotek – gdy jest jakiś nowy release biblioteki, aktualizacja. Ludzie zawsze będą w tym szybsi, bardziej agile.

Można też spodziewać się, że takie narzędzia jak ChatGPT stworzą zapotrzebowanie na nowe stanowiska pracy: będą potrzebne osoby, które mają bardzo dobrą wiedzę ekspercką i biorą czynny udział w generowaniu rozwiązań przy pomocy modeli językowych, potrafią bardzo szybko zweryfikować zaproponowane rozwiązania oraz dostosować je do wymogów klienta.

Może się zatem okazać, że firma jest w stanie wygenerować sobie sklep internetowy poprzez serię zapytań do ChatGPT i nie będzie zlecać jego wykonania firmie zewnętrznej. Będzie za to potrzebowała doświadczonego programisty, który w bardzo krótkim czasie dostosuje to rozwiązanie do potrzeb firmy.

Ja bym widział więc przede wszystkim możliwości dla programistów, nie zagrożenie.

Czyli narzędzie, a nie wróg.

Dokładnie tak.

No to super, większość osób będzie zadowolona, słysząc taką odpowiedź. Znam wiele osób, które już zaczęły się bawić tym, że można dość szybko otrzymać zaproponowany kod. Wiem, że GitHub też udostępnia narzędzie (akurat teraz zapomniałem, jak się nazywa), które można zintegrować ze swoim edytorem. Gdy napiszesz trochę kodu, narzędzie podpowiada Ci, co może być dalej. To też jest bardzo ciekawe.

 

Jaką książkę i materiały polecisz osobie, która chce lepiej poznać temat uczenia głębokiego? Wiem, że przygotowałeś sporą listę.

Trzeba zacząć od tego, że obecnie w Internecie jest ogromna ilość darmowych materiałów. Ta ilość jest wręcz przytłaczająca dla osoby, która chciałaby wejść w temat i zacząć od zera. Nie wiadomo, w co ręce włożyć. Dlatego pozwoliłem sobie przygotować własną listę, która w mojej opinii pozwala gładko wejść w tę tematykę.

Jeśli chcielibyśmy poznać klasyczne metody uczenia maszynowego, (czyli nie uczenie głębokie, tylko uczenie maszynowe klasyczne), to polecam dwa kanały na YouTubie: StatQuest i Serrano Academy. Mamy tam serię materiałów wideo, które omawiają kolejne algorytmy klasycznego uczenia maszynowego – od klasteryzacji danych, przez regresję, po drzewa losowe itd. Jest to przedstawione bardzo merytorycznie bez potrzeby zrozumienia matematyki na poziomie akademickim. Tak naprawdę więc każdy zainteresowany jest w stanie zdobyć potrzebną wiedzę i zrozumienie, jeśli chodzi o danych model.

Co do uczenia głębokiego – w mojej subiektywnej ocenie – najlepsze darmowe materiały ma MIT, który co roku udostępnia serię wykładów dla studentów tej uczelni: MIT Introduction to Deep Learning. Są to naprawdę świetnej jakości materiały wideo, które wprowadzają w kolejne zagadnienia sieci głębokich, dając niezbędne zrozumienie bez wchodzenia w zbyt duże szczegóły – ponieważ to może czasami przyćmić szerszy obraz.

Jest też kilka książek, które chciałby polecić. Jeśli ktoś jest zainteresowany historią rozwoju sztucznej inteligencji i głębokiej rewolucji, to poleciłbym historię rewolucji w uczeniu głębokim autorstwa Terrence’a Sejnowskiego: Deep Learning. Głęboka rewolucja.

Pod kątem programowania sieci neuronowych polecam podręcznik twórcy biblioteki Keras Francois Chollet: „Deep Learning, Praca z jezykiem Python i biblioteka Keras”. To jest naprawdę bardzo fajna książka, która pozwala siąść sobie z kawą i zacząć programować pierwsze modele, trenować je i zrozumieć, na czym to wszystko polega.

Dla chętnych, którzy chcieliby poznać podstawy uczenia głębokiego od strony matematycznej, polecam książkę Iana Goodfellowa: Deep learning. Jest to książka dostępna w PDF-ie za darmo na stronie autora.

A dla tych, którzy chcą zrozumieć głębokie podstawy matematyczne i rozpoznawanie wzorców danych, jest Pattern Recognition and Machine Learning autorstwa Christophera Bishopa. Książka ta również jest dostępna w PDF-ie z legalnego źródła.

Tu pozwolę sobie jeszcze zareklamować naszą książkę – to praca w dużej kolaboracji – która jest poświęcona zastosowaniom metod uczenia maszynowego w mechanice kwantowej, w chemii kwantowej, w symulatorach kwantowych, w komputerach kwantowych. Książka również jest dostępna w PDF-ie: Modern application of machine learning in quantum sciences. Została udostępniona w sieci w kwietniu tego roku i do tej pory jest chyba najbardziej kompletnym wprowadzeniem do wykorzystania uczenia maszynowego w fizyce kwantowej.

Myślę, że jeśli ktoś jest zainteresowany rozwojem w dziedzinie uczenia głębokiego, warto rozważyć ścieżkę rozwojową od Google w ramach TensorFlow Certificate. Jeśli ktoś poważnie zastanawia się nad taką ścieżką zawodową, warto zrobić sobie certyfikat po zdaniu kilkugodzinnego egzaminu. Materiały pozwalające przygotować się do tego egzaminu również są dostępne w Internecie – można sobie wygooglować 60-godzinny kurs poświęcony uczeniu głębokiemu sugerowany właśnie przez Google.

Osoby, które naprawdę chciałyby zacząć od zera, po przerobieniu wprowadzenia z MIT, pobawieniu się Kerasem, mogą śmiało wejść na ścieżkę certyfikowania od Google.

Obok TensorFlow jest oczywiście biblioteka PyTorch. Z tego, co wiem, jest ona obecnie najbardziej popularna w produkcji. Co prawda Facebook nie proponuje ścieżki certyfikatów, niemniej tej bibliotece też można poświęcić czas i się rozwijać. Jest wiele kursów na platformach e-learningowych, więc naprawdę warto po nią sięgnąć, jeśli ktoś jest zainteresowany.

Dodam od siebie: należy zauważyć, że właścicielami tych dwóch rozwiązań, o których wspominasz, są firmy, które mają chyba najwięcej danych na świecie.

Tak, zdecydowanie tak. Ale trzeba też przyznać i oddać tym wielkim graczom to, że wytrenowane modele są nam dostarczone, np. ChatGPT – mamy do tego modelu dostęp i możemy się nim bawić. W pewnym sensie więc dużo oni zyskują od społeczeństwa w postaci danych itd., ale potem te modele do nas trafiają.

Warto też dodać informację na temat modeli GPT służących np. do translacji tekstu – można taki wytrenowany model pobrać i „dotrenować” go do swoich potrzeb. Gdy mamy więc model przetwarzania języka naturalnego, jesteśmy w stanie pobrać wszystkie wagi (biblioteki to udostępniają) i zacząć trenować ostatnie warstwy, które są nam potrzebne do jakichś naszych zagadnień, np. obiegu dokumentów w firmie. Nie jest to więc strzeżona wiedza. Wyniki trenowania modeli są nam udostępniane.

Rozmawialiśmy trochę o aspektach filozoficzno-etycznych w zastosowaniu uczenia maszynowego dla społeczeństw, w związku z czym chciałbym polecić trzy książki.

Pierwsza to Broń matematycznej zagłady Cathy O’Neil – autorka skupia się na negatywnych konsekwencjach ślepego wdrażania modeli uczenia maszynowego, które były trenowane na nieobiektywnych lub surowych danych oderwanych od kontekstu społecznego. Autorka pokazuje, jak ślepe stosowanie uczenia maszynowego na dużą skalę, może pogłębiać nierówności społeczne – a zatarcie takich podziałów będzie coraz trudniejsze wraz ze ślepym stosowaniem i wdrażaniem uczenia maszynowego do społeczeństw.

Druga książka The Myth of Artificial Intelligence. Why Computers Can’t Think the Way We Do Erika Larsona omawia różnice pomiędzy tym, co wiemy o ludzkiej inteligencji, a tym, w jakim kształcie obecnie rozważamy sztuczną inteligencję. To jest coś, co wspomnieliśmy na samym początku: że nie mamy jeszcze ogólnego zrozumienia, czym jest sztuczna inteligencja. Mamy na razie tylko instancję ludzkiej inteligencji i próby stworzenia sztucznej inteligencji, ale brakuje nam szerszego obrazu.

No dobrze, Marcinie. Jeżeli ktoś chce się zająć tym tematem, to widzę, że ma co robić przez najbliższe kilka lat.

 

Gdzie możemy Cię znaleźć w sieci?

Można znaleźć mnie na Linkedinie, a tam jest adres do mojej strony domowej.

To może powiedz, jaki to jest adres.

Wystarczy wygooglować „Marcin Płodzień physics” – będzie to pierwszy link odnoszący do mojej strony domowej.

 

Marcinie, bardzo dziękuję Ci za tę rozmowę. Sporo informacji, sporo materiałów. Naprawdę jestem w szoku, ile tego jest, ile można się tego uczyć i jak to może być pomocne. Bardzo Ci dziękuję, że przedstawiłeś nam tę wizję przyszłości.

Bardzo dziękuję za zaproszenie. Zawsze z przyjemnością dzielę się wiedzą i doświadczeniem,. Gdyby ktokolwiek był zainteresowany i chciał porozmawiać o uczeniu maszynowym lub dowiedzieć się, jak zacząć, proszę do mnie śmiało pisać – ja zawsze chętnie odpowiem. Możemy umówić się na Skypie i pogadać o czymkolwiek związanym z uczeniem maszynowym.

Znam wielu ludzi, którzy podjęli próbę zabawy tą tematyką, ale niestety ugrzęźli w gąszczu materiałów i nie wiedzieli, co robić na początku, więc się zrazili – a jest to świetna przygoda i naprawdę można mieć świetne hobby. Niekoniecznie trzeba być inżynierem pracującym z uczeniem maszynowym, ale można czasami fajnie spędzić sobotnie wieczory, bawiąc się np. ChatGPT.

I może można też określić, jak poustawiać ogrzewanie podłogowe.

Myślę, Mateusz, że musimy spróbować zadać to pytanie.

Dobrze. To jeszcze raz: dzięki, trzymaj się!

Dziękuję, cześć!

Polecana książka

Modern applications of machine learning in quantum sciences
Praca zbiorowa (jednym z autorów jest Marcin Płodzień)

Słuchaj także na:

Udostępnij ten artykuł:

Polecana książka

Modern applications of machine learning in quantum sciences
Praca zbiorowa (jednym z autorów jest Marcin Płodzień)

Mentoring to efektywna nauka pod okiem doświadczonej osoby, która:

  • przekazuje Ci swoją wiedzę i nadzoruje Twoje postępy w zdobywaniu umiejętności,
  • uczy Cię dobrych praktyk i wyłapuje złe nawyki,
  • wspiera Twój rozwój i zwiększa zaangażowanie w naukę.

Mam coś dla Ciebie!

W każdy piątek rozsyłam motywujący do nauki programowania newsletter!

Dodatkowo od razu otrzymasz ode mnie e-book o wartości 39 zł. To ponad 40 stron konkretów o nauce programowania i pracy w IT.

PS Zazwyczaj wysyłam 1-2 wiadomości na tydzień. Nikomu nie będę udostępniał Twojego adresu e-mail.