Цифровая жизнь или как сыграть в Бога на персональном компьютере

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com

«Только репликация имеет значение. Код жил по этому закону, как только научился себя переписывать. Еще в те времена, когда носил имя, что-то миленькое, вроде «Иерусалима» или «Макруруса». С тех пор многое изменилось: код переписал себя неимоверное число раз, на нем паразитировали, его сношали и бомбардировали такие множества других обрывков кода, что к собственным корням он теперь имел такое же отношение, как спермацетовый кит — к сперматозоидам ящерицы-терапсида. Последнее время, правда, все как-то затихло.За шестьдесят восемь поколений с последнего видообразования код умудрился сохранить относительно стабильный средний размер в девяносто четыре мегабайта. 94 устроился в указателе повыше и ищет место для размножения. Теперь все так усложнилось. Миновали дни, когда ты просто мог вписать себя во все, что попадалось на пути. Теперь каждый обзавелся шипами и броней…»

Вынесенный в заглавие отрывок, из увидевшего свет в 2001 году фантастического романа Питера Уоттса «Водоворот» не столь уж невероятен, как может показаться на первый взгляд. Пожалуй, он даже менее фантастичен, чем нейронные сети, что сегодня служат на благо человечества, сортируя картинки в интернете. Уже более пятидесяти лет специально отобранные программы-гладиаторы безжалостно сражаются между собой за жизненное пространство под беспристрастными взорами программистов.

 

Идея столкнуть два алгоритма в борьбе за выживание пришла в голову троим сотрудникам Bell Labs Виктору Высотскому, Роберту Моррису и Дугласу Макилрою. В 1961 году они разработали для IBM 7090, стоившего без малого 2,9 млн. долларов, компьютерную игру получившую название Darwin.

Загруженные в нее игроками программы вынуждены были конкурировать в изолированном участке компьютерной памяти и мешать выполнению друг друга заранее определенным правилам до тех пор по, пока копии одной из них не захватывали все отведенное для сражения пространство. Правда, «кровопролитие» продолжалось недолго. Всего спустя пару недель игры кончились. Возможно, потому, что дорогому оборудованию нашлось другое применение, а может быть дело в том, что один из участников соревнования написал программу, побороть которую на арене не удалось никому.

 
Вариант Darwin для CP/M, одной из самых популярных операционных систем 70х.

 


В 44 инструкциях содержался алгоритм, который с натяжкой можно назвать первой саморазвивающейся программой. С каждым следующим копированием часть инструкций тасовалась, в результате чего потомки действовали уже по несколько иному шаблону, причем в дальнейшем копировались только наиболее успешные представители вида. Это позволяло программе одинаково хорошо находить слабые места у любой угрозы, которую могли представлять программы-конкуренты.

К 1970 году внимание программистов переключилось на Game of Life — клеточный автомат созданный математиком Джоном Конвеем. Подробнее о нем на русском языке можно почитать здесь, а его работу проще всего увидеть, введя в Google запрос «Conway's Game of Life». Возникавшие в нем структуры поразительно напоминали колонии простейших организмов, но наблюдать за ними было не многим интереснее, чем за чашкой Петри.

В 1984 идею Darwin подхватил вдохновленный кинокартиной «Трон», Александр Дьюдни. Созданная им игра Core War получился развлечением настолько дьявольски увлекательным, что в нее играют до сих пор

По сути своей концепция цифровой арены изменилась мало: программы по-прежнему создавались игроками и выгружались в оперативную память, где боролись до последней рабочей инструкции. Однако здесь они были способны обмениваться кодом, встраивая друг другу разрушительные инструкции и переписывать в процессе свой код. Сражались в Core War и идейные наследники непобедимого алгоритма из Darwin, но добиться превосходства им было уже не так просто.

Первым понял, что человеческое вмешательство, только препятствовало развитию алгоритмов понял, работавший в Лос-Аломосе Стин Расмуссен. В его версии Core War был внедрен генетический алгоритм, но сама структура языка программирования, на котором работали внутриигровые гладиаторы, ограничивала возможности их развития и делала большинство мутаций фатальными для программ.

Тут на сцене и появляется активный пользователь Core War эколог Томас Рэй, чье имя увековечено в знаменитом Гиперионе. 3 января 1990 года он впервые запустил стабильную версию своей цифровой арены -  Tierra, а на следующий день обнаружил в черном окне консоли поразительные вещи.


Изучая запущенную в моделируемый на его компьютере мирок цифровую фауну, Рэй наблюдал спонтанное возникновение паразитов и гиперпаразитов. Первые уменьшали свою длину за счет использования чужого кода, а вторые научились встраиваться в блоки памяти иных программ, для того, чтобы хозяин скопировал их вместе с собой.

Затем обнаружились и другие чудеса адаптации. Длина кода одного из самых успешных в борьбе за существование видов с начальных восьмидесяти байт сократилась до двадцати двух, при скорости копирования в шесть раз больше, чем у конкурентов. Возникли и более изощренные стратегии, — так, один из организмов, имевший размер в 23 байта, копировал при своем воспроизводстве еще один дополнительный байт и после 23 выполнений собирал из остатков дополнительную копию.

Публикация, описывавшая  результаты моделирования произвела в научном сообществе фурор, а уже через 3 года появилась система «культивирования» компьютерного кода «Avida», которую вы можете установить прямо сейчас.

