logo
FA 01/2020 ŻYCIE NAUKOWE

Paweł Gora

Inteligencja

Program AlphaGo wygrywa w go ze wszystkimi swymi twórcami. Można więc powiedzieć, że „uczeń przerósł mistrza”. Podobnie rzecz się ma w przypadku stworzonej przeze mnie i mój zespół TensorCell sieci neuronowej, skoro ten uczeń, sieć neuronowa, potrafi tak dokładnie i szybko przybliżać wyniki symulacji komputerowej, którą opracowaliśmy wcześniej.

Rys. 1 Schemat budowy neuronu zwierząt: a – dendryty, b – ciało komórki, c – jądro komórkowe, d – akson, e – otoczka mielinowa, f – komórka Schwanna, g – przewężenie Ranviera, h – zakończenia aksonu. Źródło: https://pl.wikipedia.org/wiki/Neuron

Rys. 2 Schemat sztucznej sieci neuronowej z jedną warstwą wejściową, jedną wyjściową i jedną ukrytą. Źródło: https://pl.wikipedia. org/wiki/Sie%C4%87_neuronowa.

Czy zastanawialiście się kiedyś nad tym, czym jest inteligencja? Większość definicji zakłada posiadanie zdolności do postrzegania, rozumowania, uczenia się, adaptacji do zmieniającego się otoczenia i wykorzystywania wiedzy i umiejętności w nowych sytuacjach. Najczęściej mówi się o inteligencji ludzi i zwierząt, a więc organizmów żywych mających mózg – biologiczny organ. Jednak czy inteligencja musi być jedynie cechą istot, które uważamy obecnie za „żywe”? Często mówi się też o sztucznej inteligencji, dlatego że nie występuje w sposób naturalny w przyrodzie, lecz w emergentny sposób pojawia się w maszynach i algorytmach tworzonych dzięki innej inteligencji, np. człowieka.

Jesteśmy świadkami rozkwitu fascynującej dziedziny nauki, sztucznej inteligencji (w skrócie: AI, od angielskiego zwrotu Artificial Intelligence), który jest możliwy dzięki dostępności coraz większej ilości danych i mocy obliczeniowej komputerów, ale również dzięki nowym odkryciom i pomysłom. Coraz częściej słyszymy o tym, że komputer wygrywa z ludźmi (i to mistrzami świata!) w różne gry, np. w szachy, go lub pokera, które wymagają olbrzymich możliwości intelektualnych, związanych właśnie z rozumowaniem, uczeniem się, radzeniem sobie w dynamicznie zmieniających się warunkach. Programy komputerowe potrafią już rozpoznawać obiekty na zdjęciach lepiej niż ludzie, jeździć samochodem, rozpoznawać mowę i tłumaczyć tekst z jednego języka na drugi, potrafią też wykazywać się kreatywnością i tworzyć nowe dzieła na podstawie obrazów lub tekstów, które widziały wcześniej.

Te nowe umiejętności programów znajdują zastosowanie w praktyce, w produktach tworzonych przez firmy informatyczne. Wiele wskazuje na to, że wkraczamy w erę wielkiej rewolucji związanej z pojawieniem się na skalę masową sztucznej inteligencji, rozwiązywaniem przez nią coraz bardziej skomplikowanych problemów lepiej niż ludzie i w związku z tym – stopniowym wyręczaniem ludzi w wykonywanych przez nich pracach.

Wiele razy w przeszłości naukowcy zapowiadali pojawienie się lada moment sztucznej inteligencji przewyższającej człowieka w większości zadań, a jednak jeszcze się to nie stało. Istniejące programy komputerowe potrafią być lepsze od człowieka w pewnych konkretnych zadaniach (np. gra w go, rozpoznawanie obrazu), ale wydaje się, że wciąż daleko do stworzenia ogólnej sztucznej inteligencji. Związane z nią koncepcje pojawiały się już w połowie XX wieku, a mieliśmy przecież od tamtej pory zarówno okresy rozkwitu AI, jak i czas określany jako „zima sztucznej inteligencji”, gdy zainteresowanie tematem spadło i redukowano nakłady na badania naukowe w tej dziedzinie. Dlaczego właśnie teraz miałby nastąpić przełom? Aby to zrozumieć, należy się zagłębić w istotę sztucznej inteligencji i poznać najnowsze odkrycia naukowe w tej dziedzinie.

