sztuczna inteligencja
sztuczna inteligencja

MiniSI #2: Po co nam sztuczna inteligencja?

Współczesny postęp naukowy i technologiczny w dużej mierze zależy od komputerów oraz wymyślnych algorytmów, które są na nich uruchamiane; czasy, gdy do dokonania odkrycia potrzebna była tylko i wyłącznie głowa, raczej już minęły. Podobnie sprawa ma się z rozwojem innych branż – cały świat operuje na coraz większej ilości danych, przez które trzeba się jakoś przekopać. A tam, gdzie zawodzą nawet najbardziej wymyślne algorytmy, pojawia się sztuczna inteligencja.

W pierwszym odcinku cyklu poświęconym wyjaśnieniu definicji SI wspomniałem, że z informatycznego punktu widzenia sztuczna inteligencja stosowana jest do rozwiązywania problemów efektownie niealgorytmizowanych (albo nieefektownie algorytmizowanych). Teoretycznie każdy problem techniczny da się rozwiązać skończoną liczbą obliczeń; praktycznie natura niektórych problemów jest taka, że rozwiązywanie ich tradycyjnymi metodami trwałoby mniej więcej nieskończoność, natomiast zastosowanie jakiejś sprytnej sztuczki (w postaci na przykład jakiejś metody inteligencji obliczeniowej) pozwala znacznie skrócić ten czas. Wliczają się w to również sytuacje, w których zaprogramowanie wszystkich możliwych ścieżek postępowania jest czasochłonne, a także, ze względu na złożoność, obarczone ryzykiem przeoczenia jakiegoś aspektu.

Problem komiwojażera

Na podstawie prostego przykładu przedstawię, czym różni się podejście, nazwijmy to, typowe, standardowe, od podejścia związanego z inteligencją obliczeniową. Pochylimy się na moment nad problemem zwanym problemem komiwojażera; nie jest to przykład idealny, ale na potrzeby tego materiału w zupełności wystarczy. Zagadnienie jest dość proste – istnieje obszar, na którym znajduje się dowolna liczba miast do odwiedzenia; tytułowy komiwojażer zaczyna w losowo wybranym mieście i musi odwiedzić wszystkie pozostałe tak, by ostatecznie powrócić do miasta startowego. W tym czasie inne miasta muszą być odwiedzone dokładnie raz, a ponadto komiwojażer chce przebyć możliwe najkrótszą drogę.

Pierwsze rozwiązanie, jakie przychodzi do głowy studentom informatyki stykającym się z problemem, to obliczenie wszystkich możliwych kombinacji dróg i wybranie tej, która jest najkrótsza. Niestety rozwiązanie to zadziała dla co najwyżej kilku miast, ponieważ dla 20 miast liczba możliwych kombinacji ścieżek wynosi aż sześć razy 10 do potęgi 16. Liczenie wyniku trwałoby bardzo, bardzo długo (wręcz nieskończenie długo), a przecież naszą ambicją jest opracowanie metody liczenia trasy dla dowolnej liczby miast, a nie tylko dla kilku.

Jak wspomniałem, przykład nie jest idealny, ponieważ problem komiwojażera da się rozwiązać w sposób bardziej typowy, konkretnie za pomocą algorytmu z powrotami; nie będę się jednak zagłębiał w informatyczne szczegóły. Ale to nie wszystko, ponieważ rozwiązanie możemy znaleźć także dzięki tak zwanemu algorytmowi genetycznemu, który należy do rodziny algorytmów ewolucyjnych i jest częścią zagadnienia inteligencji obliczeniowej.

sztuczna inteligencja komiwojazer

Zastosowanie algorytmu genetycznego nieco przedefiniowuje nasz problem. Nadal chcemy odnaleźć najkrótszą trasę łączącą wszystkie miasta, natomiast algorytm genetyczny działa w sposób dość specyficzny, zainspirowany biologiczną ewolucją. Pojawia się więc selekcja najlepszych rozwiązań (rozwiązaniem jest po prostu najkrótsza trasa), krzyżowanie rozwiązań pomiędzy sobą, a także mutacje, zaś wszystkie te operatory genetyczne podlegają mniejszej lub większej losowości. Tym samym nie musimy programować konkretnych obliczeń pasujących tylko do problemu komiwojażera (jak w algorytmie z powrotami), ale naszym zadaniem jest zaprogramowanie z grubsza ogólnego algorytmu genetycznego i jedynie dopasowanie go do problemu.

