Duch w maszynie

Czy można stworzyć wirtualne organizmy żywe? Istoty będące programami komputerowymi z cechami żywych organizmów? Odpowiedzi na to pytanie naukowcy szukają od czasu wynalezienia maszyn liczących.

Czy można stworzyć wirtualne organizmy żywe? Istoty będące programami komputerowymi z cechami żywych organizmów? Odpowiedzi na to pytanie naukowcy szukają od czasu wynalezienia maszyn liczących.

Termin "sztuczne życie" (artificial life, AL) znany jest naukowcom od lat. Za pomocą różnych modeli danych i zaawansowanych algorytmów próbują symulować zachowania istniejących gatunków. Innym pomysłem jest próba stworzenia sztucznego życia, które nie naśladuje żadnej z istniejących w przyrodzie form, lecz funkcjonuje tylko i wyłącznie w obrębie komputera (lub sieci komputerowej). Osobnym zagadnieniem jest sztuczna inteligencja (artificial intelligence, AI). Najogólniej rzecz ujmując, jest to sztuczna sieć neuronowa, wzorowana na sieci neuronów budującej np. mózg człowieka, działająca równie sprawnie, jak jej biologiczny odpowiednik.

Jakie są podstawowe cechy istot żywych? Można przyjąć, że jest to zdolność organizmu do replikacji (rozmnażania się) i zdolność gatunku do ewolucji. Bez problemu można napisać program, który symuluje te dwie cechy żywych organizmów, ulokowanych w umownym wirtualnym środowisku. Czy jednak taką symulację można traktować jak żywy organizm lub nawet całą populację?

Alan Turing (1912-1954) - Matematyk brytyjski, jeden z ojców współczesnej informatyki. Twórca tzw. maszyny Turinga, abstrakcyjnego urządzenia, której koncepcja jest podstawą budowy współczesnych komputerów. Prowadził także badania nad sztuczną inteligencją, w czasie II wojny światowej pracował nad złamaniem kodu Enigmy.

Alan Turing (1912-1954) - Matematyk brytyjski, jeden z ojców współczesnej informatyki. Twórca tzw. maszyny Turinga, abstrakcyjnego urządzenia, której koncepcja jest podstawą budowy współczesnych komputerów. Prowadził także badania nad sztuczną inteligencją, w czasie II wojny światowej pracował nad złamaniem kodu Enigmy.

Można się zastanawiać czy obserwowana przez wszystkich miłośników komputerów ewolucja systemów informatycznych przypomina ewolucję genetyczną. Jeśli tak jest, być może ewoluujące programy i systemy osiągną w końcu poziom uznawany za sztuczną inteligencję. Brzmi to fantastycznie, ale warto zdawać sobie sprawę, że inteligencja, która powstanie w ten sposób, może być dla człowieka nierozpoznawalna, podobnie jak rośliny nie rozpoznają inteligencji zwierząt. Jednym z najsłynniejszych sposobów na sprawdzenie, czy mamy do czynienia ze sztuczną inteligencją, jest tzw. test Turinga, po raz pierwszy przedstawiony w roku 1950.

Turing uznał, że o sztucznej inteligencji można mówić, gdy człowiek na podstawie dialogu będzie w stanie rozstrzygnąć, czy ma do czynienia z maszyną, czy z człowiekiem. Być może jednak, sztuczna inteligencja, która pojawi się w sieci komputerowej, będzie na tyle obca człowiekowi, że test Turinga okaże się niemiarodajny. Czym innym jest jednak sztuczna inteligencja, a czym innym tworzenie wirtualnych organizmów lub programów wzorowanych na odkryciach biologii i teorii ewolucji.

Próba stworzenia prawdziwego życia rozwijającego się w obrębie komputera wymaga zaawansowanej wiedzy biologiczno-chemicznej oraz informatycznej. Dla wielu naukowców najbardziej pożądaną sytuacją byłoby stworzenie wirtualnych organizmów rozwijających się wyłącznie w obrębie systemu operacyjnego, żyjących jako procesy, konkurujących ze sobą o dostęp do czasu procesora (podobnie jak żywe organizmy konkurują ze sobą o dostęp do pożywienia). Można wyobrazić sobie programy, których kod traktowany jest jak kod genetyczny, w kolejnych mutacjach przekształcany na coraz bardziej złożone formy. To podejście w praktyce jest bardzo trudne do realizacji - tradycyjne języki programowania, a także kod maszynowy w większości przypadków nie wytrzymują próby losowej modyfikacji kodu (co symulowałoby mutacje występujące w naturze).

