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

🔴 OSTATNI DZIEŃ SPRZEDAŻY (do 23.01) 10-miesięczny kurs front endu 🔴

Uczenie głębokie: odkrycia naukowe, nowe algorytmy i komputery kwantowe

Może to branża dla Ciebie?

Doktor Marcin Płodzień opowiada o odkryciach z dziedziny uczenia maszynowego. Dowiadujemy się, jaki ma ono związek z uczeniem głębokim i na jakie kategorie się dzieli. Omawiamy również trenowanie modelu, np. do rozróżniania abstrakcyjnych pojęć, oraz to, czy ChatGPT jest już sztuczną inteligencją. Odcinek stanowi pierwszą część rozmowy z dr. Płodzieniem.

Poruszane tematy

  • Czy możesz się przedstawić i powiedzieć, co łączy Cię z branżą IT?
  • Czy możesz powiedzieć, co to jest ChatGPT?
  • Czym jest uczenie maszynowe i w jaki sposób łączy się z tematem sztucznej inteligencji?
  • Czym jest sztuczna inteligencja?
  • Czy możesz podać jakieś przykłady wyjaśniające, czym jest sztuczna inteligencja?
  • Czy i kiedy możemy spodziewać się powstania sztucznej inteligencji? A może ona już istnieje i jest nią ChatGPT?
  • Kiedy w ogóle rozpoczęły się badania nad sztuczną inteligencją?
  • Czym dokładnie jest uczenie maszynowe?
  • Czym jest model uczenia maszynowego?
  • Czym jest uczenie głębokie?
  • W jaki sposób dobieramy wagi przy trenowaniu modelu?
  • Czym różni się deep learning od klasycznego uczenia maszynowego?
  • Są różne rodzaje/metody/podkategorie uczenia maszynowego. Czy możesz powiedzieć o nich coś więcej i podać przykłady zastosowania?
  • Możesz podać przykłady wykorzystania uczenia głębokiego w obecnym świecie?
  • Czym różnią się od siebie różne sieci neuronowe?

Polecane książki i materiały

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

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

➡ Luis G. Serrano, „Grokking Machine Learning”

➡ Andrew Trask, „Grokking Deep Learning”

➡ Miguel Morales, „Grokking Deep Reinforcement Learning”

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

„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

Dziś moim gościem jest doktor Marcin Płodzień. Marcin opowie nam o odkryciach naukowych z zakresu uczenia maszynowego, o uczeniu głębokim i sztucznej inteligencji.

Marcinie, dziękuję, że przyjąłeś moje zaproszenie na rozmowę!

Dzięki również za zaproszenie, bardzo mi miło spotkać się z Tobą.

 

Marcinie, to nie nasze pierwsze spotkanie, ale tradycją jest, by się przedstawić i powiedzieć, co się robi i jaki ma się związek z branżą IT.

Jasne. Obecnie odbywam staż podoktorski w Instytucie Badań Fotonicznych w Barcelonie, gdzie pracuję głównie nad symulatorami kwantowymi i wykorzystaniem metod uczenia głębokiego w mechanice kwantowej. Z zawodu jestem fizykiem i zajmuję się naukową pracą badawczą.

A może byś coś dodał – że w zasadzie w pracy programujesz?

Tak, tak, programowanie jest dla mnie codziennością, podstawowym narzędziem badawczym. Przeprowadzam symulacje numeryczne układów kwantowo-mechanicznych. Na co dzień więc, można powiedzieć, jestem programistą.

 

Dziś mieliśmy zacząć trochę od czegoś innego, ale w między czasie pojawiło nam się coś takiego jak ChatGPT, który trochę zawojował Internet. Z racji tego, że dzisiaj mówimy o sztucznej inteligencji i uczeniu maszynowym, może powiedziałbyś nam, co to jest ten ChatGPT?

ChatGPT (Generative Pre-trained Transformer) to wytrenowany model sieci neuronowej skoncentrowany na analizie i przetwarzaniu języka naturalnego z uwzględnieniem kontekstu. Tak na dobrą sprawę, to to, co widzi użytkownik, który loguje się na stronę poświęconą temu modelowi, to chat-bot – czyli system, z którym możemy wejść w interakcję, zadając mu pytania przez terminal komputerowy.

Możemy więc zadać pytanie na jakiś konkretny temat, np. o fakt historyczny czy wygenerowanie ostatniej zwrotki naszej ulubionej piosenki. ChatGPT jest bardzo dużym przełomowym modelem w dziedzinie uczenia maszynowego, ponieważ poziom odpowiedzi, które otrzymujemy, jest naprawdę bardzo bliski temu, czego moglibyśmy spodziewać się po rozmowie z ludzkim ekspertem z dowolnej dziedziny. To jest naprawdę imponujące.

Zdecydowanie tak. Wiem, że trochę będziemy mówić także o teście Turinga. W zasadzie ten program nie przeszedłby testu Turinga, bo odpowiada zbyt dobrze. Jest w stanie odpowiedzieć na wszystko, co chcemy, i to jest podejrzane. Nie sądzisz?

Tak, zgadza się.

Ci, którzy są zainteresowani tym, jak działa ChatGPT, będą mogli dowiedzieć się na ten temat trochę więcej podczas dzisiejszej rozmowy.

 

Czym jest uczenie maszynowe i w jaki sposób łączy się z tematem sztucznej inteligencji?

Uczenie maszynowe jest dziedziną nauki na styku matematyki i informatyki, która dostarcza algorytmów i metod analizy danych, pozwalając uzyskiwać „wiedzę z danych” (z tekstów, z materiałów audio – po prostu z liczb) dobrze rozumianą przez komputery.

Uczenie maszynowe jest poddziedziną sztucznej inteligencji, natomiast uczenie głębokie jest poddziedziną uczenia maszynowego. Jest to taka hierarchiczna struktura.

 

Czym jest sztuczna inteligencja?

To jest bardzo dobre pytanie. Dziś najbardziej uczciwą odpowiedzią jest powiedzenie, że my tak naprawdę nie mamy dobrej definicji sztucznej inteligencji. Mamy kilka podejść do zdefiniowania sztucznej inteligencji, ale te definicje nie są bardzo dobrze osadzone w wiedzy na temat tego, czym jest inteligencja w ogóle.

Możemy intuicyjnie powiedzieć, czym jest sztuczna inteligencja. Jest próbą stworzenia maszyn czy komputerów, które byłyby w stanie funkcjonować w podobny sposób, jak funkcjonuje ludzki umysł w kwestii przyswajania wiedzy, uzyskiwania abstrakcji wiedzy, konceptualizacji różnych pojęć, procesów uczenia i wnioskowania. To jest to wszystko, co my jako ludzie (choć nie tylko, ponieważ zwierzęta – jak już wiadomo – też potrafią bardzo wiele, jeśli chodzi o inteligencję) potrafimy zrobić. Co żywe organizmy potrafią zrobić. Potrafimy uczyć się na podstawie doświadczeń zdobywanych wskutek interakcji z otoczeniem, potrafimy operować abstrakcyjnymi pojęciami, np. abstrakcyjnym pojęciem psa. Mówiąc „pies”, bardzo ogólnie rozumiemy, czym jest pies. Nie jesteśmy przywiązani do jednej konkretnej instancji psa. Może to być zdjęcie psa, nasz ulubiony pies, film o psie lub dźwięk szczekającego psa.

Systemy sztucznej inteligencji mają postawionych przed sobą kilka wyzwań: zdolność do abstrakcji, konceptualizacji i wnioskowania. Jeżeli te trzy rzeczy zostaną uzyskane, to będzie można powiedzieć, że mamy w jakimś stopniu sztuczną inteligencję. Na chwilę obecną, moim zdaniem, nie jesteśmy jeszcze na etapie, kiedy możemy powiedzieć „stworzyliśmy sztuczną inteligencję”.

 