Coraz większe zbiory danych

Wspomniałem, że jedną z głównych cech inteligencji jest zdolność do uczenia się i adaptacji do zmieniających się warunków. Aby się czegoś uczyć, trzeba mieć dane, na podstawie których można się uczyć. Trzeba mieć również pewne zasoby (np. moc obliczeniową, pamięć), aby te dane przetwarzać, oraz algorytmy – przepisy na to, w jaki sposób posiadane dane analizować, wyciągać z nich wnioski i odkrywać wzorce, prowadzić rozumowania i doskonalić własny sposób działania, aby poradzić sobie z nowymi danymi – do pewnego stopnia podobnymi, lecz jednak innymi (od rozwiązań określanych jako „inteligentne” powinniśmy oczekiwać, że poradzą sobie w nowych sytuacjach, niespotkanych wcześniej).

Algorytmy uczące się istnieją od dawna, przez wiele lat dużym problemem było jednak pozyskanie i przygotowanie odpowiednich danych, na których te algorytmy mogłyby być trenowane. Proces ten jest często najbardziej pracochłonnym etapem w trakcie uczenia algorytmów. W przeszłości algorytmy były trenowane na stosunkowo niedużych i prostych zbiorach danych (w porównaniu do tego, co robi się obecnie). Wraz z rozwojem informatyki i Internetu zaczęły się pojawiać coraz większe zbiory danych, a dane te były coraz lepszej jakości, były uporządkowane, udokumentowane, pojawiały się gotowe narzędzia do ich zbierania, przygotowywania i analizy, czemu sprzyjała coraz większa moc obliczeniowa. Dostępność dużej mocy obliczeniowej (w tym kart graficznych i innych narzędzi umożliwiających szybsze przetwarzanie danych w postaci tensorowej) spowodowała też, że sam proces tworzenia algorytmów stawał się coraz prostszy, algorytmy te mogły działać na coraz większych zbiorach danych, przystosowując się w ten sposób do rozwiązywania coraz bardziej złożonych problemów, coraz bliższych rzeczywistości, mających coraz większe znaczenie praktyczne. Spowodowało to większe zainteresowanie naukowców oraz firm chcących skorzystać z magii algorytmów sztucznej inteligencji do rozwiązywania trudnych problemów cywilizacyjnych i komercyjnych, które dotychczas były poza zasięgiem ludzi i klasycznych algorytmów. Większe zainteresowanie naukowców i finansowanie badań przyniosło kolejne odkrycia, lepsze pomysły i ważniejsze wyniki, lepsze rozumienie procesów związanych z trenowaniem algorytmów, a w konsekwencji: dynamiczny, niespotykany chyba wcześniej w historii rozwój całej dziedziny, który od kilku lat trwa do dziś, i nic nie wskazuje na to, aby wkrótce miał się zatrzymać.

Maszynowe uczenie

Czy może to doprowadzić do powstania komputera, który będzie w stanie wykonywać każde zadanie lepiej od człowieka? Byłoby to przełomowe dla całej naszej cywilizacji, więc warto się nad tym zastanawiać. Naukowcy czynią to już od kilkudziesięciu lat. Pomimo hipotez dotyczących ograniczeń komputerów, związanych z twierdzeniami matematyki i prawami fizyki, nie ma naukowego dowodu, że komputery nie osiągną poziomu możliwości człowieka w każdej dziedzinie. Obserwujemy za to łamanie kolejnych barier i pokonywanie człowieka przez maszyny w kolejnych zadaniach.