Metody sztucznego życia stosowane są do również do symulacji zachowań grup zwierząt, np. kluczy ptaków.

Metody sztucznego życia stosowane są do również do symulacji zachowań grup zwierząt, np. kluczy ptaków.

Chociaż sztuczne życie to wciąż głównie sfera badań naukowych, wiele odkryć znalazło już praktyczne zastosowanie. W przemyśle filmowym stosowane są tzw. boidy, programy symulujące zachowanie kluczy ptaków, rojów owadów. Rozwiązania te są tak realistyczne, a przy okazji tanie, że filmowcy nie chcą trudzić się z tresowaniem i filmowaniem prawdziwych zwierząt. Wirtualne gromady zwierząt widzieliśmy już m.in. w dwóch pierwszych filmach o Batmanie (stada nietoperzy i pingwinów), disneyowskiej animacji Król Lew i serialu Star Trek: Voyager, prawdopodobnie także we Władcy Pierścieni (wrony Sarumana). Możesz sam sprawdzić, jak realistycznie zachowują się grupy ptaków, uruchamiając program 3D Boids, który znajdziesz na naszych krążkach. W nowych produkcjach spece od efektów specjalnych wykorzystują też metody sztucznej inteligencji. Oprogramowanie Massive, za pomocą którego wygenerowano olbrzymie armie we Władcy Pierścieni, pierwotnie tworzone było z myślą o symulowaniu różnego typu ekosystemów. W filmie każdemu wirtualnemu wojownikowi przypisano pewną dozę "inteligencji", dzięki której potrafi reagować na zdarzenia na polu bitwy, a ruchy całych oddziałów wyglądają niezwykle realistycznie.

Sieci neuronowe od dawna są też wykorzystywane np. w programach typu OCR, a także w aplikacjach rozpoznających twarze poszukiwanych przestępców w tłumie przechodniów. Są również stosowane w różnego typu systemach eksperckich do przeszukiwania dużych zbiorów danych (tzw. data mining), są powszechnie implementowane w grach komputerowych (sterują działaniami komputerowych przeciwników).

Sztuczne organizmy stały się podstawą wielu gier komputerowych, z pionierskimi "Creatures" na czele. Wirtualne organizmy, hodowane i ewoluujące w komputerowych symulacjach, znajdują zastosowanie także w przemyśle. Stworzenia, które umiejętnie poruszały się w wirtualnym środowisku, stanowią podstawę programów sterujących np. robotami przemysłowymi.

Sztuczne organizmy stały się podstawą wielu gier komputerowych, z pionierskimi "Creatures" na czele.

Sztuczne organizmy stały się podstawą wielu gier komputerowych, z pionierskimi "Creatures" na czele.

Najbardziej rozpalającą wyobraźnię dziedziną badań nie jest jednak sztuczne życie, lecz sztuczna inteligencja. Możliwość opracowania maszyny lub programu, którego zdolność myślenia, analizowania faktów i wyciągania wniosków będzie porównywalna lub większa niż u człowieka budzi wielkie nadzieje, ale także obawy. Czy superinteligentne maszyny nie pozbędą się swoich niezbyt mądrych twórców... czyli nas? Na razie jednak to rozważania czysto teoretyczne - wciąż nie udało się skonstruować maszyn i programów o inteligencji porównywalnej z ludzką. Próby budowania sztucznej inteligencji opierają się na tworzeniu sieci neuronowych, odpowiadających ludzkim neuronom. Takie sieci, symulowane przez programy komputerowe lub tworzone z elementów elektronicznych, potrafią się uczyć i coraz lepiej rozwiązywać zadane problemy.

Problematyki związanej ze sztuczną inteligencją nie da się nawet pobieżnie opisać w ramach jednego artykułu. Jeśli nasi czytelnicy będą zainteresowani tego typu zagadnieniami, na pewno do tematu wrócimy, postaramy się też pokazać praktyczne zastosowania metod sztucznej inteligencji.

