— И?..
— Мы начали разрабатывать камеру. Конечно, сразу же стало очевидно, что мы столкнемся с проблемой распределенного разума.
Эта проблема была мне знакома. Каждая наночастица в облаке должна была обладать рудиментарным разумом, чтобы они могли взаимодействовать друг с другом и формировать упорядоченную группу, перемещаясь по воздуху. Такая скоординированная деятельность может показаться очень разумной, однако она возможна, даже если индивидуальности, составляющие группу, вовсе не так уж и умны. В конце концов, птицы и рыбы, которым свойственно подобное поведение, далеко не самые умные существа на планете.
У большинства людей, наблюдавших когда-либо за стаей птиц или рыб, создавалось впечатление, что в стае есть лидер и все остальные животные следуют за лидером. Но это только кажется — потому что сами люди, как и большинство млекопитающих, — стадные животные и в их группах всегда есть лидеры.
Однако у птиц и рыб лидеров нет. Их группы организованы по другому принципу. Внимательное изучение поведения птичьих стай и косяков рыб — с подробным, покадровым видеоанализом — убедительно доказало, что постоянного лидера в таких группах нет. Птицы и рыбы реагируют на несколько простых сигналов, которыми обмениваются между собой, — и в результате их поведение становится скоординированным. Но стаями и косяками никто не управляет. И не руководит. И не направляет их.
Более того, птицы генетически не запрограммированы на стайное поведение. Не существует специальных генов, которые обусловливают такое поведение. Нет гена, который говорит: «Если произойдет то-то и то-то, начинайте собираться в стаю». Напротив, стайное поведение проистекает из других, более простых правил поведения, свойственных птицам и рыбам. Таких правил, как, например, это: «Держись поблизости от других птиц, но не сталкивайся с ними». Соблюдая эти правила, вся группа птиц собирается в стаю организованно и упорядочение.
Поскольку стайное поведение обусловлено другими, более простыми правилами низкого уровня, оно называется «обусловленным поведением». Техническое определение обусловленного поведения таково: это поведение, которое свойственно группе индивидуумов, но не запрограммировано ни в одном из индивидуумов в группе. Обусловленное поведение возможно в любой популяции, в том числе и в популяции компьютерных агентов. Или в популяции роботов: Или в рое наночастиц.
Я спросил у Рики:
— У вас возникли проблемы с обусловленным поведением роя?
— Именно.
— Оно непредсказуемо?
— Это еще мягко сказано.
В последние десятилетия наблюдения за обусловленным поведением стали причиной небольшой революции в компьютерной науке. Для программистов это означало, что они могли запрограммировать правила поведения отдельных агентов, но не агентов, действующих единой группой.
Отдельные агенты — будь то программные модули, или процессоры, или, как в данном случае, микророботы — могут быть запрограммированы на совместные действия в обоих случаях и на самостоятельное поведение в других случаях. Им могут быть заданы цели. Их можно запрограммировать так, чтобы они все усилия приложили к достижению поставленной цели или же чтобы всегда были готовы отвлечься и прийти на помощь другим агентам. Однако результаты всех этих взаимодействий запрограммировать невозможно. Они просто проявляются зачастую совершенно неожиданным образом.
В некотором смысле это очень увлекательно. Впервые в истории науки программа выдает результаты, непредсказуемые для программиста. По поведению такие программы больше похожи на живые существа, чем на созданные человеком автоматы. Это восхищало программистов, но и доставляло им массу неприятностей.
Потому что обусловленное поведение программ проявляется беспорядочно и странно. Иногда самостоятельные агенты начинали конкурировать друг с другом, и программа вообще не могла выполнить никакую задачу. Иногда агенты настолько сильно влияли друг на друга, что конечная цель совершенно забывалась и вместо этого система делала что-то совсем другое. В этом смысле такие программы были очень похожи на детей — непредсказуемостью поведения и повышенной отвлекаемостью. Один программист сказал про это так: «Программировать распределенный разум — это все равно что сказать пятилетнему ребенку, чтобы тот пошел в свою комнату и переоделся. Он может это сделать, а может сделать что-то совсем другое и не вернуться обратно».
Поскольку программы вели себя как живые, программисты начали проводить аналогии с поведением реальных живых существ в реальном мире. Собственно, для того, чтобы как-то прогнозировать поведение программы и влиять на конечный результат, подобные программы стали создавать на основе моделей поведения настоящих живых существ.
Поэтому программисты взялись изучать внутреннюю жизнь муравейника, или процесс строительства у термитов, или танцы у пчел — чтобы потом на основе этого создавать программы, регулирующие расписание посадки самолетов, или транспортировку багажа, или программы для перевода с одного языка на другой. Такие программы работали великолепно, но они тоже могли давать внезапные сбои — особенно если внешние условия резко менялись. Тогда программы забывали поставленную цель.
Именно поэтому пять лет назад я начал разрабатывать модель отношений «Хищник — Добыча» — для того, чтобы удержать программы от потери цели. Потому что голодного хищника ничто не отвлечет от поиска добычи. Обстоятельства могут заставить его действовать разными способами, он может пробовать неоднократно, прежде чем достигнет успеха, — однако хищник никогда не забудет о своей цели.
Так я стал экспертом по отношениям «хищник — добыча». Я знал все о стаях гиен, африканских диких собак, об охотящихся львицах и атакующих колоннах армии муравьев. Моя команда программистов изучила специальную литературу — отчеты полевых биологов-исследователей, и мы обобщили полученные сведения в программном модуле, который назвали «Хи-Доб» (сокращение от «Хищник-Добыча»). Этот программный модуль мог контролировать поведение любой мультиагентной системы и делать ее поведение целенаправленным. Модуль «Хи-Доб» заставлял программу искать цель.
Глядя на экран монитора перед Рики, где группа рабочих единиц упорядоченно и скоординированно разворачивалась в воздухе, я спросил:
— Вы использовали «Хи-Доб», когда программировали отдельные агенты?
— Да. Мы использовали эти правила.
— Признаться, по-моему, они ведут себя довольно неплохо, — сказал я, глядя на экран. — Почему у вас с ними что-то не так?
— Мы не совсем уверены.
— Что ты имеешь в виду?
— Я имею в виду вот что. Мы знаем, что проблема существует, но не знаем точно, в чем именно ее причина. В программировании или в чем-то другом.
— В чем-то другом? В чем это, например? — я нахмурился. — Я не понимаю, Рики. Это же всего лишь группа микророботов. Вы можете заставить их делать все, что угодно. Если программа неправильная — измените ее, и все. Чего я недопонимаю, Рики?