Największy przełom w ostatnich latach związany jest z obszarem sztucznej inteligencji znanym jako maszynowe uczenie. Badane są algorytmy nadające komputerom kluczową dla inteligencji cechę uczenia się na podstawie doświadczenia. Zasadniczo wyróżnia się trzy klasy zagadnień uczenia maszynowego: uczenie z nadzorem (w którym dany jest zbiór treningowy złożony z przykładowych par wejście-wynik i celem jest jak najlepsze przybliżenie wyniku dla nowych danych wejściowych), uczenie bez nadzoru (do elementów w zbiorze treningowym nie mamy przypisanych poprawnych decyzji, możemy jednak analizować sam zbiór i wykrywać zależności między jego elementami, np. budować klastry) oraz uczenie ze wzmocnieniem (w tym przypadku zbiór treningowy nie jest dostępny od razu, ale w zależności od stanu algorytm podejmuje określone decyzje i otrzymuje informację zwrotną od otoczenia, mówiącą, na ile ta decyzja była dobra; na tej podstawie usprawnia swoje działanie). Są też zagadnienia z pogranicza tych klas, np. gdy zbiór treningowy nie jest dostępny w całości lub tylko dla jego części są znane prawidłowe odpowiedzi.

Duże sukcesy w dziedzinie uczenia maszynowego odnoszą np. głębokie sieci neuronowe i w dużym stopniu to właśnie one stały się największym beneficjentem pojawienia się większej ilości i lepszej jakości danych oraz większej mocy obliczeniowej (często są to warunki konieczne, bez których stosowanie sieci neuronowych może nie być dobrym rozwiązaniem). To właśnie sieci neuronowe w dużym stopniu przyczyniły się też w ostatnich latach do dynamicznego rozwoju AI. Słowo „neuronowe” już daje pewne skojarzenia z umysłem. Mózg człowieka składa się właśnie z dużej liczby neuronów, szacowanej na 100 miliardów. Faktycznie sieci neuronowe inspirowane są ludzkim umysłem, ich podstawowym budulcem są perceptrony – obiekty naśladujące działanie neuronów w mózgu (Rys. 1). Pojedynczy perceptron (sztuczny neuron) otrzymuje na wejściu pewne dane i przetwarza je w określony sposób, przekazując na wyjściu wynik. Perceptrony mogą być ze sobą połączone tak, że wynik obliczeń jednego z nich stanowi sygnał wejściowy do innego. W ten sposób może współdziałać wiele warstw perceptronów, przetwarzając dane otrzymane na wejściu aż do obliczenia wyniku, zgodnie z regułami w perceptronach oraz wartościami parametrów ich połączeń (Rys. 2). Często dane przetwarzane są w jednym kierunku, ale istnieją też rekurencyjne sieci neuronowe (stosowane np. do analizy szeregów czasowych, rozpoznawania mowy i tłumaczeń tekstów), w których połączenia między perceptronami z różnych warstw mogą tworzyć cykle.

W jaki sposób uczy się sieć neuronowa?

W przypadku uczenia z nadzorem, na podstawie zbioru treningowego, czyli dużego zbioru par wejście–wynik, obliczana jest funkcja oceniająca jak dobrze dana sieć przybliża rzeczywiste wyniki dla danych wejściowych, a następnie wagi połączeń między neuronami są modyfikowane tak, aby zmniejszać popełniany błąd. Służy do tego np. algorytm propagacji wstecznej, który oblicza, jak należy zmodyfikować wagi połączeń między kolejnymi warstwami neuronów. Jest to typowy schemat uczenia algorytmów, w większości metod występuje zbiór treningowy, do którego algorytm dobiera ustawienia minimalizujące pewną funkcję.