A możesz podać jakieś przykłady?

W zasadzie te wszystkie trzy wyzwania, które stoją przed sztuczną inteligencją, możemy odnieść do muzyki. Każdy z nas rozumie, czym jest muzyka – jest to pewna idea, pewien koncept. Chcielibyśmy, aby maszyna też potrafiła zrozumieć, czym jest muzyka.

Wiemy wszyscy, że muzyka może mieć różne poziomy reprezentacji: może to być utwór słyszany na żywo, muzyka może być zapisana na nośniku CD lub kasecie, może to być plik audio lub zapis nutowy. Ten sam utwór ma swoje różne reprezentacji i my jako ludzie – jednostki myślące – jesteśmy w stanie powiedzieć, że to jest ta sama instancja w różnych reprezentacjach. Dla komputerów nie jest to oczywiste, ponieważ w różnych reprezentacjach mają różne informacje: czy to zapis bitowy, czy zapis w postaci nośnika magnetycznego itd.

Chcemy, aby maszyna potrafiła odzyskiwać abstrakt tej wiedzy, a następnie dokonywać wnioskowania. Przykładem jest tutaj człowiek uczący się grać na jakimś instrumencie. W początkowym etapie uczymy się grać obce utwory, odtwarzamy inne dzieła muzyczne, aż w pewnym momencie zaczynamy tworzyć nową muzykę (jeżeli ktoś ma dużo talentu). I tego właśnie oczekuje się od systemów sztucznej inteligencji – tworzenia nowych treści na podstawie zdobytej wcześniej wiedzy.

To, co już wiemy na temat inteligencji czy zdolności kognitywnych, to to, że – jak już powiedziałem – mają je ludzie, ale też zwierzęta. Są na przykład badania nad gołębiami, które potrafią wyekstrahować abstrakt drzewa. Był eksperyment, w którym za każdym razem, gdy pokazywano zdjęcie drzewa wybranemu gołębiowi, a on uderzył w to drzewo dziobem, dostawał ziarno. Pokazywano mu różne zdjęcia z różnymi reprezentacjami drzew, ale pokazywano też zdjęcie krzewu. Powtarzano to wielokrotnie i na podstawie tego można było wnioskować, że gołąb rozróżnia drzewa od krzewów. To jest właśnie przykład inteligencji, którą chcielibyśmy umieć stworzyć sztucznie.

W tym momencie, gdy mówimy o sztucznej inteligencji, ChatGPT itd. warto przytoczyć test Turinga. Został on zaproponowany przez jednego z twórców badań nad sztuczną inteligencją – Alana Turinga. Polega na prowadzeniu dialogu człowieka z maszyną poprzez zdalny terminal komputerowy. Maszyna zdaje test Turinga (jest uznawana za inteligentną) wtedy, kiedy człowiek nie jest w stanie powiedzieć, czy rozmawia z maszyną czy człowiekiem. Mówi się, że jest to „papierek lakmusowy” układów sztucznej inteligencji – czy potrafią one zdać test Turinga, czy nie.

Zawsze myślałem o tym w takim kontekście, że komputer musi być na tyle mądry, by być na takim samym poziomie co człowiek. A w zasadzie ChatGPT pokazuje, że już jest ponad nami – tak w skrócie.

Tak.

Teraz problem jest w drugą stronę. Czy ten aspekt jest poruszany?

Tak, jest poruszany. Już nie pamiętam konkretnego nazwiska, ale ktoś zwrócił uwagę, że kiedy maszyna odpowiada za szybko, oblewa ona test. Kiedy zapytamy ją o wynik mnożenia dwóch wielkich liczb, od razu można rozpoznać, że odpowiedź została udzielona przez maszynę – wynik jest podawany natychmiastowo. Teraz staramy się uczyć maszyny w taki sposób, aby były zdolne do oszukiwania rozmówców – żeby potrafiły rozpoznać, które pytania są trudne dla człowieka, a łatwe dla maszyn.

W pewnym sensie zdolności maszyn oraz zdolności ludzkiego mózgu są rozłączne. To, co dla nas jest bardzo trudne – czyli operacje matematyczne na wielkich liczbach – dla komputerów to pestka. A to, co dla nas jest łatwe – czyli ekstrakcja wiedzy na podstawie danych ze zdjęć, z muzyki, z nośników treści – dla maszyny nie jest oczywiste. Bardzo znanym przykładem jest tutaj seria zdjęć muffinek i śpiącego chihuahua. Maszyna prawdopodobnie w pewnym momencie nie jest w stanie rozróżnić muffinek z rodzynkami od śpiącego chihuahua. My potrafimy, a maszyna nie. To pokazuje, że mamy różne umiejętności.

 

Czy i kiedy możemy spodziewać się powstania sztucznej inteligencji? A może ona już istnieje i jest nią ChatGPT?

To jest bardzo dobre pytanie. Jest pytaniem dość złożonym, bo tak jak powiedzieliśmy wcześniej, trudno nam zdefiniować na chwilę obecną pojęcie inteligencji. Nawet jeśli zrozumiemy, czym jest ludzka inteligencja, pozostaje otwartym pytanie, jak zdefiniować inteligencję ogólnie, a następnie stworzyć inteligentne maszyny.

Przykładem, który dobrze unaocznia naturę problemu, jest zagadnienie lotnictwa: przed rozwojem nowoczesnej nauki, czyli powiedzmy do czasów Izaaka Newtona, ludzie próbowali tworzyć maszyny latające na wzór obserwacji przyrody, w szczególności ptaków.

Można znaleźć renesansowe ryciny autorstwa Leonarda da Vinci, który projektował z drewna, skóry i kawałków materiału przyczepiane do pleców skrzydła, które były poruszane siłą ludzkich mięśni. Oczywiście nic z tego nie miało prawa działać. Niemniej podejściem Leonarda była wtedy imitacja obserwowanej natury.

Dopiero dzięki powstaniu nowoczesnej nauki, wraz z powstaniem analizy matematycznej, rachunku różniczkowego i nowoczesnej matematyki, można było formułować modele matematyczne, które opisywały obserwowaną przyrodę.

Z biegiem rozwoju matematyki i fizyki powstała teoria hydrodynamiki/aerodynamiki. Na podstawie jej przewidywań, czyli teorii przepływu cieczy, ludzie zrozumieli, że maszyny latające są możliwe do skonstruowania, ale należy odejść od próby imitacji ptaków i sięgnąć po przewidywania bardziej fundamentalnej teorii, jaką w tym wypadku była właśnie aerodynamika.

Podobnie jest z inteligencją – nawet jeśli uda nam się zdefiniować pojęcie ludzkiej inteligencji, pozostaje pytanie, czy stworzenie inteligentnych maszyn na podobieństwo ludzi nie jest tym samy, co próba konstrukcji maszyn latających w stylu Leonarda da Vinci poprzez obserwację i naśladowanie ptaków. Potrzeba nam ogólnego zrozumienia, czym jest inteligencja. Tym obszarem badań zajmują się takie dziedziny nauki, jak psychologia, nauki kognitywne lub – na poziomie bliższym badaniom nad mózgu – biologia czy neurobiologia.

 

Wróćmy w takim razie do początku. Kiedy w ogóle rozpoczęły się badania nad sztuczną inteligencją?

Za początek badań nad sztuczną inteligencją zwyczajowo przyjmuje się szkołę letnią organizowaną przez Johna McCarthy w Dartmouth (The Dartmouth Summer Research Project on Artificial Intelligence) w 1956 roku. Była to szkoła, w której zebrano fizyków, matematyków, biologów w celu zainicjowania badań nad pojęciem sztucznej inteligencji, nad teorią uczenia maszynowego. Można powiedzieć, że tam miały swoje początki pierwsze koncepty.