Gra w życie

Jednym z najprostszych przykładów pseudożycia symulowanego w komputerze jest tzw. gra w życie (ang. game of life). Pomysł zaprezentował w roku 1970 John Conway, matematyk brytyjski zajmujący się m.in. teorią liczb i gier. Pierwsza gra uruchomiona była na... planszy do gry w "Go" i na podłodze wyłożonej kwadratowymi płytkami.

Przy tworzeniu wielkich bitew w filmie Władca pierścieni (tu kadr z Powrotu króla) korzystano z oprogramowania opartego na metodach sztucznej inteligencji i sztucznego życia.

Przy tworzeniu wielkich bitew w filmie Władca pierścieni (tu kadr z Powrotu króla) korzystano z oprogramowania opartego na metodach sztucznej inteligencji i sztucznego życia.

Sam algorytm jest banalny i bardzo prosty do zaimplementowania w dowolnym języku programowania - w naszym przykładzie użyjemy Borland Delphi. Obszar doświadczalny przechowywać będziemy w tablicy Organizm [1..100][1..100]. Każdy element przechowywać będzie wartość 1 lub 0, oznaczającą "żyjący" organizm lub jego brak. Po uruchomieniu gry co określoną liczbę sekund wykonywane będzie obliczenie aktualnego stanu pola doświadczalnego. Jeśli organizm ma dwóch lub trzech sąsiadów, pozostaje żywy. Jeśli organizm ma czterech sąsiadów - umiera z "przeludnienia", jeśli zaś tylko jednego sąsiada lub w ogóle nie ma - umiera z "samotności".

Jeśli pusta komórka pola ma trzech sąsiadów - pojawia się tam nowy organizm. Za pola sąsiednie uznajemy pola stykające się brzegami i rogami z daną komórką (a więc w sumie jest ich 8). Aby przyspieszyć sprawdzanie liczby sąsiadów, zakładamy, że na brzegach obszaru doświadczalnego znajdują się wyłącznie puste pola. W programie używamy pewnej sztuczki - tablica Organizm ma rozmiar [0..101][0..101], a więc większy niż potrzeba (organizmy żyją tylko na polach[1..100][1..100]).

Nadmiarowe pola mają zawsze wartość zero, a dzięki nim nie musimy sprawdzać przypadków szczególnych - organizmów znajdujących się na brzegu obszaru doświadczalnego.

Zaprojektowanie aplikacji w Borland Delphi, która będzie wyświetlała kolejne generacje organizmów w "Grze w życie", jest proste. Kluczową rolę odgrywa tutaj komponent, na którym wyświetlany będzie bieżący obraz pola i komponent Timer, który w określonych odstępach czasu wywołuje funkcję obliczającą kolejne pokolenia organizmów.

"Gra w życie" to najprostszy przykład wirtualnych pseudoorganizmów.

"Gra w życie" to najprostszy przykład wirtualnych pseudoorganizmów.

W rzeczywistości w funkcji obsługującej zdarzenie OnTimer znajdują się trzy wywołania: procedura ObliczSasiadow oblicza liczbę sąsiadów każdego organizmu znajdującego się na naszym polu doświadczalnym i umieszcza ją w tablicy Sasiedzi. Kolejna procedura RysujPole wyświetla wszystkie komórki pola doświadczalnego, zależnie od obecności organizmu (sprawdzanego w tablicy Organizm) i liczby jego sąsiadów (sprawdzanej w tablicy Sasiedzi). Ostatnia procedura, NastepnePokolenie, oblicza stan pola doświadczalnego w kolejnym pokoleniu organizmów (na podstawie tablic Sasiedzi i Organizm).

Dodatkowo w naszym programie umieścimy moduł losujący z zadanym prawdopodobieństwem początkowego układu organizmów. Warto poobserwować zachowanie organizmów przy różnym wyjściowym stopniu zapełnienia obszaru doświadczalnego. Niektóre drobne układy komórek poruszają się, inne znikają, jeszcze inne są stabilne, po okresowych zmianach wracając do formy wyjściowej. "Gra w życie" jest bardzo prostym przykładem zagadnień sztucznego życia, obrazującym jednak, jak ciekawe efekty można osiągnąć za pomocą prostych algorytmów.


Zobacz również