Sieci neuronowe mogą być zorganizowane w sposób hierarchiczny: w kolejnych warstwach przetwarzane są dane z niższego poziomu i wyniki przekazywane są do kolejnej warstwy. Dzięki temu z danych niskopoziomowych, relatywnie prostych, można stopniowo otrzymywać coraz bardziej złożone, wysokopoziomowe informacje. Jeśli tych warstw jest dużo, to mamy do czynienia z głębokimi sieciami neuronowymi. Takie metody uczenia nazywane są deep learningiem, czyli głębokim uczeniem. Zaczęły już nawet powstawać specjalne architektury głębokich sieci, aby proces uczenia był jak najlepszy, przykładem mogą być konwolucyjne sieci neuronowe, w których układ połączeń między neuronami inspirowany jest budową narządu wzroku (kory wzrokowej) ludzi. Obecnie potrafią już one rozpoznawać obiekty na zdjęciach szybciej i skuteczniej niż ludzie, a korzysta się z tego np. w sensorach pojazdów bezzałogowych.

W pracy badawczej stosuję głębokie sieci neuronowe do innych zadań. Uczę je przybliżać wyniki symulacji komputerowej ruchu drogowego. Do czego może się to przydać? Dokładna symulacja ruchu w dużej skali jest czasochłonna. Można oczywiście kupować coraz lepszy sprzęt, zrównoleglać obliczenia na wiele maszyn, procesorów i karty graficzne. Moc obliczeniowa jednak kosztuje, zrównoleglanie obliczeń nie jest łatwe, a czasem potrzebnych obliczeń jest po prostu za dużo (np. gdy badam wiele ustawień sygnalizacji świetlnej, aby wybrać najlepsze). Dlatego też stosuję przybliżenia symulacji ruchu, które mogą być obliczane znacznie szybciej kosztem pewnej (niedużej) utraty dokładności. Okazuje się jednak, że proste przybliżenia często nie wystarczają i dopiero sieci neuronowe przynoszą zadowalające rezultaty. W zespole badawczym TensorCell wytrenowaliśmy sieć neuronową na danych z około stu tysięcy symulacji komputerowych uruchomionych z różnymi parametrami, za jej pomocą przybliżamy wyniki symulacji komputerowej ruchu drogowego z błędem rzędu około 1-2%, ale otrzymujemy wyniki obliczeń o kilka rzędów wielkości szybciej niż w przypadku uruchamiania symulacji komputerowych, co daje możliwość przetestowania znacznie większej liczby ustawień świateł i potencjalnie zarządzania ruchem w czasie rzeczywistym.

Skuteczniejsze metody zarządzania ruchem

Dokładne zrozumienie działania i fenomenu skuteczności sieci neuronowych (oraz innych algorytmów sztucznej inteligencji) bywa trudne, a czasem sytuuje się poza zasięgiem większości ludzi. Przykładem może być pojedynek w go w 2016 roku pomiędzy jednym z najlepszych z ludzi w tej grze, Koreańczykiem Lee Sedolem, a programem AlphaGo stworzonym przez zespół z DeepMind. W trakcie pięciu rozgrywek AlphaGo wykonał ruchy, których nie spotyka się u profesjonalnych graczy go, po pewnym czasie okazywało się, że były świetne, ale nawet wielkim mistrzom zajęło dużo czasu, aby to zrozumieć (obecnie to ludzie grający w go uczą się od AlphaGo i zaczynają tworzyć i stosować nowe strategie gry; są jednak małe szanse na to, że ludzie ponownie będę wygrywać z najlepszymi programami). W przypadku mojego programu do sterowania ruchem drogowym również czasami obserwowałem wyniki (znajdowane ustawienia świateł), o których nie można było twierdzić, że są dobre, dopiero po przeprowadzeniu symulacji komputerowej udało się zaobserwować, dlaczego otrzymane wyniki faktycznie takie są. Może to pomóc tworzyć znacznie bardziej złożone, ale jednocześnie skuteczniejsze metody zarządzania ruchem w dużej skali niż metody, które stosuje się obecnie (np. typowa „zielona fala” lub też adaptacyjne sterowanie światłami na niedużym obszarze).