Następnie w 1962 roku Frank Rosenblatt opublikował książkę Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms, w której wprowadził pojęcie algorytmu uczącego dla modeli sieci neuronowych z pojedynczą warstwą o różnych wagach. Był to pierwowzór dzisiejszych algorytmów uczących dla modeli głębokich sieci neuronowych.

Widzimy zatem, że badania nad sztuczną inteligencją mają już kilkadziesiąt lat. Początkowo ludzie chcieli zagrać z bardzo wysokiego poziomu, chcieli od razu stworzyć ogólną sztuczną inteligencję i to okazało się bardzo trudne.

Dopiero na pewnym etapie stwierdzono, że lepiej jest starać się tworzyć systemy wyspecjalizowane w konkretnych zagadnieniach. Jednym z takich zagadnień jest analizowanie dużych zbiorów danych i wyciąganie z nich wszelkiego rodzaju korelacji. Tym właśnie zajmuje się dziś uczenie maszynowe, które jest podzbiorem badań nad sztuczną inteligencją.

 

Czym dokładnie jest uczenie maszynowe?

W standardowym podejściu do programowania możemy powiedzieć, że dysponujemy danymi wejściowymi oraz algorytmem. W wyniku wykonania programu na dostarczonych danych otrzymujemy rezultat wykonania naszego programu.

Przykładem może być napisanie kodu do rozpoznawania psów i kotów z fotografii. W standardowym podejściu do programowania należałoby napisać analizujący każdą fotografię algorytm, który ma dużo instrukcji if…then – warunków, w wyniku których program może powiedzieć, czy na danym zdjęciu jest pies czy kot. Można sobie wyobrazić, jak trudne jest to zadanie, kiedy mamy fotografie o różnej rozdzielczości, różnym oświetleniu, różnym stopniu zaszumienia, a zwierzęta są różnych rozmiarów oraz w różnych orientacjach. Udoskonalanie takiego programu będzie coraz trudniejsze.

Uczenie maszynowe działa w inny sposób, w którym kluczowa jest analiza dostarczonych danych, tzw. danych treningowych. Można spotkać się z określeniem „knowledge based programming” lub „programowanie oparte na wiedzy”. W tym wypadku dostarczamy zbiór fotografii psów i kotów, gdzie każda z fotografii oznaczona jest jako „pies” lub „kot”. Teraz ten zestaw danych wprowadzamy do naszej maszyny lub modelu (czym dokładnie jest model powiemy za chwilę).

Pomijając to, czym jest model, warto powiedzieć, że następuje proces trenowania modelu. Model analizuje kolejne fotografie oraz ekstrahuje cechy charakterystyczne dla kotów i dla psów. W momencie, gdy model jest już wytrenowany, możemy mu podać jakąś zupełnie nową fotografię naszego pupila i będzie no umiał powiedzieć, czy na fotografii jest pies czy kot – z pewna określoną dokładnością.

Wydaje się to, że jest to dość trudne, by program mógł to zrobić. Zastanawiam się, o jakiej liczbie porównań jest mowa. Pewnie zależy to od problemu, ale chodzi o tysiące, dziesiątki tysięcy czy miliony porównań?

Najbardziej znany zbiór danych treningowych – kiedy chcemy rozpocząć zabawę z uczeniem głębokim – to zbiór odręcznie napisanych cyfr, tzw. zbiór danych MNIST. Zawiera on 60 tys. danych treningowych, czyli 60 tys. instancji cyfr od 0 do 9 napisanych ręcznie.

To jest 60 tys. instancji jednej cyfry czy wszystkich razem?

Wypada 6 tys. na jedną cyfrę.

Przychodzi mi tu do głowy CAPTCHA. Tam musimy pokazywać, że jesteśmy ludźmi. Rozumiem, że w ten sposób dostarczamy wiedzy modelowi. Nie wiem po co i dlaczego, ale zawsze trzeba zaznaczyć, czy np. jest to sygnalizacja świetlna. Zastanawiam się, czy jest to wykorzystywane do tworzenia autonomicznych samochodów – żeby lepiej rozpoznawały one takie elementy.

Nie zdziwiłbym się, gdyby ta informacja była zbierana za każdym razem, gdy CAPTCHA jest używana, a potem wykorzystywana do trenowania różnych modeli z wizji komputerowej. Nie jest to więc tak mało prawdopodobne.

To już wiemy, że jesteśmy trochę wykorzystywani.

Tak.

Powiedzieliśmy więc o trenowaniu modelu. Czy chciałbyś tu coś dodać?

Tak. Podsumowując, możemy powiedzieć, że dziś uczenie maszynowe to sposób tworzenia oprogramowania, w którym podajemy zbiór danych treningowych wraz z oczekiwanym rezultatem, i w wyniku trenowania otrzymujemy działający program. To tak słowem podsumowania – czym jest uczenie maszynowe i na czym ono ogólnie polega.

 

Czym w takim razie jest model?

To też bardzo ciekawe pytanie, ponieważ tutaj pojęcie modelu zależy od tego, czy mówimy o modelu w uczeniu głębokim, czy w tzw. klasycznym uczeniu maszynowym. Zacznijmy od klasycznego uczenia maszynowego.

W klasycznym uczeniu maszynowym model to tak naprawdę algorytmy do analizy statystycznej – są to pojęcia z matematyki, z teorii statystyki.

Posłużmy się tutaj najprostszym przykładem regresji liniowej, której celem jest jak najlepsze dopasowanie linii prostej do podanych danych. Za przykład często podaje się tu problem wyceny mieszkań w USA na podstawie ich liczby pokoi, powierzchni i lokacji. Naszym modelem – w zależności od ceny domu i jego powierzchni – jest linia prosta.

Kiedy wypiszemy sobie np. liczbę pokoi na osi poziomej, a na osi pionowej będziemy odkładać cenę takiego mieszkania, możemy zobaczyć, że dane te układają się w linii prostej. Wystarczy wówczas dopasować tę linię prostą do zbioru danych. Naszym modelem w tym wypadku jest właśnie ta linia prosta. Gdy mamy nową instancję danych – czyli gdy do agencji mieszkaniowej przychodzi klient i mówi „mój dom ma cztery pokoje, powiedzcie, ile jest on wart” – to agent nieruchomości bierze tę linię prostą i patrzy: „dla takiej liczby pokoi mamy taką cenę zgodnie z danymi rynkowymi”. I to jest taki najprostszy, najbardziej intuicyjny przykład tego, czym jest model uczenia maszynowego. Tu jest to linia prosta.

Innym modelem może być np. model służący do klasteryzacji danych oparty o analizę głównych składowych, tzw. PCA (principal component analysis). Wyobraźmy sobie rekord w naszej bazie danych, który ma 10 elementów liczbowych. Każdy taki wiersz zawiera informacje np. o danym kliencie. Chcielibyśmy zadać pytanie, czy nasi klienci dzielą się na jakieś wyraźnie rozłączne grupy – czyli chcielibyśmy dokonać klasteryzacji danych, a następnie to zwizualizować.

Każdy rekord w naszej bazie danych jest wektorem o 10 elementach, czyli w ujęciu matematycznym należy do przestrzeni 10-wymiarowej. Jak wiemy, trudno nam coś narysować w więcej niż 2 wymiarach. Dlatego tutaj z pomocą przychodzi algebra i statystyka, czyli analiza głównych składowych.

Pomijając szczegóły techniczne, w najprostszym ujęciu algorytm analizy głównych składowych polega na znalezieniu dwóch prostopadłych wektorów leżących w naszej rozważanej 10-wymiarowej przestrzeni. Wyznaczenie wspomnianych wektorów opiera się na analizie dostarczonych danych o klientach.