Ktoś może spytać – czym więc ta metoda różni się od normalnego algorytmu? Otóż niemal dokładnie ten sam algorytm genetyczny można wykorzystać do rozwiązywania także innych problemów. Wymagane są jedynie drobne zmiany, które pozwolą dopasować go do innej natury problemu, natomiast jego schemat działania (czyli wykorzystywanie operatorów genetycznych) pozostaje zawsze taki sam. Algorytmem genetycznym można na przykład uczyć sztuczne sieci neuronowe, natomiast typowy algorytm rozwiązujący problem komiwojażera będzie miał tylko jedno zastosowanie. Oczywiście trochę tutaj upraszczam, ale musicie mi te uproszczenia wybaczyć, bo bez nich mógłbym pisać książkę, a nie taki materiał :>

sztuczna inteligencja
grafika z unsplash

General Problem Solver

Skoro znamy już ogólną różnicę w podejściu do algorytmów, możemy skupić się na ich zastosowaniach. W latach 50, kiedy sztuczna inteligencja pozostawała w sferze głównie teoretycznej, ambicją uczonych było stworzenie maszyny zwanej General Problem Solver. Jak można się domyślić po nazwie, twór ten miał być przeznaczony do rozwiązywania każdego problemu. Nie wiemy, jak coś przeliczyć? Idziemy z prośbą do maszyny. Potrzebujemy zdekodować genom człowieka? Przedstawiamy genom maszynie. Pojawiła się nowa choroba i potrzebujemy na nią lekarstwa? Przekazujemy maszynie objawy i wyniki badań, a ona robi za nas resztę. I tak dalej, i tym podobne.

Nie muszę dodawać, że ambicje te mocno przerastały nie tylko ówczesne, ale także dzisiejsze możliwości. General Problem Solver wydaje się żywcem wzięty z opowiadań science-fiction, lecz absolutnie nie zniechęciło to badaczy. Wysłanie człowieka na Księżyc też wydawało się niemożliwe, a jednak się udało. I jak to często już bywało, badania podjęte w kierunku stworzenia General Problem Solvera przyczyniły się do rozwoju tego, co obecnie znamy.

sztuczna inteligencja
grafika z pexels

Systemy ekspertowe

Już w latach 60 zaczęły powstawać pierwsze tak zwane systemy ekspertowe; możemy je zdefiniować jako programy, których zadaniem było rozwiązywanie problemów z wykorzystaniem wiedzy eksperckiej oraz procedury wnioskowania. Idea wymagała, by taki system został zasilony wiedzą (w formie tak zwanych reguł wnioskowania) posiadaną przez osobę z wieloletnim doświadczeniem w danej dziedzinie. Następnie odpowiednie algorytmy, w odpowiedzi na zadane systemowi pytania, udzielały odpowiedzi; odpowiedzi nie zawczasu przygotowanej, ale odpowiedzi wywnioskowanej na podstawie dostępnej wiedzy.

Przykładem może być tutaj system MYCIN, którego stworzono w celu diagnozy chorób zakaźnych; operował on na danych pacjenta oraz wynikach testów laboratoryjnych, a także na uprzednio wydanych decyzjach. MYCIN absolutnie nie zastępował lekarza; jego rolą było tylko wspomaganie decyzji. Innym systemem tego typu był PROSPECTOR stworzony do wspomagania pracy geologów. Na podstawie podanej mu zawartości różnych minerałów (dane obserwacyjne) i przy wykorzystaniu bazy wiedzy zawierającej modele różnych typów złóż mineralnych (wiedza ekspercka) system pozwalał na przykład szacować zasoby danych złóż. Dzięki niemu udało się choćby wykryć w stanie Waszyngton bogate złoża molibdenu.