Program AlphaGo wygrywa w go ze wszystkimi swymi twórcami. Można więc powiedzieć, że „uczeń przerósł mistrza”. Podobnie rzecz się ma w przypadku stworzonej przeze mnie i mój zespół TensorCell sieci neuronowej, skoro ten uczeń, sieć neuronowa, potrafi tak dokładnie i szybko przybliżać wyniki symulacji komputerowej, którą opracowaliśmy wcześniej. Z drugiej strony, skoro tak dobrze wytrenowaliśmy tego ucznia, to być może jesteśmy dobrymi nauczycielami maszyn? Może być to pocieszające dla nas, ludzi, bo sieć neuronowa by tego nie potrafiła. Została wytrenowana do pewnego specyficznego zadania: przybliżania wyników symulacji ruchu drogowego. Nie potrafi utworzyć sieci, która byłaby potężniejsza od niej, a coś takiego potrafimy zrobić my, ludzie (warto jednak wspomnieć, że rozwijane są już też algorytmy AI, których celem jest tworzenie i uczenie innych algorytmów AI, które byłyby najlepsze w danym zadaniu, a więc w pewnym sensie mogłyby zastąpić ludzi w zadaniu uczenia maszyn – ta dziedzina AI nazywana jest metalearningiem, a więc metauczeniem). Możemy więc na razie spać spokojnie, przynajmniej ta sieć nie będzie w stanie stworzyć sztucznej inteligencji, która mogłaby zagrozić ludzkości.

Nauczyciel maszyn

Czy jednak coś takiego jest w ogóle możliwe i AI może faktycznie zagrozić ludzkości? Skoro powstają pojazdy autonomiczne jeżdżące bez udziału człowieka, mogą powstawać autonomiczne czołgi i samoloty oraz programy podejmujące kluczowe decyzje zamiast ludzi? Czasem może być to niebezpieczne i nie zawsze należy do tego dopuścić. Nie oznacza to jednak, że nie trzeba rozwijać metod sztucznej inteligencji. Mogą one przynieść znaczne korzyści, wyręczać ludzi w wykonywaniu niebezpiecznych lub żmudnych, czasochłonnych prac, pomagać w rozwiązywaniu trudnych problemów, będących dziś poza naszym zasięgiem. Wszelkie przedmioty, pomysły i odkrycia mogą być zastosowane zarówno w dobrych, jak i w złych celach, wszystko zależy od tego, kto je stosuje i jakie ma intencje. To samo dotyczy AI, choć w tym przypadku pewnym dodatkowym zagrożeniem jest to, że pomimo dobrych intencji superpotężne algorytmy AI mogą potencjalnie wymknąć się kiedyś spod kontroli ludzi. Dziś jesteśmy od tego bardzo daleko, wszystkie algorytmy AI są pod kontrolą, a naukowcy pracują też nad rozwiązaniami, które powinny zapewnić, że superinteligencja, która mogłaby kiedyś powstać, nie będzie mogła wyrządzić krzywdy ludzkości.

Komputery, które obecnie są przez ludzi głównie programowane, w przyszłości w coraz większym stopniu będą przez ludzi uczone. Zawodem przyszłości może być „nauczyciel maszyn” i będzie to zawód bardzo ważny i odpowiedzialny. To od ludzi będzie zależeć, czego komputery się nauczą i co będą mogły robić. Moje pokolenie przystosowało się do komputerów, można wręcz powiedzieć, że wychowaliśmy się razem z komputerami. Teraz jesteśmy wśród tych, którzy przystosują komputery do ludzi, dając im pewien poziom inteligencji, aby mogły nam jak najlepiej służyć.

Mgr Paweł Gora jest asystentem naukowym na Wydziale Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego.

Wróć