Następnie rzutujemy każdy rekord z naszej bazy na oba wyznaczone wektory i tym samym dostajemy dwie liczby, które traktujemy jak współrzędne punktu na płaszczyźnie.

Po wykonaniu takiej operacji na całym zbiorze danych, możemy spodziewać się zobaczenia oddzielnych klastrów punktów na naszej dwuwymiarowej abstrakcyjnej płaszczyźnie, co pozwala wnioskować, że nasi klienci dzielą się na pewne charakterystyczne grupy. Na podstawie takiej analizy, można zaproponować ofertę biznesową dostosowaną do potrzeb każdej z grup. Naszym modelem są właśnie wyznaczone dwa charakterystyczne prostopadłe wektory.

Teraz, gdy pojawia się nowy klient ze swoim nowym rekordem w bazie danych, możemy stwierdzić, do której grupy klientów on należy, i zaoferować mu odpowiednią ofertę.

To jest taki najprostszy przykład, zakładający, że relacje między cechami (w terminologii używamy pojęcia features) u naszych klientów są liniowe. Kiedy to założenie nie jest prawdą, trzeba sięgnąć po inne narzędzia do analizy statystycznej i rozważyć inny model.

To, na co warto zwrócić uwagę, to fakt, że modele uczenia maszynowego fundamentalnie są metodami ze statystyki.

Oddzielnym pytaniem jest: które cechy wyróżniają oddzielne grupy klientów? Tutaj wchodzimy w zagadnienie inżynierii cech modelu, tzw. feature engineering. Może się zdarzyć, że jakiś model lepiej poradzi sobie np. z klasteryzacją danych, gdy stworzymy nową cechę z dwóch już istniejących. Uzyskiwanie/tworzenie nowych cech z danych jest dość skomplikowanym zagadnieniem i zazwyczaj poświęca się mu bardzo dużo czasu w procesie budowania modeli.

Możemy sobie wyobrazić, że w naszym zbiorze danych mamy dwie cechy, które na pierwszy rzut oka są niezależne od siebie, ale po kilku próbach może okazać się że warto do modelu wprowadzić dodatkową cechę, która jest np. iloczynem dwóch rozważanych wielkości. Może okazać się, że wytrenowanie modelu z taką nową informacją polepszy wynik przewidywań modelu.

Wygląda na to, że jest to bardzo trudny temat – że trzeba dużo się napracować, by coś z tego wywnioskować. Pewnie jednak wygląda to tak, że trzeba podjąć 100 prób i może jedna wyjdzie. Czy tak to faktycznie wygląda?

Dokładnie tak. Budowanie nowych cech to w pewnym sensie sztuka. Tutaj zdobywamy doświadczenie przez wiele podejść, wiele zagadnień z różnych dziedzin. Można zacząć rozumieć, które cechy warto analizować, a których nie. Nie ma jednej metody, która mówi, jak należy do tego tematu podejść.

Z tego, co mówisz, to obecnie nie chyba w ogóle szans, żeby zbudować ogólną sztuczną inteligencję. Bo skoro mamy do trenowania model, który potrzebuje ileś podejść (powiedzmy, że na każde podejście schodzi nam miesiąc albo rok), to ciężko zrobić coś, co będzie super ogólne.

Tak. Może to konstruowanie cech charakterystycznych nie jest aż tak czasochłonne – nie mierzymy tego w miesiącach i latach – ale nie jest to proces automatyczny. Dlatego dużym game changerem w dziedzinie badań nad sztuczną inteligencją były głębokie sieci neuronowe. Jest to podzbiór uczenia maszynowego. W nim ekstrakcja kluczowych cech jest niejako zautomatyzowana. Nie robi tego człowiek, tylko sieci neuronowe same wyszukują kluczowe ficzery. To był game changer jeśli chodzi o postęp w uczeniu maszynowym i w badaniach nad sztuczną inteligencją.

 

W takim razie posłuchajmy, czym jest uczenie głębokie.

Uczenie głębokie (ang. deep learning) jest podzbiorem algorytmów i metod uczenia maszynowego. Jest to dziedzina informatyki i matematyki (obecnie również inżynierii), w której „maszyna” ma pewną konkretną strukturę, tzw. strukturę warstwową, składającą się z połączonych ze sobą węzłów. Podstawowym budulcem sieci neuronowej jest tzw. perceptron – uproszczony model neuronu biologicznego, który jest podstawowym budulcem naszego układu nerwowego.

Działanie neuronu biologicznego jest modelowane właśnie perceptronem. Perceptron to funkcja sparametryzowana zestawem wag, która przyjmuje wektor liczb. Każda z liczb wejściowych jest przemnożona przez odpowiednią wagę. Wszystkie wyniki mnożenia sumujemy i jeżeli wyjściowa suma jest mniejsza od jakiejś krytycznej wartości, to na wyjściu funkcji mamy 0, a kiedy jest wyższa od pewnej krytycznej wartości, to zwyczajowo wartość funkcji na wyjściu wynosi 1. Ten ostatni element – czyli przełączenie między 0 a 1 – jest przykładem operacji nieliniowej.

Sieć neuronowa składa się z wielu połączonych ze sobą perceptronów. Można powiedzieć – jeszcze raz podsumowując – że sieć neuronowa jest to nieliniowa funkcja, która na wejściu przyjmuje zestaw liczb w postaci wektora, a na wyjściu podaje inny zestaw liczb, będących wynikiem operacji dodawania, mnożenia i działania jakiejś funkcji nieliniowej.

Warto tutaj podkreślić, że sieć neuronowa może nauczyć się odwzorowywać dowolny zbiór danych. Jeśli wygenerujemy sobie losowy zbiór punktów na płaszczyźnie, to sieć neuronowa jest w stanie dopasować funkcję interpolującą między takimi punktami. Jednym słowem sieć neuronowa może nawet nauczyć się odwzorowywać szum. Ma to bardzo ważne konsekwencje w trenowaniu modeli i w jakości danych w myśl zasady garbage in, garbage out.

Jeżeli dobrze Cię rozumiem, to sieci neuronowe w zasadzie działają w taki sposób, że przekazujemy do nich jakieś wartości liczbowe, na których możemy wykonać operacje matematyczne, i na wyjściu otrzymujemy wartość między 0 a 1, którą możemy interpretować jako prawdę lub fałsz – w zależności od tego, do której liczby jesteśmy bardziej zbliżeni. Czy tak to moglibyśmy sobie zobrazować?

W zasadzie tak.

Przemianowałem to bardziej na język, powiedziałbym, programistyczny, bo tak jest mi to łatwiej zrozumieć niż „po matematycznemu/fizycznemu”. Zawsze, gdy czyta się „funkcje” w sensie matematycznym czy fizycznym, to ludzie są zdystansowani. Starałem się więc przenieść to na słowa bliższe temu, co mi jest bliskie na co dzień.

Rozumiem. To jest w stu procentach prawda – że mamy pewną funkcję, która transformuje nam coś z wejścia w liczby z zakresu 0-1, gdzie 0 utożsamiamy z zupełnym fałszem, a 1 ze stuprocentową pewnością (prawdą) – może być liczba z tego zakresu 0-1.

OK, to kontynuuj, bo chyba Ci przerwałem.

Ważnym pytaniem jest, w jaki sposób dobieramy wagi, ponieważ nasza sieć neuronowa jest sparametryzowana wagami. Model jest wytrenowany wtedy, kiedy mamy dobrane odpowiednie wagi.

 

W jaki sposób dobieramy te wagi?