To było w latach 70. Łatwo sobie wyobrazić, że aktualnie systemy tego typu są znacznie bardziej rozbudowane. Znajdują zastosowanie niemal w każdej dziedzinie, ale, co najważniejsze, w wielu zastosowaniach podejmują decyzje bardziej trafne niż człowiek. Przykładowo ten system, na podstawie zwykłych zdjęć, rozpoznaje nowotwór skóry z dokładnością 95%, podczas gdy lekarze dermatolodzy skuteczność mają na poziomie 86.6%.

I to wszystko byłoby niemożliwe bez sztucznej inteligencji. Podejście, jak ustaliliśmy, standardowe, wymagałoby od programistów zaprogramowania każdej możliwej sytuacji, w tym przypadku choćby kształtu, rozmiaru i koloru czerniaka. Jeśli zaś zdecydujemy się na użycie sztucznej sieci neuronowej, to zadaniem programisty pozostaje stworzyć strukturę sieci, napisać metodę jej uczenia, a następnie wrzucić do sieci dane, na podstawie których sieć ma się nauczyć; w tym przypadku byłyby to po prostu zdjęcia zdiagnozowanych uprzednio czerniaków. Taka sieć jest w stanie wiedzę uogólniać i wydać poprawną decyzję nawet wtedy, jeśli zostanie wykorzystana do analizy zdjęcia, którego, technicznie rzecz biorąc, jeszcze nie widziała.

sztuczna inteligencja
grafika z pexels

Nauczyć maszynę poruszania się

Nieco prostszym przykładem zastosowania sztucznej inteligencji może być robotyka, czyli nauka zajmująca się tworzeniem robotów, maszyn wykonujących za nas jakąś pracę. Współcześnie sztuczna inteligencja staje się nieodłączną częścią robotyki, ponieważ daje dużo większe możliwości zarówno robotom, jak i ich twórcom.

Wyobraźmy sobie, że mamy humanoidalnego robota i chcemy sprawić, by poruszał się stabilnie i radził sobie z różnymi przeszkodami. Podejście tradycyjne wymagałoby od nas programowania każdego szczegółu wykonywanej czynności. Chcemy, by robot zrobił krok lewą nogą? Programista musi mu powiedzieć: podnieś lewą nogę na wysokość 30 centymetrów, przesuń ją do przodu o 70 centymetrów, podnieś kolano o osiem stopni, opuść na ziemię z prędkością 30 centymetrów na sekundę. Jeśli chcemy, by robota można było lekko popchnąć, musimy zaprogramować osobny scenariusz, w którym uwzględnione zostaną także reakcje na, przykładowo, zmianę we wskazaniach czujnika równowagi. Jeśli chcemy, by robot poruszał się jak żywy człowiek, czeka nas tytaniczna i niewdzięczna praca, a i tak prawdopodobnie przeoczymy jakiś scenariusz zachowania.

Sztuczna inteligencja pozwala nam robota nie tyle zaprogramować, ile nauczyć; sytuacja bardzo przypomina sposób, w jaki uczą się chodzić małe dzieci, czyli metodę prób i błędów. Wykonany zostaje jakiś ruch i robot się przewraca? Jest sygnał, że ta czynność nie jest pożądana. Robot lekko modyfikuje parametry poruszania się (na przykład zrobi krótszy rok albo inaczej ułoży stopę) i ponawia czynność. Udało się nie przewrócić? Mamy sygnał, że czynność jest w porządku. Ponownie nieco upraszczam sytuację, ale wiecie, o co mi chodzi. Nie programujemy każdej czynności, ale pozwalamy, by system sam się ich nauczył.

Zerknijcie sobie na tę stronę; autor zaprezentował na niej, w jaki sposób stworzony z prostokątów ludzik „uczy się” zachowywać równowagę i poruszać. Zastosował tutaj właśnie algorytm genetyczny, który magicznie (siłą nauki!) sprawia, że każda kolejna generacja ludzików działa coraz stabilniej. Myślę, że to dość dobre zobrazowanie przewagi sztucznej inteligencji nad typowymi algorytmami.

sztuczna inteligencja
grafika z unsplash

Mówić i rozumieć mowę