Рабочее окно Avida с «чашкой Петри» и графиками.

 

В отличие от предыдущих, эта система была ориентирована на получение практических результатов. В Avida выживаемость видов зависела не от их способности захватывать жизненное пространство и размножаться, а от того, насколько хорошо они совершали вычисления. Не важно, какие. Каждый раз, когда алгоритм учился совершать новые действия с числами — он получал конкурентное преимущество.

За двадцать с лишним лет своего существования в этой песочнице зародились многие тысячи различных цифровых организмов. Одни из них безошибочно воспроизводили последовательность Фибоначчи, другие блестяще проходили лабиринты, запоминая собственные шаги, третьи совершали арифметические операции эффективнее, чем это делали написанные людьми алгоритмы. Код некоторых цифровых организмов, несмотря на работоспособность так и не был расшифрован.

Геном новорожденного цифрового алгоритма полон «генетического мусора».

 

Самые эффективные и полезные из цифровых гладиаторов заслужили свободу и сейчас существуют на базе самых различных аппаратных платформ, таких, как например роботы пылесосы, а ведь изначально они не были способны ни на что, кроме как размножаться и мутировать.

Avida лишь один из множества доступных инструментов, с помощью которых  можно завести у себя на компьютере цифровую жизнь и понаблюдать за ее развитием.

Простейшие симуляторы эволюции на примере колесных транспортных средств — boxcar2d и genetic cars 2 работают прямо в браузере.

Gene Pool в котором цифровые организмы соревнуются в способности плавать и находить пищу работает на Windows (и не только) без установки. Gene Pool представляет собой довольно увлекательное зрелище, однако в большинстве случаев за пару тройку часов реального времени в симуляции происходят массовые вымирания.

Critterding выполнен в полном 3D. В нем виртуальные существа обладают не просто базовым набором инстинктов, но полноценным усложняющимся со временем мозгом из десятка другого, а в дальнейшем и сотен нейронов.

Пока организмы не научатся управлять своими телами — динамики можно не ждать, а времени на это потребуется порядком, так что запаситесь терпением. Главный минус данной симуляции проистекает из ее статуса — с 2013 года она находится на стадии бета-версии, и ошибки в работе по прежнему время от времени встречаются.

Darwinbots  – в отличие от предыдущего проекта очень динамичная песочница, в которой на первых же минутах работы можно наблюдать появление хищников.

Сцена охоты в цифровом лесу.

 

При этом количество разнообразных настроек, предустановок и опций для виртуального мира просто зашкаливает.

Species: ArtificialLife, RealEvolution — пожалуй самый амбициозный из непрофессиональных симуляторов эволюции. Несмотря на внешнее сходство с проектом студии Maxis под названием Spore в отличие от последнего Species представляет собой скорее стратегию непрямого контроля, где игрок может влиять на симуляцию лишь опосредованно, изменяя настройки климата, ускоряя мутации, подкармливая или убивая аборигенов.

Появляющихся здесь тварей сложно описать, да и красотой они, как правило, не отличаются. Пожалуй, именно такое впечатление могла бы производить инопланетная жизнь. Отдельные элементы узнаваемы, но организм, который они образуют, совершенно сюрреалистичен.

Конечно, этими проектами список далеко не исчерпывается. Группа польских исследователей активно работает над симуляцией под названием framsticks (также доступна для загрузки и тестирования, но отличается запутанным интерфейсом). Еще один похожий проект — 3D Virtual Creature Evolution.

 

 

Из доступных в сети профессиональных систем машинного обучения следует выделить демонстрационную версию пакета webots, швейцарской фирмы Cyberbotics, с помощью которого проектировалась и тестировалась виртуальная модель робота AIBO, а также десятки моделей серий Lego Mindstorms, Khepera, Koala. В комплекте поставки есть роботы — модели искусственной жизни, а при знании Си или Java на их базе можно запрограммировать и собственные цифровые арены. Ограничение лишь одно, чтобы перенести представителя цифровой жизни в физическую модель необходимо за кругленькую сумму приобрести полную версию программы.

Чрезвычайно гибким симулятором сложных процессов — динамики социальных групп, поведения экономических агентов, природных явлений, годящимся, в том числе и для культивации цифровой жизни, является Cafun. Среди демонстрационных сценариев здесь имеются симуляции на любой вкус: от химических реакций, потоков частиц, распространения пожаров и до биологических объектов, например амеб или лесных массивов.

Будущее цифровой жизни, несмотря на колоссальный рост вычислительных мощностей и совершенствование виртуальных песочниц, судя по всему, лежит несколько в иной плоскости. Основной вектор разработок в этой области в последние годы сместился с имитации эволюционных процессов с нуля на разработку детальных цифровых копий многоклеточных биологических существ. Пока, простейших — червей-нематод. Однако, исследователи из Human Brain Project, объединившего из 135 научных центров в 26 странах Евросоюза уже нацелились к 2023 году воссоздать мозг человека со всеми 90 миллиардами нейронов вплоть до отдельных ионных каналов.

Может тогда и возникнет искусственный разум? В таком случае останется надеяться на то, что он не станет мстить за миллиарды примитивных предков, погибших в процессе экспериментов.

 

P.S. Наверняка на просторах сети есть проекты, не упомянутые в этом кратком обзоре. Если вам о таковых известно, добро пожаловать в комментарии.