Dobór wag, czyli trenowanie modelu, jest oparte na analizie danych wejściowych. Wróćmy do przykładu fotografii zdjęć psów i kotów. Dla uproszczenia przyjmijmy, że są to fotografie czarno-białe o jakiejś konkretnej stałej rozdzielczości, np. 50x50 pikseli. Każda fotografia z punktu widzenia komputera jest wektorem liczb o długości 2500 pikseli. Teraz zakładamy, że nasza sieć neuronowa jest funkcją, która na wejściu przyjmuje wektor o długości 2500 elementów, a na wyjściu daje dwie liczby, których suma musi równać się 1. Umawiamy się, że jeśli pierwsza wartość wynosi 1, a druga 0, to wynik interpretujemy w taki sposób: na wejściu podaliśmy zdjęcie kota. Jeżeli mamy odwrotną sytuację, to na wejściu mieliśmy zdjęcie psa.

Teraz możemy powiedzieć, na czym polega trenowanie modelu, czyli dobieranie wag. Bierzemy przykładową fotografię o etykiecie „kot” (wiemy, że to jest kot) i przepuszczamy ją przez nasz model z jakimiś początkowo losowo dobranymi wagami: podajemy wektor 2500 pikseli i obserwujemy, jaka jest wartość funkcji na końcu (czyli patrzymy, jaka jest predykcja modelu). Na podstawie różnicy pomiędzy prawdziwą etykietą klasy (czyli kotem) a tym, co nam model przewidział, staramy się w sposób zautomatyzowany dobrać wagi, – tak aby predykcja dla znanej instancji klasy była taka, jak tego byśmy chcieli (czyli żebyśmy mieli kota).

To takie bardzo ogólne przedstawienie problemu bez wchodzenia w szczegóły, ale generalnie kluczowe jest to, by wiedzieć, że trenowanie modelu polega na porównywaniu wyjścia modelu z tym, co dostał na wejściu, i dobieranie wag w ten sposób, aby ta różnica była jak najmniejsza. Kiedy uda nam się osiągnąć minimum tej różnicy, to możemy powiedzieć, że model jest dobrze wytrenowany.

 

Czym różni się deep learning od klasycznego uczenia maszynowego?

Można powiedzieć, że w uczeniu głębokim nie musimy zajmować się ekstrakcją kluczowych cech – sieć w procesie trenowania sama znajduje kluczowe cechy, które pozwalają dokonywać właściwej klasyfikacji.

Tutaj dobrym przykładem są tzw. konwolucyjne sieci neuronowe, które głównie używane są w kontekście rozpoznawania obrazów. Nie wchodząc w szczegóły, konwolucyjne sieci neuronowe oparte są o ekstrahowanie kolejnych cech z fotografii. Początkowe warstwy sieci uczą się wykrywać proste kształty, jak np. poziome i pionowe linie, następnie sieć uczy się wykrywać linie ukośne, następnie łuki, później jakieś bardziej zakrzywione linie, aż dochodzimy do wykrywania złożonych kształtów, jak np. kształt ucha zwierząt. Nie musimy ręcznie konstruować filtrów, które wyszukują te cechy – sieć sama je tworzy.

 

Są różne rodzaje/metody/podkategorie uczenia maszynowego. Czy możesz powiedzieć o nich coś więcej i podać przykłady zastosowania?

Zwyczajowo uczenie maszynowe dzieli się na trzy kategorie, które zdeterminowane są rodzajem danych, jakimi dysponujemy.

Pierwszą kategorią są metody dotyczące uczenia nadzorowanego. W uczeniu nadzorowanym mamy dostęp do danych, które są oetykietowane, np. mamy zbiór fotografii zwierząt i wiemy (mamy etykietę), czy na zdjęciu jest pies, czy kot. W pewnym sensie więc nasze dane są wyposażone w wiedzę ekspercką. Uczenie nadzorowane polega na szkoleniu modeli, które wykorzystują wiedzę z zewnątrz (oprócz samych surowych danych w postaci zdjęć).

Drugą klasą zagadnień z uczenia maszynowego jest tzw. uczenie nienadzorowane. Jest to zbiór metod i algorytmów treningowych, gdzie nasz zbiór danych nie ma etykiet – brakuje tej wspomnianej wiedzy eksperckiej. Wróćmy do analizowanych psów i kotów. Jeśli posiadalibyśmy zestaw wielu fotografii, ale bez oznaczenia, jakie zwierzę się na nich znajduje, metodami uczenia nienadzorowanego moglibyśmy odpowiedzieć np. na pytanie: ile mamy różnych klas zwierząt w naszym zbiorze danych? Odpowiedź brzmiałaby: mamy dwie klasy – pierwszą klasę, do której jedne zwierzęta z fotografii pasują, i drugą klasę, w której zwierzęta są inne niż te w klasie pierwszej. Nie mamy jednak informacji, czy to są psy, czy koty.

Trzecia dziedzina uczenia maszynowego to uczenie przez wzmacnianie. Jest to trzeci rodzaj uczenia maszynowego, które dziś można nazwać chyba najbliższym podejściem do sztucznej inteligencji. Celem uczenia przez wzmacnianie jest nauczenie maszyny – zwyczajowo zwanej agentem – do operowania w zadanym środowisku w celu zdobycia jak największej nagrody.

Najprostszym przykładem jest nauka modelu sterującego radiowo samochodzik, który porusza się po zadanym torze. Celem jest wytrenowanie modelu w taki sposóby, aby samochodzik mógł pokonać zadany tor w jak najkrótszym czasie z jak najmniejszą liczbą punktów kar – tutaj możemy arbitralnie przyjąć, czym są punkty kar, ale może to być np. odbicie się od brzegów toru czy uderzenie w przeszkodę.

Uczenie przez wzmacnianie różni się od uczenia nadzorowanego i nienadzorowanego głównie tym, że nie mamy danych wejściowych. Agent uczy się jedynie przez zdobywanie doświadczenia w wyniku podejmowania wielu prób rozwiązania zagadnienia. Tutaj nie mamy do czynienia z etykietami danych, ale jedynie z krytykiem – czyli systemem przyznawania punktów kar. Agent uczy się sterować samochodem w taki sposób, aby minimalizować czas przejazdu i minimalizować punkty kar.

Jako przykład możemy podać agenta, który ma do wykonania szereg akcji: może przyspieszyć samochodzik, zwolnić, może skręcić w lewo, w prawo lub zahamować. Agent oddziałuje z otoczeniem – w tym wypadku torem – i musi dokonywać obserwacji efektów swoich działań w tym otoczeniu.

Proces trenowania oparty jest o pewien formalizm matematyczny, tzw. równania Bellmana. Celem trenowania jest znalezienie przybliżonych rozwiązań rownań Bellmana. Na podstawie tych rozwiązań agent może podjąć decyzję, jaką akcję wykonać w danej chwili w danym stanie środowiska. W naszym przypadku oznacza to: gdzie skręcić, gdzie zahamować, gdzie przyspieszyć, gdzie jechać prosto.

Chyba najbardziej spektakularnym zastosowaniem uczenia przez wzmacnianie jest algorytm AlphaGo od DeepMindu, gdzie maszyna nauczyła się grać w chińską grę Go i wygrywać z najlepszymi arcymistrzami tej gry. Tutaj warto podkreślić, że złożoność gry Go jest kilkadziesiąt rzędów wielkości większa niż gry w szachy, więc zakodowanie na sztywno algorytmu z wieloma instrukcjami if…then jest po prostu niemożliwe. W pierwszej wersji AlphaGo agent analizował wiele meczy Go pomiędzy ludźmi, a następnie dzięki tak zdobytej wiedzy wygrał z arcymistrzem w 2017 roku.

Może dodam tu coś z własnego podwórka, bo kiedyś grałem w szachy – też mamy takie rozwiązanie, które nazywa się AlphaZero. Akurat tu AlphaZero grał przeciwko innemu programowi komputerowemu, który został stworzony przez człowieka i był uznawany za najlepszy program, jeśli chodzi o grę w szachy. Oczywiście wygrywał on z szachistami – nie mieli z nim szans.