Rozumienie ludzkiej mowy było przez badaczy rozwijane niemalże od początku rewolucji związanej z metodami uczenia sztucznej inteligencji. Ambicją było stworzenie systemów, które potrafiłyby czytać tekst (synteza mowy), rozumieć, co do nich mówimy, a także tłumaczyć mowę na inne języki. I dobra wiadomość jest taka, że tym razem ambicje nie przerosły naszych możliwości. Nie istnieje tutaj lepszy przykład niż tak często przez nas wykorzystywany Tłumacz Google. Każdy jego aspekt jest jakimś systemem sztucznej inteligencji, które, połączone w całość, dają nam kompletny produkt.

Ktoś może zapytać – nie wystarczy po prostu nagrać głosu i przypisać mu konkretnego znaczenia? W teorii brzmi to prosto, ale należy sobie uświadomić, że w komputerze wszystko przechowywane jest w postaci liczb. Jeśli do systemu załadowane zostanie nagranie, na którym ja mówię „cześć asystencie”, a następnie będziemy chcieli porównać nagranie z tymi samymi słowami, ale wypowiedzianymi przez inną osobę, to technicznie będą się one różniły, choćby natężeniem dźwięku. Nie da się ich bezpośrednio porównać, a przynajmniej nie bez katorżniczej pracy. Sztuczna inteligencja ponownie upraszcza nam sytuację, a rozwój asystentów domowych, tłumaczy (nie tylko tego googlowego, fantastycznie działa na przykład DeepL), czy nawet syntezatora dostępnego na głupim Discordzie, wprost dowodzi nam, jak wielka jest jej siła.

Rozumienie mowy i tekstu jest również powiązane z tworzeniem zwykłych czatowych botów, jakich wiele było w ciągu ostatnich kilkunastu lat. Myślę, że w całkiem niedalekiej przyszłości spora część komunikacji biur obsługi klienta może zostać zastąpiona przez systemy bardziej wyrafinowane, niż „aby przejść dalej, naciśnij 2”. Wystarczy dać sztucznej inteligencji dostęp do bazy pytań, udzielanych na nie odpowiedzi i uzyskiwanej informacji zwrotnej, a także wyposażyć ją w umiejętność mówienia i rozumienia mowy; voila, właśnie kolejny zawód przeszedł do historii.

sztuczna inteligencja sophia
Robot Sophia stworzony przez Hanson Robotics; na jednym ze spotkań powiedziała, że chce pomóc nam tworzyć przyszłość / zdjęcie z Wikipedii

Stworzyć sztuczne życie

Na sam koniec przedstawiam ambicję, której, co całkiem prawdopodobne, nigdy nie zdołamy zrealizować w pełni. Chodzi o stworzenie sztucznego życia, w pełni syntetycznego bytu, który byłby w stanie egzystować w naszym środowisku. Idea jest chyba nawet bardziej ambitna niż wspomniana wcześniej maszyna do rozwiązywania problemów wszelakich. Nie dziwi jednak chęć zajęcia się tym zagadnieniem; naukowców niemal wszystkich dziedzin fascynuje życie, jakie znamy. Skąd się wzięło, jakimi rządzi się prawami, jak się będzie dalej rozwijało? Pytań jest prawdziwe mnóstwo; na część z nich odpowiedzi znamy, na niektóre odpowiedzi się domyślamy, ale wciąż nie wiemy wszystkiego.

Wiemy jednak jedno – nie stworzymy syntetycznego bytu bez sztucznej inteligencji. Powiedziałbym nawet, że wymagać to będzie technik jeszcze bardziej zaawansowanych, niż te wykorzystywane współcześnie. Jednakże, bez względu na efekt, sam proces dążenia do powstania sztucznego życia z pewnością będzie dla badaczy bardzo kształcący. I kto wie, być może motywowani stworzeniem nowej, syntetycznej rasy, dokonają kolejnych przełomowych dla naszej technologii odkryć. I tym miłym akcentem zakończę dzisiejszy materiał. Do następnego!

źródło: Leszek Rutkowski Metody i techniki sztucznej inteligencji / grafika tytułowa z unsplash

_
#MiniSI to cykl poświęcony zagadnieniu sztucznej inteligencji, w którym, bazując głównie na literaturze, staram się rozprawić z zagmatwaniem, poplątaniem, niejasnościami i różnorakimi mitami jej dotyczącymi.