O powstawaniu (mechanicznych) gatunków

paź
12
2014

Poniższy tekst ukazał się w czasopiśmie „Nowa Fantastyka” nr 8/2013.

Biologia to nauka o życiu. Życiu opartym na związkach węgla, bo innego jak dotąd nie znamy. Wśród kryteriów, które muszą zostać spełnione, by coś nazwać żywym, nie ma jednak nic o budulcu. W teorii zatem, a być może niedługo również w praktyce, pole zainteresowań biologów rozszerzy się, obejmując, między innymi, maszyny.

METAL O METAL
Weź kilkadziesiąt garści śrubek różnych rozmiarów, tyleż nakrętek oraz blaszek z otworami rozmaitych średnic. Wrzuć to wszystko do pojemnika z zamknięciem i wytrząsaj. Jeżeli owo wytrząsanie trwało dostatecznie długo, to po otwarciu pudełka zobaczysz rzecz zgoła niesamowitą – znaczący odsetek śrub solidnie przykręconych pasującymi mutrami do odpowiednich blach.

Brzmi jak czary, a to tylko ewolucja. Ten szkolny eksperyment pokazuje w najprostszy z możliwych sposobów, jak ona działa, i przypomina, że jest zjawiskiem uniwersalnym. Gdy tylko zaistnieją dwa podstawowe warunki, tj. odpowiednio duża rozpiętość cech w materiale wyjściowym oraz jakiś mechanizm pozwalający ten materiał segregować pod względem owych różnych cech – ewolucja rusza z kopyta. A jaki to będzie materiał – aminokwasy i cukry, krzemowe tranzystory, algorytmy czy śrubki, podrygujące na pozór chaotycznie w skrzynce – jest już sprawą drugorzędną.Z właściwą sobie sugestywnością zilustrował to Stanisław Lem w „Niezwyciężonym”. Planeta, na której ląduje tytułowy kosmolot, ma dwie biosfery – jedną białkowo-nukleinową i drugą, powstałą z porzuconych na niej przed milionami lat maszyn. Tak, biosfery, bo choć co do oryginalnego tworzywa bardzo są odmienne, to jednak rozwijają się podług dokładnie tych samych zasad darwinowskiego doboru naturalnego.

Niejako pomiędzy wierszami, Lem zwrócił uwagę na jeszcze jedną rzecz: że procesy ewolucyjne nie zachodzą w jakiejś abstrakcyjnej próżni, lecz w świecie materialnym. Innymi słowy, dobór nie działa li tylko na poziomie informacji, ale również jej fizycznego ucieleśnienia. Czyli fenotypu. Konkretnego, namacalnego organizmu. Hardware’u, krótko mówiąc.

STARY, DOBRY SCHEMAT
Lem przez niektórych uważany jest wręcz za proroka, ale akurat w kwestii ewoluujących maszyn koncepcyjnie wyprzedzili go choćby von Neumann czy Edward F. Moore. Tym niemniej, kiedy powstawał „Niezwyciężony”, wszystko to było kompletną i nierealizowalną w praktyce fantazją. Można było teoretyzować, kreśląc na kawiarnianych serwetkach schematy samoreplikujących się robotów, ale przy braku technologicznie zaawansowanych komponentów i odpowiednich mocy obliczeniowych na rysowaniu się kończyło.

Jednak idei tak kuszącej, i tak dobrze przetestowanej przez matkę Naturę, nie sposób porzucić. Zamiast zatrudniać tabuny koderów, puśćmy algorytmy na żywioł, niech w toku darwinowskiej walki o byt same znajdują najlepsze z rozwiązań.

Jednym z pierwszych, który postanowił to zrobić, był John H. Holland z Uniwersytetu Michigan. Opracowana przezeń strategia ograniczona jednak była do problemów, których rozwiązania mogą być wyrażone w formie równań matematycznych. W 1992 r. John R. Koza rozwinął jego metodę w taki sposób, że ewoluować już mogły całe programy, niezależnie od swojej wielkości i struktury. Tak narodziło się programowanie genetyczne, polegające, w dużym uproszczeniu, na tym samym, co od prawie czterech miliardów lat steruje światem ożywionym na Ziemi.

HODOWANIE ALGORYTMÓW
Krok nr 1: zbuduj środowisko, które będzie wynagradzać algorytmy szybsze, dokładniejsze, czy pod jakimkolwiek innym względem lepsze. Krok nr 2: utwórz populację programów-zarodków, losowo mieszając elementy z „puli genowej” odpowiednich funkcjonalności i instrukcji. Krok nr 3: usiądź, zrelaksuj się i obserwuj, jak ewolucja odwala resztę roboty.

W każdym kolejnym pokoleniu jedne programy obumierają, inne produkują rezultat. Najgorsi producenci są odrzucani, najlepsi „spółkują” (tj. wymieniają się fragmentami kodu). Od czasu do czasu możesz też dorzucić jakąś przypadkową mutację, żeby cały proces jeszcze bardziej przypominał naturę.

Metoda ta pozwala otrzymać optymalne rozwiązania nawet wówczas, gdy programista wie bardzo mało na temat problemu. Ba! Końcowy wynik niejednokrotnie zaskakuje również ekspertów (np. antena, „wyewoluowana” przez program genetyczny z NASA okazała się dwukrotnie sprawniejsza od wszystkiego, co inżynierowie tej agencji zdołali wymyślić).

Ale nic za darmo. Software’owa ewolucja pochłania mnóstwo obliczeniowego czasu, wygenerowany kod bywa kompletnie dla ludzi niezrozumiały, a samo rozwiązanie, choć jest optymalne, to zarazem tak specyficzne, że najmniejsza zmiana parametrów wejściowych czyni je już bezużytecznym.