AlphaZero, grając z programem, który był uznawany za najlepszy, uczył się, aż w końcu go ograł. Podejrzewam, że mogło to trwać dzień, dwa albo tydzień i w zasadzie lata pracy programistów w ciągu paru dni zostały „przezwyciężone”. Wiadomo, że trzeba było najpierw stworzyć AlphaZero, ale teraz jest on uznawany za nelpeszy.

Tak. Obecnie żaden człowiek nie jest w stanie wygrać w grach planszowych z systemami AlphaGo i AlphaZero od DeepMindu.

Możesz podać przykłady wykorzystania uczenia głębokiego w obecnym świecie?

Zastosowania uczenia głębokiego można podzielić na kilka obszarów.

Pierwszym obszarem jest tzw. wizja komputerowa, czyli wszystkie metody rozpoznawania i detekcji obiektów z obrazów oraz z wideo. Tutaj można wymieniać po kolei kilka zastosowań, np. rozpoznawanie twarzy, detekcja pieszych, ludzi na lotniskach czy automatyczne sortowanie śmieci. Wszędzie tam, gdzie trzeba coś zaobserwować, śledzić i umieć szybko podjąć decyzję, co jest czym, systemy wizji komputerowej świetnie sobie radzą.

Innym zagadnieniem jest detekcja obiektów i śledzenie ich np. podczas wydarzeń sportowych. Teraz mamy mundial, więc jest to na czasie. Często widzimy statystyki: ile dany zawodnik przebiegł, jaka była suma pokonanego dystansu itd. Wszystkiego dokonują właśnie systemy trackingu zawodników.

Kolejnym przykładem są autonomiczne auta, czyli samochody potrafiące adaptować się do zmiennego otoczenia i zastąpić człowieka w jeździe.

Z innych rzeczy, bardziej przyziemnych: podczas ostatniej pandemii każdy zaczął używać Zooma i Skype’a w ilościach wręcz niemożliwych do wyobrażenia sobie przed pandemią. Uczenie głębokie było wykorzystane np. do odszumiania hałasów z tła dźwiękowego. Można zobaczyć ogromny skok jakości podczas nagrań i wideokonferencji na Skypie czy na Zoomie.

Z innych zastosowań, które wydają się bardzo atrakcyjne, jest wykorzystanie uczenia głębokiego i wizji komputerowej do wyceny dzieł sztuki. Załóżmy, że pojawia się na rynku nowy artysta, który chce wystawić swoje dzieło w galerii. Inwestor mógłby kupić to dzieło sztuki, ale najpierw chce dowiedzieć się, ile może zarobić na tych dziełach, ile są one warte. O ile do tej pory ta wycena była dokonywana na podstawie wiedzy ekspertów z dziedziny, to teraz można sobie wyobrazić uczenie głębokie wykorzystywane do wyceny tych dzieł w taki sam sposób, jak są wyceniane mieszkania na podstawie swojej lokacji, liczby pokoi czy powierzchni.

Kolejnym elementem związanym trochę ze sztuką jest rozpoznawanie falsyfikatów dzieł sztuki. Kilka lat temu pojawił się na rynku obraz Pollocka. Podobno było to zaginione arcydzieło. Osoba, która przyniosła ten obraz do galerii, twierdziła, że jest to oryginał. Na szczęście na podstawie wykorzystania uczenia głębokiego udało się powiedzieć, że był to falsyfikat. Kiedy maszyna zaczęła analizować różne właściwości obrazów Pollocka, zobaczyła, że nie są one tożsame z tymi, o których wiemy, że pochodziły od autora.

Zastanawiam się, na ile jesteśmy w stanie ocenić, czy nie został tu popełniony błąd. Przyjmijmy, że w zbiorach Pollocka pojawiły się inne prace, które do niego nie należą. Może to spowodowało, że taka predykcja była błędna – bo parę obrazów było przypisanych nieprawidłowo do jego autorstwa, co spowodowało, że prawdziwy obraz został uznany za nieprawdziwy. Zastanawiam się, na ile jest to możliwe: z racji tego, że pojawiły się błędne dane, to wyszła błędna odpowiedź algorytmu.

To jest to, o czym wspominaliśmy wcześniej: garbage in, garbage out. Sukcesem modeli oprócz złożoności jest też jakość danych, na których trenujemy. Masz rację: jeżeli byłoby kilka obrazów oznaczonych jako dzieła Pollocka, a one nie byłoby dziełami Pollocka, to potencjalnie oryginalny egzemplarz mógłby zostać uznany za fałszerstwo.

Nie jestem specjalistą i nie znam bardzo dokładnie tej historii, ale myślę, że te dzieła, które są uznawane za Pollocka, były ocenione przez znawców.

Kolejnym bardzo ciekawym wykorzystaniem uczenia głębokiego jest połączenie wizji komputerowej i języka migowego. Na rynku są już narzędzia pomocne w komunikacji pomiędzy osobami głuchoniemymi, posługującymi się językiem migowym, a osobami które jezyka migowego nie znają. Kamera przetwarza wideo, w którym mamy osobę głuchoniemą komunikującą się z nami przez język migowy, a sieć neuronowa rozpoznaje kolejne symbole w języku migowym i może je bezpośrednio przetłumaczyć on time na tekst dla nas zrozumiały bądź na mowę (w sytuacji, w której mielibyśmy jeszcze podłączony system przetwarzania języka na mowę).

Oprócz wizji komputerowej jest drugi bardzo ekscytujący obszar badań. Są to badania nad analizą i rozumieniem tekstu, nad językiem naturalnym, czyli przetwarzaniem języka, którym posługujemy się my – ludzie.

Najlepszym chyba przykładem jest powszechnie przez wszystkich używany tłumacz Google’a, oparty właśnie o architektury sieci głębokich specjalizujących się w tłumaczeniach. Nie wiem, czy pamiętasz, ale kilka lat temu tłumaczenia Google’a nie były najlepszej jakości. Często były nawet śmieszne. Od ostatnich 2-4 lat ta jakość dramatycznie się polepszyła. Ten skok jakości jest związany z zastosowaniem bardzo zaawansowanych architektur, polegających na przetwarzaniu języka naturalnego.

Trzeci obszar, gdzie możemy odnaleźć głębokie sieci neuronowe, to tzw. sieci generatywne. Tego typu sieci pozwalają tworzyć obrazy, wideo i treści, które nigdy wcześniej nie były wygenerowane ani przez nikogo widziane. Przykładem jest strona thispersondoesnotexist.com, gdzie za każdym razem, gdy odświeżymy stronę, pojawia się fotografia człowieka, która została w całości wygenerowana przez wytrenowaną wcześniej sieć. To jest dość niesamowite, bo jakość tych fotografii jest dla mnie nie do rozróżnienia. Nie potrafię rozróżnić, czy to fotografia prawdziwej osoby czy sieci. Przed kilkoma laty sieci te nie były bardzo dobre, ale wraz z rozwojem metod i ilości danych, te sieci naprawdę są coraz lepsze.

Takie modele generatywne pozwalają również generować tekst, muzykę lub nawet nowe projekty ubrań.

Czy sądzisz, że te sieci są coraz lepsze, bo coraz więcej ludzi wrzuca miliony fotografii na Facebooka i tego typu portale, dzięki czemu można wykorzystać więcej elementów, na których sieć się uczy – model zostaje wytrenowany?

Zdecydowanie tak. To, że mamy teraz boom w rozwoju rozwiązań opartych o sieci neuronowe, jest spowodowane tym, że mamy ogromny dostęp do danych. Mówi się teraz, że data is the new oil – dane są nowym paliwem. Żyjemy w erze, gdzie dane napędzają gospodarkę.

