Дать определение понятиям «жизнь» и «интеллект» трудно как с точки зрения биологии, так и с точки зрения философии. Возможно, это так же сложно, как и дать формальное определение интеллекта. В первой главе мы уже говорили о философских и математических дискуссиях, целью которых было определение понятия «интеллект»: это тест Тьюринга, «китайская комната», споры о творчестве и так далее.
Один из самых активных и авторитетных специалистов в этой области, Джон Холланд (род. 1929), также занимавшийся эволюционными алгоритмами, глубоко изучил этот вопрос и пришел к выводам, которые помогут нам определить, что такое жизнь.
Искусственная жизнь тесно связана с другим важным понятием в рамках искусственного интеллекта — так называемыми мягкими вычислениями (soft computing).
Мягкие вычисления — это совокупность средств и методов, как правило, имеющих непосредственные аналогии в природе, которые позволяют решать задачи высокой сложности путем обработки неполной и неточной информации. К таким методам относятся эволюционные алгоритмы, нейронные сети, нечеткая логика и так далее.
Мягкие вычисления оформились в отдельный раздел информатики в 1990-е годы и сегодня используются при решении задач, для которых эксперты не смогли найти оптимального решения. В некоторых случаях оптимальное решение подобных задач требует нескольких лет расчетов или использования данных, которые невозможно получить. Мягкие вычисления позволяют быстро найти неоптимальное, но достаточно хорошее решение задач такого типа. Сегодня мягкие вычисления используются для решения задач во всех областях науки и техники, начиная от биологии и заканчивая политологией.
Одно из важнейших свойств системы, в которой есть «жизнь», таково: в ней должны присутствовать определенные условия, которые делают возможным появление самоорганизующихся систем, намного более сложных, чем их составные части.
Прекрасный пример такой системы — колония муравьев, в которой относительно несложное поведение простых элементов, муравьев, порождает полностью самоорганизующуюся систему — колонию, намного более сложную, чем сумма ее частей.
Еще одна характеристика жизни заключается в том, что живой организм должен уметь выживать в среде, в лучшем случае — оставить потомство. Чтобы организм можно было назвать живым, он должен иметь определенную неслучайную динамику, независимую от возможных изменений окружающей среды. Также живая система должна обладать повторяющимся, но неравномерным поведением. Иными словами, если действие нового процесса очевидно, но при этом он является циклическим, то сущность, в которой проявляется этот процесс, нельзя считать живой.
Утка Жакаде Вокансона (1709–1782) — возможно, первого инженера, занимавшегося искусственной жизнью.
Как читатель уже понял, определить жизнь и интеллект со всей математической точностью непросто. До сих пор не найден простой критерий, позволяющий выяснить, можно ли считать живым тот или иной искусственный либо естественный объект. Споры о сущности жизни выходят далеко за рамки математики и информатики.
Даже в биологии ученые до сих пор не пришли к единому мнению по некоторым вопросам, связанным с жизнью, к примеру, можно ли считать живым организмом вирус. И можно ли считать живым организмом компьютерный вирус? Проанализируем ситуацию: компьютерные вирусы очевидно обладают динамическим поведением, которое не является регулярным или циклическим. Но можно ли сказать, что компьютерные вирусы возникли естественным образом? Скорее всего нет, так как они созданы злоумышленником-программистом, в то время как обычные вирусы возникли естественным путем.
* * *
ВИРУСЫ И ПРИОНЫ
Вирусы это биологические системы, сами по себе не способные к размножению, поэтому большинство биологов не считает их живыми организмами, однако консенсус по этому вопросу до сих пор не достигнут. Существует множество видов вирусов, но все они обладают общим свойством — в них присутствует генетический материал, который вирусы передают хозяевам при заражении. В результате появляются новые копии вируса, разумеется, несущие в себе этот генетический материал. Копии вируса распространяются по организму хозяина и поражают новые и новые клетки.
Прионы, в свою очередь, еще более просты и не имеют генетического материала, однако способны передаваться от одного организма к другому. Механизм передачи прионов до сих пор неясен, но сегодня они представляют большой научный интерес, поскольку вызывают серьезные заболевания, например губчатую энцефалопатию крупного рогатого скота (коровье бешенство).
Прионы — это естественные белки с аномальной структурой. Вступая в контакт с другим белком в организме, прион вызывает изменения в его структуре. В результате затронутый белок перестает функционировать, а его аномальная структура передается другим белкам. Является ли прион живым организмом? По мнению биологов, нет.
Схема строения вируса.
* * *
«ЖИВЫЕ» ВЫЧИСЛЕНИЯ
В этой главе рассказывается об искусственных системах, имитирующих поведение живых организмов, а также о вычислительных системах, построенных на основе живых организмов.
Процессоры современных компьютеров состоят из сотен миллионов транзисторов, в которых все вычислительные операции выполняются с помощью электрических сигналов. Транзисторы — безжизненные объекты, изготовленные из неорганических элементов, например кремния.
Но можно ли заменить транзисторы живыми организмами, состоящими из клеток? В последнее время биологам и физикам удалось решить эту задачу и заставить живые клетки выполнять математические действия, подобно транзисторам. Следовательно, в будущем ученые смогут создать системы искусственной жизни на основе биологических вычислений. Станут ли компьютеры будущего живыми существами, которые будут питаться обычной едой, а не электричеством?
Чтобы упростить определение понятия «жизнь», некоторые эксперты предложили более общее понятие сложной адаптивной системы. Сложная адаптивная система — это агент или совокупность агентов, действующих совместно, при этом достаточно разумных, чтобы адаптироваться к окружающей среде, когда поведение других систем меняется. Под определение сложной адаптивной системы подпадает более широкий спектр живых систем, чем те, что приходят нам в голову, когда мы слышим термин «живой организм». К сложным адаптивным системам относятся иммунная система человека, торговая корпорация или целая экосистема. Пример с корпорацией достаточно любопытен, поскольку вряд ли ее можно считать «живой». Однако если тщательно подумать, то станет очевидно: корпорация рождается, растет, может оставить потомство и умереть. В большинстве европейских стран корпорации имеют почти такие же права и обязанности, как и обычные люди, да и названия у них схожи: если людей называют физическими лицами, то корпорации — юридическими лицами.
Ученые сходятся на том, что сложную адаптивную систему определяют семь характеристик: четыре свойства и три механизма. Сочетание этих основных характеристик порождает новые свойства и механизмы. Определение сложной адаптивной системы носит несколько более общий характер, чем определение самого понятия «жизнь» с точки зрения биологии: мы никогда не назвали бы финансовую компанию или город живыми. Поэтому неоднозначный термин «искусственная жизнь», определить который совсем не просто, обычно используется разве что в сенсационных заголовках и в рассуждениях дилетантов.
* * *
SIMCITY И СЛОЖНЫЕ АДАПТИВНЫЕ СИСТЕМЫ
Города — прекрасные примеры сложных адаптивных систем. Компьютерная игра SimCity, позволяющая строить города и симулировать их жизнь, — прекрасная возможность познакомиться со сложными адаптивными системами: сама игра наполняет города жителями, генерирует социальную и рыночную активность и ставит игрока перед сложными ситуациями, требующими решения (разрушение коммуникаций или стихийные бедствия).
Еще одна компьютерная игра, дающая возможность познакомиться со сложными адаптивными системами, — Civilization, ее цель — создать целую конкурентоспособную цивилизацию с городами, путями сообщения, оборонительными сооружениями, заключить торговые договоры с соседями, определить социальную и научную политику.
Город, построенный в игре SimCity.
Первое свойство: агрегирование
Агрегирование — это объединение простых сущностей, в результате которого образуется система, более сложная, чем сумма ее составных частей. Представьте себе муравейник и муравьев — адаптируемость всей колонии к изменениям среды намного выше, чем адаптируемость отдельного муравья. Простые сущности, образующие систему, называются агентами.
Агрегирование является рекурсивным процессом: агент, возникший в результате агрегирования других, более простых агентов, может объединиться с другими агентами того же или другого вида и образовать агрегированный агент второго уровня.
К примеру, результатом агрегирования конечной продукции, потребленной обществом, капиталовложений и государственных расходов будет валовый внутренний продукт страны.
Следует отметить, что коммуникация между элементами одной категории или между элементами, образующими объект более высокого уровня, не является частью агрегирования, однако без нее адаптация к среде невозможна.
Первый механизм: присвоение меток
Присвоение меток — механизм, активно упрощающий агрегирование агентов. Присвоение меток не только упрощает идентификацию агентов, но и помогает разрушить симметрию, часто возникающую при агрегировании в сложных системах. К примеру, если мы начнем вращать белый бильярдный шар в одном направлении и на его поверхности будут отсутствовать какие-либо метки, то наблюдатель едва ли сможет увидеть, что шар вращается, и тем более не сможет определить скорость вращения.
Если же мы нанесем на поверхность шара метку в любой точке за исключением тех двух, в которых ось вращения шара пересекает его поверхность, то наблюдатель легко сможет определить направление и скорость вращения.
Агенты при агрегировании помечаются множеством разных меток, начиная от штандартов с изображением орла — отличительных знаков римских легионов, и заканчивая сложными метками, которыми современные телекоммуникационные устройства помечают передаваемые сообщения (эти метки указывают, в каком порядке следуют части сообщения, чтобы получатель мог восстановить сообщение целиком, а также содержат сложные механизмы обнаружения возможных ошибок в сообщении или самой метке в процессе передачи). Разумеется, не все метки должны быть видимыми: к примеру, млекопитающие обоих полов, принадлежащие к определенным видам, в период спаривания выделяют невидимые глазу вещества — феромоны.
Метки упрощают избирательное взаимодействие между агентами, так как позволяют различать экземпляры одного и того же класса агентов или различные составные части агента. На основе меток возможна реализация фильтров, схем сотрудничества, а также видообразование. Агенты также могут сохранять агрегированное состояние, и их метки будут оставаться неизменными, даже если будут меняться составные части агента более высокого уровня. По сути, нанесение меток — механизм, упрощающий организацию агентов и коммуникацию между ними.
Второе свойство: нелинейность
Свойство линейности лежит в основе множества математических дисциплин, начиная от арифметики и заканчивая алгебраической топологией, не говоря уже о дифференциальном исчислении. Функция линейна, если ее значение представляет собой всего лишь взвешенную сумму ее аргументов (независимо от их значений). К примеру, функция 4х + 2у — z линейна, функция 4 sinx — 2y-z — нет.
Использование линейных методов в математике и инженерном деле настолько важно, что сегодня большая часть профессиональной деятельности любого инженера и ученого заключается в поиске линейных функций, максимально точно описывающих те или иные явления природы. К сожалению, ни один из этих методов неприменим для изучения сложных адаптивных систем. По сути, одна из важнейших особенностей таких систем заключается в том, что их совокупное поведение намного сложнее суммы поведений отдельных частей, из чего, по определению, следует нелинейность.
Прекрасный пример, иллюстрирующий нелинейности в природе и сложных адаптивных системах, — взаимодействие «производитель — потребитель» и его частный случай — взаимодействие «хищник — жертва». Представьте себе лес, где живет D хищников (например, лис) и Р жертв (например, зайцев). Если вероятность того, что лиса поймает зайца, равна с, то ежедневно в лапы лис попадает с∙Р∙D зайцев. К примеру, если с = 0,5, D = 3 и Р = 10, то лисы поймают с ∙Р∙D = 0,5∙3∙10 = 15 зайцев. Если число лис и зайцев увеличится вчетверо, число пойманных зайцев возрастет еще больше: с∙Р∙D = 0,5∙12∙40 = 240. Как видите, этот результат нельзя получить простым сложением числа хищников и жертв.
Даже в сравнительно простой ситуации нелинейность может серьезно повлиять на агрегированную систему. Поэтому всегда говорят, что совокупное поведение сложной адаптивной системы сложнее, чем поведение ее составных частей.
* * *
МОДЕЛЬ ЛОТКИ — ВОЛЬТЕРРЫ
Уравнения, описывающие пример с лисами и зайцами, могут значительно усложняться. Исследователь Альфред Джеймс Лотка описал, как изменятся эти уравнения, если мы будем учитывать колебания численности хищников и жертв с течением времени. Допустим, что D(t) и P(t) — численность хищников и жертв в момент времени t. В каждый момент времени рождается n и умирает m хищников. Следовательно, формула, описывающая изменение численности хищников с течением времени, записывается так: D(t + 1) = D (t) + nD(t) — mD(t). Аналогично изменение численности жертв описывается уравнением: Р(t + 1) = Р(t) + n'Р(t) — mV(t). Следует учесть, что рост числа жертв означает рост рождаемости хищников, что можно выразить, к примеру, с помощью постоянной r.
Число взаимодействий «жертва — хищник», как мы показали, равно cPD. Следовательно, новое уравнение, описывающее численность хищников, будет выглядеть так:
D(t+1) = D(t) + nD(t) — mD(t) + r[cP(t)∙D(t)]
Изменение численности жертв будет происходит прямо противоположным образом: при любом взаимодействии «хищник — жертва» численность жертв будет сокращаться. Уравнение численности жертв будет иметь вид:
P(t+1) = P(t) + r[P(t) — m'P(t) — r[cP(t)∙D(t)].
Если теперь мы зафиксируем значения постоянных и будем решать эти уравнения для последовательных моментов времени, то увидим, что D(t) и P(t) будут колебаться, а хищники и жертвы будут последовательно переживать циклы изобилия и голода.
График, описывающий колебания численности зайцев и лис с течением времени согласно модели Лотки — Вольтерры.
Третье свойство: формирование потоков
Потоки возникают на всех уровнях сложных адаптивных систем, где присутствуют узлы, носители и переносимые ресурсы. Ограничимся двумя примерами сложных адаптивных систем. Первый — центральная нервная система живого организма, где узлами являются нейроны, носителями — соединяющие их синапсы, а переносимым ресурсом — электрические импульсы. Второй пример — потоки в экосистеме, где узлами являются виды, носителем — пищевая цепь, а переносимым ресурсом — энергия, представленная в виде биохимических элементов (потребляемого белка, сахара и так далее).
В общем случае узлы являются средствами обработки ресурса, а связи определяют взаимодействия между узлами. Следует учесть, что в сложной адаптивной системе сеть взаимодействий может меняться, а узлы и связи могут возникать и исчезать.
Эти особенности и обеспечивают адаптируемость системы к среде и позволяют ей корректировать свое поведение в зависимости от текущей ситуации.
Нанесение меток — один из самых важных механизмов сложных адаптивных систем для определения потоков: метки могут определять, какие связи играют важнейшую роль при переносе ресурсов.
Потоки обладают двумя свойствами, представляющими интерес при изучении работы сложных адаптивных систем. Первое свойство заключается в том, что потоки вносят в систему эффект мультипликатора. К примеру, в такой сложной адаптивной системе, как экономика страны, перенос денег от одного узла к другому (например, между банками) исполняет роль денежного мультипликатора. Второе интересное свойство — способность создания циклов с целью переработки. Обратите внимание, как на схеме нелинейно возрастает объем промышленного производства в сложной адаптивной системе — производственной цепочке изготовления автомобилей — при переработке и в ее отсутствие.
В первом сценарии производитель стали преобразует железную руду в сталь с эффективностью 100 % (то есть с коэффициентом 1). Далее 50 %, то есть половина произведенной стали, используется для производства автомобилей, оставшиеся 50 % — для изготовления бытовой техники. Если мы для простоты предположим, что из каждой единицы стали изготавливается автомобиль или единица бытовой техники, то получим, что в конце потока будет произведено 5 автомобилей и 5 единиц бытовой техники.
Теперь рассмотрим сценарий, в котором благодаря переработке возникает эффект мультипликатора.
Во втором сценарии 75 % автомобилей перерабатывается. Следовательно, теперь производитель стали может повысить объемы производства, что в конечном итоге позволит выпускать больше автомобилей. Если на первом этапе переработке подвергалось 5 автомобилей, то с последовательным повышением производительности система стабилизируется на уровне 8 выпускаемых машин и 6 машин, подвергаемых переработке, на каждом цикле. Это означает, что производство стали возрастет до 16 единиц: 10 единиц будет выплавляться из 10 единиц железной руды, еще шесть будет получено в результате переработки автомобилей.
Четвертое свойство: разнообразие
Разнообразие — еще одна определяющая характеристика сложных адаптивных систем. В любой сложной адаптивной системе наблюдается значительное разнообразие агентов, которые совместно определяют шаблоны поведения системы. В качестве примера приведем тропический лес, где можно пройти полкилометра и не увидеть двух деревьев одного вида. Или рассмотрим такую сложную адаптивную систему, как целый город, к примеру Рим, где живут миллионы самых разных людей со своими занятиями и особенностями, где работают тысячи компаний, по большей части непохожих друг на друга, при этом каждая из этих компаний, в свою очередь, также представляет собой сложную адаптивную систему.
Такое разнообразие вовсе не случайно. Каждый агент в рамках системы занимает свою нишу, которая определяется его связями с соседними агентами. Если мы исключим из сложной адаптивной системы один агент, другие автоматически займут его место. Когда система прекращает адаптироваться к условиям среды, наступает стабильное состояние, иными словами наблюдается сходимость.
Разнообразие также наблюдается, когда агент или совокупность агентов занимают новые ниши, в результате чего сложная адаптивная система получает новые функциональные возможности. Хороший пример — мимикрия, в ходе которой, к примеру, цветки орхидей имитируют внешний вид насекомых, чтобы привлечь других насекомых — переносчиков пыльцы и сделать опыление более эффективным.
Цветки растения офрис пчелоносная имитируют насекомых, чтобы привлечь других насекомых — переносчиков пыльцы.
Однако главный вопрос звучит так: какой фактор допускает и даже стимулирует возникновение столь большого разнообразия в сложных адаптивных системах? При подробном изучении таких систем можно последовательно проследить, какие изменения они претерпевали в процессе возникновения того или иного агента, и тем самым понять роль отдельных агентов в системе. К примеру, когда в сложной адаптивной системе в результате адаптации возникают циклические потоки, что ведет к переработке ресурсов и повышению общей эффективности, в ней открываются ниши, где появляются новые, «перерабатывающие» агенты. Другой пример сценария, порождающего разнообразие, — рост предприятия: в процессе роста возникает необходимость в новых иерархиях и, следовательно, в агентах нового типа, которые будут отвечать за координацию действий на каждом уровне иерархии.
Второй механизм: внутреннее моделирование
Любая сложная адаптивная система способна создавать внутренние модели окружающей среды, позволяющие предсказать будущие события и изменения, которые должны произойти для успешной адаптации системы к этим событиям. Такие модели строятся на основе информационных потоков, поступающих в систему и вызывающих полезные изменения ее внутренней структуры. После того как модель построена, она помогает системе предсказывать, какие последствия будет иметь появление определенных закономерностей в среде. Но как система может представить накопленный опыт в виде моделей? Как система создаст модель для прогноза последствий будущих событий?
Оптимальной движущей силой для создания подобных моделей является давление отбора. Бактерия всегда «знает», что ей нужно следовать в направлении, где находится больше питательных веществ. Этот «инстинкт» описывается внутренней моделью, указывающей, что если бактерия будет следовать подобной схеме поведения, то с наибольшей вероятностью гарантирует себе пропитание. Бактерии, которые благодаря кодификации структур и иерархий внутренних агентов смогли создать подобные модели, имеют больше шансов оставить потомство и, следовательно, передать ему это отличительное свойство.
Существует два вида внутренних моделей: явные и неявные. В примере с бактерией, следующей инстинктам в поиске питания, мы имеем дело с неявной моделью, так как она не позволяет ни «думать», ни моделировать альтернативные варианты развития событий. Явные модели, свойственные высшим живым организмам, напротив, позволяют оценивать различные гипотетические сценарии и принимать оптимальные решения после анализа альтернативных вариантов. Примером явной модели в сложной адаптивной информационной системе может служить машина для игры в шахматы, способная анализировать сотни тысяч вариантов на каждом ходу.
Логично, что неявная модель создается и адаптируется к среде по законам эволюции, в то время как для явных моделей скорость адаптации намного выше.
Колония бактерий Escherichia coli, увеличенная в 10 000 раз. Каждая «палочка» обозначает бактерию.
Третий механизм: строительные блоки
Внутренняя модель сложной адаптивной системы, как правило, основывается на ограниченном множестве выборок, описывающих ситуации, произошедшие в прошлом. Эти выборки похожи, но каждая из них обладает определенной новизной. Как сложная адаптивная система может создавать на базе ограниченного предшествующего опыта внутренние модели, полезные в будущем? Ключ к этому парадоксу — использование так называемых строительных блоков, то есть элементов, на которые можно разложить любую систему, среду или сценарий. Рассмотрим в качестве примера финансовую организацию, которая идеально соответствует определению сложной адаптивной системы. Допустим, что организация должна принять решение, выдавать ли клиенту кредит. Главный вопрос заключается в том, сможет ли клиент вернуть кредит в условленный срок. Банк не представляет, сможет ли клиент совершать платежи по кредиту через 15 лет, так как не способен предсказывать будущее. Усложним ситуацию и предположим, что клиент не имеет кредитной истории, то есть банку о нем ничего не известно. В этом случае банк разложит проблему на составляющие и, проанализировав определяющие характеристики нового клиента — уровень его образования, должность, семейное положение и другие, — рассмотрит поведение клиентов со схожим профилем. Эти характеристики будут строительными блоками, описывающими сценарий, с которым столкнулся банк как сложная адаптивная система.
Способность сочетать строительные блоки для создания неявных внутренних моделей развивается по законам эволюции, а обучение явных внутренних моделей обычно проходит в гораздо более короткие сроки, хотя в природе такой способностью обладают только высшие живые организмы.
Классическим примером искусственной жизни (вернее, сложной адаптивной системы) в информатике являются клеточные автоматы. Клеточный автомат — достаточно простое понятие, предназначенное для изучения сложности высших систем.
Оно было предложено авторитетными математиками и друзьями Станиславом Уламом (1909–1984) и Джоном фон Нейманом (1903–1957).
Американский математик польского происхождения Станислав Улам.
Автоматы — это математические модели, которые для определенных входных значений запрограммированы на выполнение ряда инструкций. Иными словами, автомат — это обобщение алгоритма или компьютерной программы. Таким образом, в информатике автоматами является все, от программируемого микрочипа, способного выполнять определенные действия, и заканчивая операционной системой. Еще один пример автомата, о котором мы уже рассказывали, это машина Тьюринга.
Как правило, теоретические автоматы, подобные машине Тьюринга, — это устройства, фиксирующие входные сигналы и печатающие выходные значения на одномерных лентах. Автомат проходит вдоль ленты и считывает написанные на ней символы, как показано на рисунке. На основе считанных символов и заложенных в автомат инструкций он выполняет то или иное действие, к примеру, печатает на определенном участке ленты некий символ.
Два основных компонента машины Тьюринга — бумажная лента и устройство чтения-записи.
Клеточные автоматы представляют собой особый класс автоматов, которые не перемещаются по поверхности двухмерных лент. В них среда, содержащая входные и выходные значения, представляет собой плоскость, разделенную на клетки подобно шахматной доске, причем в каждой клетке расположен неподвижный клеточный автомат. Входную информацию в клеточном автомате содержат клетки, смежные с той, в которой он находится. Выходная информация фиксируется в клетке, где расположен сам клеточный автомат.
Каждый автомат, находящийся в одной из клеток доски, содержит ряд инструкций. К примеру, если число черных клеток, окружающих клетку, где расположен клеточный автомат, четно, он закрасит свою клетку в черный цвет, в противном случае — в белый. Поместив аналогичные автоматы во все клетки доски, мы получим различные рисунки, которые будут меняться в зависимости от того, в какой цвет разные автоматы будут закрашивать те или иные клетки.
Некоторые из бесконечного множества возможных конфигураций клеточного автомата порождают повторяющиеся узоры, как, например, в игре «Жизнь» Конвея.
Читатель найдет в интернете множество фигур, порождающих прекрасные рисунки, которые затем уничтожаются и создаются вновь, причем все подобные фигуры описываются очень простыми правилами.
Паровая машина Тьюринга. Рисунок, сделанный студентами Вашингтонского университета в одной из аудиторий.
* * *
КЛЕТОЧНЫЙ АВТОМАТ ДЖОНА КОНВЕЯ, ИЛИ ИГРА «ЖИЗНЬ»
Игра «Жизнь», придуманная Джоном Хортоном Конвеем (род. 1937), представляет собой клеточный автомат, который, несмотря на простоту, демонстрирует удивительное поведение. Правил, описывающих его работу, всего два. В них учитываются восемь клеток, смежных с каждой, а также состояние самой клетки, в которой расположен клеточный автомат.
Правило № 1: если у белой клетки три соседние с ней клетки имеют черный цвет, то эта клетка также окрашивается в черный цвет. В противном случае клетка остается белой.
Правило № 2: если клетка окрашена в черный, а две или три соседние с ней клетки также черного цвета, то клетка не меняет цвет. В противном случае она становится белой.
Если читатель знаком с основами программирования, мы советуем ему реализовать эти простые правила в программе, чтобы посмотреть на игру «Жизнь» в действии. Для всех остальных далее приведено несколько примеров.
Это одна из конфигураций, возникающих при программировании правил игры «Жизнь», известная как «планер». Она порождает следующую циклическую последовательность.
Как показано на иллюстрации, фигура t + 4 идентична фигуре t, но смещена на одну клетку вниз и вправо. Следовательно, в момент времени t + 9 «планер» (именно так называется фигура, изображенная на рисунке) вновь сместится вдоль диагонали, отмеченной на иллюстрации ниже.
Более сложная версия «планера». Если бы изображение было анимированным, вы смогли бы увидеть, что рисунки, расположенные под стрелкой, смещаются вдоль линии, отмеченной на иллюстрации.
Имитация разумного поведения природы всегда была источником вдохновения для инженеров, занимающихся искусственным интеллектом. В свое время природа подсказала человеку идею нейронных сетей и эволюционных алгоритмов, которые сыграли важнейшую роль в развитии искусственного интеллекта. О них мы уже рассказывали в прошлых главах. Аналогично возникли и другие модели, в частности искусственные иммунные системы, в которых предпринята попытка сымитировать поведение иммунной системы живых существ, или роевой интеллект — попытка смоделировать отдельное и простое поведение членов колонии (например, пчелиного роя), в совокупности демонстрирующих определенное поведение, которое можно назвать интеллектуальными.
Иммунная система животного представляет собой крайне эффективную систему распознавания образов и оптимизации. Для каждой новой задачи, которую необходимо решить (то есть для нового антигена, попадающего в тело), путем упорядоченного процесса проб и ошибок иммунная система быстро находит решение — антитело, способное распознать антиген.
Действие иммунной системы напоминает эволюционный процесс с одним отличием: при работе иммунной системы не происходит скрещивания различных решений с целью выявления среднего решения, сочетающего в себе достоинства родительских. Действие иммунной системы можно представить следующим образом.
1. Случайным образом генерируется обширное множество антител.
2. Оценивается пригодность каждого антитела, или его способность распознать антиген, попавший в организм.
3. На основе антител первого поколения по следующей схеме создается второе поколение.
1) Генерируется множество копий антител. Число копий каждого антитела пропорционально его пригодности. Иными словами, новое поколение будет содержать много копий очень эффективных антител, а неэффективные антитела будут присутствовать лишь в нескольких копиях или вовсе не попадут в следующее поколение.
2) В копии антител вносятся изменения (мутации, если использовать терминологию эволюционных алгоритмов) обратно пропорционально их эффективности. Иными словами, копии эффективных антител в новом поколении почти не изменятся, а копии неэффективных антител претерпят серьезные изменения.
4. Для новых антител, полученных на предыдущих этапах, вновь оценивается способность распознавать искомый антиген, после чего весь процесс повторяется, и создается новое поколение антител.
5. Когда биологическая система считает, что эффективное антитело для борьбы с антигеном найдено, процесс останавливается.
Описанный выше процесс создания антител в иммунной системе нетрудно адаптировать для решения других реальных задач. Единственный важный момент заключается в том, как правильно представить возможные решения проблемы, чтобы их можно было копировать и видоизменять. В этом случае рекомендуется следовать той же методологии, что и при использовании эволюционных алгоритмов, то есть кодировать решения с помощью хромосом, состоящих из генов. Хотя мы смешиваем терминологию из двух, на первый взгляд совершенно разных методов, описанный выше процесс применяется на практике. Искусственные иммунные системы все чаще используются для решения реальных инженерных задач, поскольку они позволяют эффективно оптимизировать решения, а также прекрасно адаптируются к архитектуре современных суперкомпьютеров и распределенных вычислений (в частности, грид-вычислений и облачных вычислений). При грид-вычислениях и облачных вычислениях ресурсы распределены в абстрактном и нечетком «облаке» компьютеров, очень мощных по отдельности, при этом обмен данными между ними необязательно должен быть эффективным. При централизованном контроле над иммунной системой оценка антител может производиться в облаке, а по завершении оценки следующее поколение антител будет создаваться центральной системой контроля. В этом сценарии наибольшие вычислительные затраты связаны с индивидуальной оценкой антител, именно поэтому она проводится в облаке. Создание новых поколений может выполняться последовательно с небольшими затратами в центральной системе.
Создатели роевого интеллекта (англ, swarm intelligence) также черпали вдохновение в природе. Этот термин был введен Херардо Бени и Ван Цзином в конце 1980-х. Роевой интеллект основан на моделировании поведения множества отдельных простых сущностей таким образом, что их совокупное поведение может считаться интеллектуальным. Основная задача при реализации роевого интеллекта — определить, как именно отдельные сущности взаимодействуют со своими соседями и средой. Если эта политика взаимодействий определена корректно, то при агрегировании всех сущностей колонии, или роя, будет наблюдаться совокупное интеллектуальное поведение.
Рассмотрим практический пример, в котором имитируется поведение стаи птиц, кружащей в небе. Допустим, что мы хотим найти оптимум сложной математической функции, насчитывающей сотни измерений, со множеством локальных максимумов и минимумов. Вначале (то есть в момент времени t = 0) расположим сто «птиц» случайным образом, но вблизи друг от друга, на некоторой части области определения функции. Всякий раз, когда мы движемся вперед вдоль оси времени (t' = t + 1), каждая «птица» должна учитывать всего два параметра: направление (А), в котором располагается «центр масс» стаи, то есть среднее направление, указывающее, где находятся остальные члены стаи, чтобы не слишком отдаляться от них, и направление (В) максимального градиента функции, которую необходимо оптимизировать — так как мы хотим найти максимум функции, нужно определить, в каком направлении функция возрастает быстрее всего. На основе двух вычисленных направлений А и В рассчитывается третье, С = А + В. Каждая «птица» должна немного сместиться в этом направлении С. Так как все «птицы» подчиняются этим правилам поведения, стая будет двигаться вдоль графика функции, не слишком отдаляясь от него, в поисках глобального максимума. Преимущество использования группы «птиц» позволяет увеличить выборочное пространство и снизить вероятность попадания в локальные максимумы, далекие от глобального.
На рисунке черными точками обозначены различные «птицы» стаи, белой точкой — центр масс стаи. Стрелкой указано направление, в котором следует стая в поисках глобального максимума.
Роевой интеллект имитирует движение некоторых птиц, к примеру скворцов, которые собираются в огромные стаи, вычерчивающие в небе весьма любопытные фигуры.
Несмотря на инновационный характер роевого интеллекта, его полноценное использование для решения реальных задач только начинается. Сегодня активно рассматривается возможность применения роевого интеллекта в автоматически управляемых транспортных средствах. Наиболее интенсивные исследования в этой области ведутся в двух тесно связанных отраслях — авиакосмической и военной промышленности.
Искусственная жизнь — относительно новый раздел искусственного интеллекта, и многие области его применения только зарождаются. В будущем сложные задачи контроля, управления и планирования будут выполняться именно «живыми» системами, как это уже происходит на рынках ценных бумаг.
Теория игр
Теория игр — раздел математики, изучающий стратегии взаимодействия субъектов и процессы принятия решений. Конечная цель теории игр — определить оптимальные стратегии и спрогнозировать поведение субъектов в конкретных ситуациях.
Основы этой дисциплины заложили математики Джон фон Нейман и Оскар Моргенштерн во время холодной войны. Их целью был поиск оптимальных военных стратегий, однако теория игр быстро нашла применение в экономике, политике, этике, философии, биологии и, разумеется, вычислительной технике.
Теория игр крайне полезна при изучении сложных адаптивных систем, так как агенты, составляющие эти системы, часто должны соперничать или сотрудничать между собой для общего блага. При сотрудничестве часто происходит так, что отдельные усилия конкретного агента оказываются выше, чем общая выгода, пропорционально разделенная между всеми агентами, составляющими систему. Тем не менее эти отдельные усилия способны сыграть определяющую роль при достижении общего результата, который может на несколько порядков превышать индивидуальные усилия агентов. Таким образом, чтобы стимулировать адекватное поведение агентов, составляющих систему, и определить ее жизнеспособность на основе их поведения, необходимо использовать методы теории игр.
Знаменитый робот ASIMO, созданный в компании Honda, способен, подобно человеку, спускаться по лестнице и играть в футбол.
И вновь интеллектуальный анализ данных
Искусственная жизнь привлекательна и окутана тайной для непосвященных. Однако описанные нами понятия, которые скрываются за определением искусственной жизни, например клеточные автоматы, используются для решения достаточно прозаических инженерных задач, в частности для интеллектуального анализа данных, о котором мы уже рассказали. В задачах анализа данных для получения выводов требуется обрабатывать огромные объемы данных, что не под силу экспертам-людям. По этой причине для анализа обычно используются интеллектуальные информационные инструменты.
Анализ данных можно выполнить множеством средств, среди которых особое место занимают клеточные автоматы, так как они позволяют представить взаимосвязи между данными в пространстве. Допустим, что мы анализируем данные о продажах зонтов в конкретной стране. Сведения о продажах с разбивкой по клиентам могут быть обработаны без учета местоположения, в лучшем случае — разделены на категории по территориям: к примеру, клиент А из города X приобрел 20 единиц товара, клиент В из города У — 240 единиц, клиент С из города Z — 4530 единиц. В системе, где не учитывается территориальное распределение, города X, Y и Z — всего лишь категории, и мы никак не можем указать, что город X находится в 150 км к югу от Y, а Y — в 400 км южнее Z. Если мы будем учитывать эти данные, то станет понятно, что в северном регионе страны дожди идут чаще, а к югу продажи зонтов существенно снижаются.
Теперь представим данные о местоположении в виде таблицы, подобно тому, как это происходит при использовании клеточных автоматов. Постараемся связать расположение данных в таблице с реальным географическим местоположением регионов, откуда поступили данные о продажах. При таком представлении данных территориальное расположение можно учесть намного более интеллектуальным способом, чем при простом разбиении на категории.
После сведения данных в таблицу можно применить эволюционный алгоритм, позволяющий обнаружить правила, которые необходимо реализовать в клеточном автомате для анализа. Вернемся к примеру с продажами зонтов и дополним данные о продажах уровнем осадков в егионах. Мы можем разработать алгоритм, позволяющий получить множество правил, согласно которым раскрасим клетки таблицы в тот или иной цвет в зависимости от продаж зонтов в различных регионах, исключив влияние уровня осадков. Если мы представим данные о продажах на карте без учета уровня осадков, получим следующую картину.
Если мы исключим воздействие разного уровня осадков, карта будет выглядеть следующим образом.
На основе этих данных эксперт может определить, что объем продаж выше всего в центральных и южных регионах. Это означает, что уровень покупательной способности в этой части страны выше: из-за особенностей погоды зонты не являются товаром первой необходимости, однако люди готовы покупать их. Далее компания — продавец зонтов повысит цены в центре и на юге страны: хотя в этом регионе продажи меньше, люди покупают зонт не из необходимости, а как предмет роскоши, следовательно, менее чувствительны к цене.
Еще одна очень важная область, в которой используется искусственная жизнь и сложные адаптивные системы в целом, это программирование роботов. Постепенно широкому потребителю становятся доступными домашние роботы, способные пылесосить, протирать пол и даже определять вторжение посторонних в квартиру.
Такие роботы обычно мобильны, однако их перемещениями и действиями должна руководить интеллектуальная система. Рассмотрим роботов-пылесосов и покажем, как они соответствуют определению сложных адаптивных систем.
Робот-пылесос — один из самых известных домашних роботов.
— Агрегирование. Разумеется, эти роботы представляют собой агрегированные системы, так как содержат мотор, датчики присутствия, пылесос, устройство обработки данных, определяющее, в каком направлении должен двигаться робот, и так далее.
— Нанесение меток. Эти роботы могут присваивать метки различным элементам среды и взаимодействовать с ними. К примеру, если робот определяет, что некоторая область грязнее обычного, он помечает ее соответствующей меткой и прилагает больше усилий для ее уборки. Пользователь также может отметить зону, в которую робот не должен заходить, и он будет избегать этой зоны.
— Нелинейность. Поведение робота очевидно нелинейно, так как его части в совокупности способны решать намного более важные задачи, чем по отдельности. Мотор, колеса, пылесос и другие элементы робота независимо друг от друга не смогут провести уборку в доме без вмешательства человека, а когда все эти элементы объединены в сложную адаптивную систему, они способны убрать пыль самостоятельно.
— Потоки. Сам робот представляет собой сложную систему управления потоками информации, поступающей из внешней среды. Робот содержит ряд датчиков, которые фиксируют информацию о среде и указывают, что робот находится в особенно загрязненной области или перед ним располагается стена. Вся эта информация поступает в центральный процессор, который анализирует ее и отправляет сигналы различным деталям робота. Детали робота исполняют инструкции, изменяющие исходную среду, из которой изначально поступают сигналы. Если робот обнаруживает загрязненный участок, его процессор повышает мощность всасывания, а если робот сталкивается с препятствием, то процессор может дать указание совершить разворот.
— Разнообразие. Если робот наталкивается на препятствие, то ищет способы обойти его. Разнообразие заключается в том, что робот обходит препятствия по-разному — он постоянно чередует способы обхода, чтобы снизить вероятность попадания в бесконечный цикл.
— Внутренние модели. Робот содержит ряд неявных внутренних моделей: в начале работы он движется случайным образом, а по мере знакомства с территорией сосредотачивает внимание на особо пыльных участках.
— Строительные блоки. Роботы-пылесосы в своих внутренних моделях используют строительные блоки. К примеру, если робот сталкивается со стеной, он пытается обойти препятствие, затем понимает, что обойти стену нельзя, и применяет иную стратегию. Робот-пылесос не обучен адаптировать подобное поведение ко всем возможным типам стен или препятствий, напоминающих стены, он использует строительный блок под названием «стена» и при столкновении с ним следует определенной стратегии.