Z tym ostatnim można by sobie poradzić, tworząc układ wyższego rzędu – programowanie meta-genetyczne. Nie jedno zadanie –> jedna ścieżka ewolucyjna –> jeden konkretny programik, lecz cały ekosystem. Programy modyfikujące inne programy, w środowisku, które oferuje możliwie szerokie spektrum wyzwań. Sofware’owy „bulion pierwotny”, w którym nieustanne, swobodne rekombinacje, mutacje, delecje i substytucje kawałków binarnego kodu doprowadziłyby po jakimś czasie do powstania swoistej biblioteki, repozytorium sztucznych genów „na każdą okoliczność”.

Tak, jak w przypadku bakterii, które niemal na naszych oczach uodparniają się na kolejne antybiotyki. Co sprawia, że tak szybko ewoluują? Między innymi ogromny, współdzielony bank genetycznych wariantów, po które w razie potrzeby mogą sięgnąć.

NIE TYLKO SOFTWARE
Ale dlaczego nie pójść dalej? „Wyewoluowany” program to wciąż tylko program. Trzeba go jeszcze przenieść do maszyny, która go wykona. Albo i nie, jeżeli kod okaże się dla niej nieczytelny. Wyeliminujmy więc ten etap i zróbmy tak, by dusza i ciało, instrukcja i jej egzekutor, software i hardware, ewoluowały nierozłącznie. Parę miesięcy temu dużą popularność wśród internautów zdobył filmik inżynierów z Uniwersytetu Cornella o ewoluujących robotach („Squishy robots evolve to run”, www.news.cornell.edu) – zabawny i bardzo pouczający jako demonstracja konceptu (tj. jednoczesnej ewolucji programu i podległych mu „cielesnych” składników maszyny). Ale to wciąż tylko komputerowa symulacja, Darwin w cyberprzestrzeni, a nie w realu. W realu chcemy prawdziwych flaków, śrubek i nakrętek, mikroczipów, które by były tak samo plastyczne i zmienne, jak węglowodany i białka. Albo przynajmniej zbliżone do nich pod względem adaptywności. Czy istnieje coś takiego?

Owszem, bezpośrednio programowalna macierz bramek (ang. Field-programmable gate array) – układ scalony, którego strukturę logiczną można dowolnie, i wielokrotnie, przearanżowywać. Jak białka w komórce. W połowie lat dziewięćdziesiątych zaczął się nimi bawić Adrian Thompson, informatyk z University of Sussex. Jego FPGA były bardzo proste, zaledwie sto bramek logicznych. Cel, który przed nimi postawił, również nie należał do skomplikowanych: rozróżnij precyzyjnie dwa dźwięki. Na start każdy ze scalaków dostał po kawałku cyfrowego „DNA” – losowy misz-masz zer i jedynek. Co dalej, wiadomo – selekcja i „kopulacja” najlepiej przystosowanych czipów. Przez pierwszych sto kilkadziesiąt pokoleń nie było praktycznie żadnych postępów. Po 220 jeden z FPGA zaczął naśladować sygnał wejściowy. Po 650 najlepszy z czipów rozpoznawał falę o częstotliwości 1kHz. Po 1400 rozróżnialność tonów osiągnęła poziom 50%. A po ponad 4000 pokoleń była już perfekcyjna.

Kiedy jednak dr Thompson zajrzał do wnętrza zwycięskiej FPGA, zobaczył, że ze stu bramek pozostało w użyciu tylko trzydzieści siedem, zorganizowanych w dziwaczne pętle sprzężeń. Pięć z nich nie było w żaden sposób połączonych z resztą, mimo to obecność każdej okazała się absolutnie niezbędna dla prawidłowego funkcjonowania scalaka. Jednym słowem, Thompson był w szoku. Jego eksperymentalna hodowla wydała na świat doskonale przystosowany i prawidłowo funkcjonujący elektroniczny organizm, ale jak i dlaczego on działał, przestało być pod koniec zrozumiałe.

CIEŃ CZARNEJ CHMURY
Tak to już w życiu jest, coś za coś. Fajnie byłoby móc przerzucić trud projektowania coraz bardziej skomplikowanych urządzeń z inżynierów na dobór naturalny, zgodnie z powiedzeniem „chłop śpi, a zboże samo mu rośnie”. Co programistom i konstruktorom może zająć lata, cyber-darwinizm zrobi w tydzień. W rzeczy samej, według niektórych ta droga jest jedyną, rokującą jakiekolwiek realne nadzieje na powstanie sztucznej inteligencji.

Nie wolno jednak zapominać o chaotycznej i z gruntu nieprzewidywalnej naturze procesów ewolucyjnych. Póki co, wszystko jest jeszcze na etapie prób, pojedynczych, ostrożnych wycieczek w nieznane, pionierskich eksperymentów i niegroźnie specyficznych problemów. Ale ewolucja, raz spuszczona z łańcucha jest siłą, która nie zna żadnych barier ni ograniczeń, i która nie znosi żadnej nad sobą kontroli. Jeżeli spróbujemy w pełni wykorzystać jej potencjał, może się to skończyć jak na Regis III – wielką, czarną chmurą. Albo tak, jak w „Pokoju na Ziemi”. Albo w „Matriksie”. Choć, z drugiej strony, wcale nie musi, bo jak na ironię, ewolucja stworzyła również nas. Pierwszych i być może jedynych, zdolnych stawić jej czoła w otwartym polu.