To już wiemy, dlaczego Facebook i Google tak dobrze sobie radzą.

Dokładnie tak.

To lećmy dalej.

Rozmawialiśmy o modelach generatywnych. Jest taka zabawna historia, może niektórzy słuchacze ją kojarzą. Jakiś czas temu model, który potrafił generować sztukę, np. obrazy malarskie, wygrał konkurs. Autor tego dzieła nie przyznał się oczywiście jury, że obraz został wygenerowany. Później po wszystkim przyznał się, że jest to dzieło wygenerowane przez sieć neuronową i był wielki szum: czy należy odebrać nagrodę malarzowi, czy nie. Jest to wątek, który żyje już własnym życiem, ale generalnie dziś sieci potrafią tworzyć dzieła, obrazy nie do rozróżnienia od tych tworzonych przez człowieka – przez najlepszych artystów na świecie.

Pomyślałem, że robi się z tego prawdziwy Matrix.

Trochę tak.

Niedługo nie będą generowane tylko obrazy, ale całe modele różnych miast. Wystarczy, że taki komputer podłączy się do naszego umysłu, i może generować nam to, co zapragnie.

Myślę, że pomysły, które ma Elon Musk i jego firma Neuralink, wykraczają daleko poza to, co teraz powiedziałeś. Naprawdę przyszłość zapowiada się ciekawie.

Albo i nie.

Albo i nie – zależy, jak się na to patrzy. Ja jestem optymistą.

Kolejnym elementem jest przetwarzania języka naturalnego połączone z generowaniem obrazów. Chyba najbardziej znanym przykładem jest właśnie GPT-3, w którym model potrafi generować obrazy na podstawie wprowadzonego tekstu. W publikacji, która się pojawiła, był podany przykład wygenerowanego krzesła w kształcie awokado. Na zadane pytanie „wygeneruj krzesło w kształcie awokado” pojawiło się świetne dizajnerskie krzesło, które naprawdę chciałbym mieć w swoim mieszkaniu. Kolor, kształt – wszystko przypominało rzeczone awokado.

I wydaje się, że było też funkcjonalne. Faktycznie można by było na nim usiąść. Wiem, bo to sobie sprawdziłem.

Tak? No widzisz. Mamy więc bardzo ciekawe czasy. Ja bym raczej widział w tym szansę dla designerów, artystów, ludzi zawodów kreatywnych niż niebezpieczeństwo utraty pracy.

Do tego pewnie jeszcze przejdziemy.

Jak najbardziej. To jest po prostu kolejne dobre narzędzie.

Wspomniałeś o GPT-3. Czy to jest ten sam algorytm, co w ChatGPT, tylko inaczej wykorzystany? Czy to jest coś innego?

Co do zasady można powiedzieć, że to jest model językowy głębokiej sieci neuronowej – ma wiele warstw, wiele wag – tylko w ilości wag był on mniejszy niż model ChatGPT. W przyszłym roku lub za dwa ma się pojawić ChatGPT czwartej generacji, w którym ilość wag wzrośnie o rząd czy dwa rzędy wielkości, więc model ten będzie jeszcze potężniejszy.

Nie będziemy go pytać „jak brzmiała ostatnia zwrotka piosenki”, tylko „co mnie czeka za pięć lat”.

To byłoby fajne, ale tutaj dochodzimy też do zagadnień predykcji, gdzie sieci neuronowe są wykorzystywane do analizy szeregów czasowych. I kto wie – może za jakiś czas będzie można zapytać, w co zainwestować na giełdzie.

Jak już będziemy mogli pytać, w co zainwestować na giełdzie…

…to wiemy, że nie ma co inwestować na giełdzie.

Tak. Może odpowiedź będzie wyglądać tak: „nie inwestuj, bo nie ma sensu – to i tak jest kontrolowane w inny sposób”.

Dokładnie tak może być.

Czy coś nam tu jeszcze zostało?

Tak. Myślę, że jeszcze trzeba by wspomnieć o wykorzystaniu uczenia przez wzmacnianie do problemów optymalizacyjnych, np. problemu optymalizacji drogi tak, aby być w każdym punkcie tylko raz, ale żeby każdy punkt wizytować.

Takim najprostszym przykładem są roboty, które zbierają zamówienia w wielkich hurtowniach, np. Amazonu. Tam te modele są już wykorzystywane. Robot, który kolekcjonuje dane zamówienie, optymalizuje sobie drogę, aby minimalizować koszty obsługi takiej wielkiej hurtowni. I to już funkcjonuje – tak że to nie jest przyszłość, te rozwiązania już dzisiaj są aplikowane.

Myślę, że są różne fajne, ciekawe modele, które coś upraszczają, pozwalają zoptymalizować, wygenerować jakiś obraz – ale nie uważam, że to ma jakiś bardzo wielki impact na rzeczywistość. W mojej opinii to, co tak naprawdę jest ciekawe, to wykorzystywanie sieci neuronowych do badań nad produkcją leków. Ten zakres badań ma naprawdę ogromne implikacje. Kiedy jesteśmy w stanie szybciej modelować różne leki, kiedy jesteśmy w stanie testować ich działanie na modelach np. odpowiedzi ludzkiego organizmu, to to jest coś, co ma potencjalnie duży impact.

Możemy spodziewać się analizy danych pochodzących ze zbiorów ludzkiego genomu i np. szukać terapii, które potrafiłyby poradzić sobie z chorobami genetycznymi. Zastosowanie uczenia głębokiego jako supportu nauk medycznych wydaje mi się najbardziej istotną częścią tego biznesu.

Czy szczepionki na COVID związane z ostatnią pandemią powstały tak szybko, bo wykorzystywano tego typu rozwiązania? Masz jakąś wiedzę na ten temat?

Nie, w ogóle nie potrafię się odnieść, nie mam pojęcia, czy to działało. Myślę jednak, że ta szczepionka powstała szybko, bo była to kolektywna próba rozwiązania tego problemu przez wszystkie wielkie firmy farmaceutyczny. Wydaje mi się, że metody uczenia maszynowego do produkcji leków są na razie na etapie badań i testów – że to jeszcze nie wchodzi na produkcję.

A wracając do tych zagadnień z medycyny: DeepMind udostępnił model AlphaFold, który rozwiązał bardzo kluczowy problem z dziedziny biologii molekularnej – przetwarzania i przewidywania struktury 3D białek. Problem polega między innymi na tym, że mamy jakąś sekwencję białek i pytaniem jest: jaka będzie struktura trójwymiarowa takich białek, gdy będa one oddziaływać z wodą? To bardzo złożony problem optymalizacyjny i obliczeniowy.

Do tej pory obliczenia były robione na superkomputerach – by przewidzieć, jak dana struktura białkowa reaguje w kontakcie z wodą. AlphaFold, z tego co mi wiadomo, rozwiązał ten problem. Teraz możemy podać inną strukturę białek jako wejście do naszego modelu i AlphaFold jest w stanie przewidzieć ten trójwymiarowy kształt.

Czyli coś, co było liczone przez duży komputer nie wiadomo jak długo, teraz mamy od razu: dane wchodzą i wychodzi rozwiązanie.

W zasadzie tak. Myślę, że to jest ogromny skok w badaniach nad wykorzystaniem uczenia maszynowego w medycynie, chemii, produkcji leków i terapiach genowych.

Ostatnio rozmawialiśmy na temat rozszyfrowania zakodowanych treści. Pytanie: czy jesteśmy w stanie w ten sposób wykorzystać uczenie maszynowe? Czy możemy stworzyć taką funkcję, do której przekazujemy tekst i od razu wychodzi rozwiązanie? Nie musimy wykonywać obliczeń, łamać haseł, tylko od razu otrzymujemy dane – tak jak zrobiliśmy z białkami.

To nowy pomysł, więc jak coś, to 10% dla mnie.

Dobrze. Myślę, że nie – na chwilę obecną np. wiemy, jak działa algorytm RSA. Doskonale znane jest jego działanie kodowania, wiemy, na czym polega odkodowanie (na znalezieniu dwóch odpowiednich liczb pierwszych itd.), znamy też algorytm, który potrafi to robić, czyli dokonywać rozkładu liczby na czynniki pierwsze. Pytanie, jak szybko to się dzieje. Problemem nie jest tu więc, jak coś rozwiązać, tylko żeby obliczenia były bardzo szybkie. Tu mogą się przydać komputery kwantowe, o czym już kiedyś mówiliśmy. Nie bardzo więc widzę zastosowanie sieci neuronowych.

Może musimy jeszcze poczekać.

Tak, może musimy jeszcze poczekać.

Ostatnią rzeczą, którą chciałbym w tym miejscu wymienić, jest wykorzystanie sieci neuronowych do znajdowania nowych algorytmów i rozwiązywania pewnych problemów w sposób nieoczywisty dla ludzi.

I tutaj jest AlphaTensor (też od Deep Mindu). Jest to algorytm, który odkrył nowy algorytm mnożenia macierzy, szybszy o około 10-20% od obecnie wykorzystywanych najlepszych metod do mnożenia macierzy. To jest w zasadzie niesamowite: ten model znalazł nowy algorytm, na który ludzie wcześniej nie wpadli.

Co jest bardzo śmieszne w tej historii: w tydzień po opublikowaniu tego algorytmu (był chyba opublikowany w Nature) dwóch matematyków podało algorytm jeszcze szybszy od tego zaproponowanego przez AlphaTensor. Ale można się spodziewać, że AlphaTensor był inspiracją dla tego jeszcze szybszego algorytmu. Widać więc, że sieci neuronowe mogą też wspierać rozwój nauki. Może to być narzędzie służące do dokonywania nowych odkryć naukowych.

Tak cały czas mówimy o tym DeepMindzie – zastanawiam się: czy jest to firma należąca do jakiejś dużej korporacji?

DeepMind był stworzony przez Google. Teraz to oddzielna firma, ale na początku był to google’owy projekt. Drugim takim wielkim graczem jest OpenAI. OpenAI należał do Elona Muska. Nie wiem, jak jest teraz – czy oni się rozłączyli i są oddzielnym bytem gospodarczym.

Czyli duzi gracze cały czas są wokół nas.

Tak.

Jeszcze jedna rzecz. Wspomniałeś o medycynie, ale chyba nie wspomniałeś o tym, że można odczytywać np. zdjęcia RTG albo oceniać stan fizyczny jakiejś osoby na podstawie danych.

Tak. Wspomaganie radiologii już jest wykorzystywane. Można analizować np. zdjęcia nowotworów piersi. Są dowody, że sieć neuronowa była w stanie wykryć zmiany nowotworowe wcześniej, niż mógł tego dokonać lekarz.

Dochodzimy tu do tego, że sieci neuronowe nigdy nie zastąpią lekarzy, ale będą, miejmy nadzieję, wygodnym, powszechnym narzędziem stosowanym w medycynie i diagnostyce medycznej.

Chciałbym podkreślić, że sieci neuronowe będą cały czas nam pomagać, a nigdy nie będą nas wykluczać. Jeżeli zostaniemy zastąpieni w jakiejś dziedzinie, to te sieci neuronowe tak naprawdę otworzą nowe miejsca, gdzie człowiek będzie potrzebny jako człowiek ze swoją inteligencją, która jest nadal nieuchwytna – nie jest możliwa do zaprogramowania.

W zasadzie podobnie było też z fabrykami, maszynami, gdy ludzie bali się, że stracą pracę. A potem okazało się, że tej pracy było dwa razy więcej, bo pojawiały się nowe miejsce pracy, nowe rozwiązania, które trzeba było „obsłużyć”.

Dokładnie tak.

Więc chyba nie jest tak źle.

 

Czym różnią się od siebie różne sieci neuronowe?

Sieci neuronowe różnią się swoją architekturą, a każda architektura uzależniona jest od zadania, jakie stawiamy przed siecią.

„Różną architekturą” – mówimy o fizycznie różnym układzie czy o oprogramowaniu?

O oprogramowaniu. Jest to pytanie: jakie operacje dokonywane są na kolejnych warstwach w jakiej kolejności? Architektura sieci to pytanie o to, co jest wykonywane: czy mamy mnożenie, dodawanie, czy dokonujemy jakiejś operacji nieliniowej czy konwolucji. Mamy więc zbiór takich podstawowych operacji. Architektura to kolejność ich wykonywania.

Jak mamy sieć neuronową, neuron i mnożenie lub inną operację matematyczną, to czy odbywa się to zawsze na jednym poziomie, czy z jednego neuronu wchodzi, przechodzi do następnego i możemy to tak mnożyć, mnożyć, mnożyć nie wiadomo jak długo.

W zasadzie możemy powiedzieć, że każdy neuron jest połączony z każdym neuronem przez wiele warstw. Termin „głębokie sieci” pojawia się w wyniku tego, że mamy wiele ponakładanych na siebie warstw. Oczywiście to nie jest tak, że za każdym razem każdy neuron połączony jest z każdym – to są już szczegóły implementacyjne czy jakieś próby doskonalenia sieci. Ale co do zasady każdy neuron może być połączony z każdym.

O sieciach neuronowych i architekturach można mówić w kontekście ich zastosowań. Na przykład analiza obrazu czy wideo polega na analizowaniu danych snapshotów (obrazów czy zdjęć) – i tutaj mamy operacje konwolucyjne. Są to tzw. sieci konwolucyjne, które potrafią analizować obraz wraz z kontekstem korelacji przestrzennych na obrazie. Czyli zakładamy, że te piksele obok siebie są ze sobą związane. Konwolucja jako operacja matematyczna potrafi wychwycić tę korelację.

Mamy też zagadnienie polegające na analizie zmian w czasie (jakiegoś szeregu czasowego), czyli np. analizę sygnału, analizę słów – bo słowa w zdaniach też tak naprawdę mają swój kontekst czasowy. Słowa wypowiadane w innej kolejności lub losowo nie mają sensu. Dopiero kiedy są powiedziane w odpowiedniej kolejności, mają odpowiednie znaczenie. Tutaj mamy tzw. sieci rekurencyjne. To sieć, której wyjście jest jednocześnie jej wejściem – to taka zapętlona struktura. Te architektury pozwalają analizować zmiany w czasie.

Tak naprawdę, można powiedzieć, są dwie podstawowe struktury: konwolucyjne dla analizy obrazów i rekurencyjne do analizy zmian czasowych. To jest oczywiście ogromne uproszczenie. Można by wiele opowiadać na temat szczegółów tych architektów, ale myślę, że takie rozróżnienie na chwilę obecną powinno być wystarczające.

 

Była to pierwsza z dwóch części rozmowy o sztucznej inteligencji i uczeniu głębokim. W następnym odcinku poruszymy między innymi temat barier w rozwoju deep learningu i wyzwań czekających na programistów w tej dziedzinie.

Polecana książka

Deep learning. Głęboka rewolucja
Terrence J. Sejnowski

Zwiększ swoje szanse na znalezienie pracy!

Wiedza ogólna z obszaru IT oraz obycie się ze słownictwem będzie dużym atutem podczas rekrutacji. Dlatego zachęcam Cię do odsłuchania wszystkich odcinków podcastu oraz zapisania się do newslettera, dzięki któremu nie przegapisz żadnego nowego odcinka!

Słuchaj także na:

Udostępnij ten artykuł:

Polecana książka

Deep learning. Głęboka rewolucja
Terrence J. Sejnowski

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