Мысли
Этот странный придуманный мир
Руслан Богатырев
В этой большой статье, начало которой помещается в номере, автор пытается оценить некоторые проблемы искусственной жизни и искусственного интеллекта. Абстрактные математические модели, клеточные автоматы... Можно ли с их помощью решить проблемы человечества и, в конце концов, смоделировать саму жизнь?
"Человек благоразумный подстраивает себя
под окружающий его мир, тогда как безрассудный человек
упорно подстраивает этот мир под самого себя.
Так что весь прогресс опирается
на людей безрассудных".
Бернард Шоу
0. Вместо введения
Парадоксальное высказывание Бернарда Шоу имеет прямое отношение к тексту нашей статьи. В самом деле, почему человек так стремится поработить себя машинами? Насколько велика их власть над людьми? Неужели весь прогресс человечества в том только и заключается, чтобы в конечном итоге построить такой мир, в котором сам человек станет звеном избыточным, а потому неизбежно исчезнет?
В этой статье мне хотелось бы затронуть некоторые из последних научных работ в области искусственной жизни и искусственного интеллекта, рассказать о таких вещах, как конечные и клеточные автоматы, генетическое программирование, автономные агенты. Но прежде я все же коснусь философской стороны дела. И пусть иной читатель будет категорически не согласен с моими выводами и утверждениями. Ведь если вдуматься, то каждый из нас философ. И каждый имеет право на свой, отличный от других, взгляд на взаимосвязь вещей и понятий. По крайней мере, дочитав статью до конца, вы найдете для себя много полезного материала.
1. Проблемы человечества
Академик Владимир Иванович Вернадский в своих работах не раз обращался к проблеме иждивенчества человека. Человек – существо гетеротрофное . А это значит, что он беспощадно растрачивает биологическую энергию, запасенную биосферой за миллионы лет эволюции. Причем этот процесс идет столь быстро, что результаты воздействия на окружающий мир даже одного поколения весьма устрашающи. Если дело и дальше пойдет в таком же темпе, то человечеству вряд ли суждено будет остановить свое стремительное движение к краю пропасти. И тогда вряд ли доведется претворить в жизнь надежду Вернадского о превращении человека в существо автотрофное путем синтеза привычных ему продуктов питания из мира неживой природы.
Итак, если разобраться, то перед человечеством стоит та же прозаическая задача, которую когда-то вынужден был решать еще первобытный человек – поиск пропитания. Но мы, в отличие от наших далеких предков, находимся в жестких временных рамках. И у нас теперь нет возможности хватать все съедобное, что попадется под руку. Нужно придумать, как "сварить кашу из топора". Человеческий интеллект – вот одновременно и беда, и спасение человечества. Вернадский искренне верил в то, что знание человека поможет ему не только выжить, но и восстановить нарушенную гармонию живой и неживой природы. Проблема состоит в том, что на нынешнем этапе эволюции человек весьма смутно представляет себе свои реальные возможности. И интеллектуальные – прежде всего. Человечество уже научилось активно воздействовать на свой мозг; по крайней мере, факт существования в мире психотронного оружия – давно не секрет. Мы в состоянии изменять программу, заложенную в человека на генном уровне. Но умея подавлять и изменять, мы пока не обладаем достаточным представлением о законах и принципах мышления. Мы пока не в состоянии регулировать процесс создания человеком новых знаний. Человеческий интеллект остается для нас "черным ящиком" – загадкой, которая продолжает будоражить все новые поколения исследователей.

Так может, бросить всю эту затею, весь этот сизифов труд? Работает как-то этот мозг, выдает на-гора какие-то знания – да и ладно. А что? Тоже подход. Пока биологи и психологи прокладывают тоннель с одной стороны, лингвисты, математики и программисты начали его рыть с другой. Бог даст, когда-нибудь они и встретятся. Заманчиво? Хотя, скорее всего, их дороженьки разойдутся. И в итоге мы получим "словесный портрет" человеческого интеллекта и действующую модель интеллекта искусственного.
2. Первые шаги к искусственному интеллекту
На протяжении всей истории компьютерной науки (а это уже полвека) человек сначала пытался построить машинный разум (machine brain), потом искусственный интеллект (artificial intelligence), а затем и искусственную жизнь (artificial life). Начало этим попыткам было положено многими людьми, и среди первопроходцев был известный американский ученый Норберт Винер. Сейчас многие уже подзабыли слово "кибернетика". А ведь в свое время оно было в нашей стране у всех на устах. Такое странное название, произошедшее от греческого слова "kybernetes" ("рулевой"), Винер дал своей книге, вышедшей в 1948 году. Чему посвящена книга, нетрудно было догадаться по ее подзаголовку – "Управление и связь в животном мире". В этой книге под словом "кибернетика" автор объединил следующие науки: теорию информации, отрицательной обратной связи, теорию автоматов, теорию сложных машин и еще целый ряд других направлений. Наиболее ценной в таком подходе была идея создания междисциплинарной науки. Ведь существуют задачи, которые являются общими для проблем управления и связи, – задачи, которые в одинаковой степени интересуют физиков, математиков, философов, биологов, психологов. Винер одним из первых понял и сформулировал необходимость выделения и изучения таких задач. Предметом кибернетики является область всех возможных машин, а не только тех, что доступны современной индустрии. Пытаясь построить абстрактные машины, первые кибернетики обратили свой взор на математическую логику, точнее говоря, на так называемые конечные и логические автоматы.
Конечные автоматы (finite state automata) – с ними мы сталкиваемся повсюду: от выключателя освещения до пульта управления видеомагнитофоном. Это такое устройство, подобное обычному реле, которое работает по жесткой, заложенной в него системе правил. Например, находясь в некоем состоянии "р" и встречая символ "а", он переходит в состояние "q" и выдает символ "Ь". Нажали кнопочку – свет зажегся, отжали -погас. Только так и никак иначе. Поскольку число возможных состояний такого автомата конечно, а события (символы) на которые он реагирует, жестко заданы, то и называется он конечным. Работу конечного автомата можно весьма просто представить в графическом виде: каждое состояние обозначим узлом графа, переход из состояния в состояние – ориентированной дугой, а поверх каждой дуги напишем пару из входного и выходного символа. Для примера на рис. 1 представлена работа обычного пульта управления видеомагнитофоном.
Здесь роль входных символов выполняют кнопки на пульте управления, выходные символы в этой модели не требуются.
Наибольшее применение конечные автоматы нашли в теории формальных языков и в области трансляции. Однако их можно весьма эффективно использовать для описания логики работы пользовательского интерфейса, для программирования событийно-ориентированных приложений. Главное здесь то, что, как и в любой абстракции, огрубляя действительность, вы получаете модель, которая может анализироваться и интерпретироваться независимо от человека.
Логические автоматы получаются из конечных, если алфавит входных и выходных символов ограничить: 0 ("ложь") и 1 ("истина"). А ведь и впрямь – они эквивалентны преобразованиям, совершаемым в математической логике. Любые логические функции – конъюнкция ("И"), дизъюнкция ("ИЛИ"), отрицание ("НЕ") – все это однозначно представляется логическим автоматом. Наибольший вклад в развитие логических автоматов внес легендарный Алан Мэтисон Тьюринг. Именно ему удалось реализовать универсальный автомат, с помощью которого можно было бы описать любой алгоритм. Ныне этот автомат, получивший название "машина Тьюринга", может быть использован для того, чтобы проверить, существует ли алгоритм решения той или иной задачи.
Машина Тьюринга (Turing machine) – это конечный автомат, который соединен с читающей/пишущей головкой и который способен перемещать ее вдоль бесконечной ленты, разделенной на ячейки размером в один символ. Положение головки – это и есть состояние автомата. Памятью автомата служит бесконечная лента. Как видите, устройство довольно простое. Самое удивительное, что такое примитивное "устройство" и впрямь обладает гигантской вычислительной силой. Вот только писать программы для него – дело очень тяжелое. Да и не для этого такой универсальный автомат задумывался. Истоки изобретения Тьюринга восходят к середине 30-х годов нашего столетия: еще в 1938 году Алан Тьюринг защитил докторскую диссертацию в Принстонском университете (США) на тему "Система логики, основанная на порядковых числительных".
С работами Тьюринга тесно связаны и работы другого американского ученого – Клода Шеннона. Когда Шеннон в те же тридцатые годы работал над докторской диссертацией в Массачусетском технологическом институте (MIT, Massachusetts Institute of Technology), его научным руководителем был профессор Буш. Тот самый Буш, который создал механическое вычислительное устройство (машину Буша), позволявшее решать сложные дифференциальные уравнения (для расчета движения самолета). Обнаружив много общего между булевой алгеброй и принципами работы электрических цепей, Клод Шеннон тогда же спроектировал логический "дифференциальный анализатор". А спустя 10 лет он написал работу "Математическая теория связи", которая легла в основу нынешней теории информации. Информацию, по Шеннону, можно свести к двоичному представлению (с помощью нулей и единиц). Вот откуда взяла начало та самая двоичная система, на которой построены практически все нынешние (цифровые) компьютеры.
Для полноты картины упомяну вкратце и о такой абстракции, как сети Петри (Petri Nets). Ныне они почти забыты. А ведь это весьма эффективный инструмент для моделирования различных процессов. Сеть Петри чем-то напоминает своеобразное игровое поле, в котором есть лунки (позиции) и задвижки (переходы). В лунках может находиться произвольное число шариков (фишек). Лунки соединяются с задвижками специальными желобками (дугами). При этом желобок не может связывать напрямую лунку с лункой и задвижку с задвижкой. Остается добавить, что при работе учитывается "уклон желобков" (направление дуг). Если во всех входных для данной задвижки лунках есть шарики – она считается "разрешенной". Правила игры (работы сети) очень простые. Произвольным образом выбираем любую "разрешенную" задвижку и открываем ее (переход запускается). При этом из входных лунок у нас исчезает по одному шарику, а в каждой выходной – по одному появляется. Если количество входных и выходных лунок различно, общее количество шариков меняется.


При графическом представлении сети для обозначения лунок используют окружности, задвижек – прямоугольники, шариков – закрашенные кружки.
А теперь посмотрим, какую пользу принесет нам такая модель. Во-первых, с ее помощью можно описывать выражения булевой алгебры: надо лишь считать, что вместимость лунки составляет не больше одного шарика. В этом случае каждая задвижка будет играть роль логической операции. Во-вторых, с помощью сетей Петри можно представлять причинно-следственные связи. Действительно, если каждая задвижка будет представлять какое-нибудь событие, а лунка – условие (предусловие и постусловие) события, мы сможем смоделировать любую жизненную ситуацию. Событию можно приписывать длительность и другие атрибуты. Подобные сети "условия/события" могут быть использованы для имитации и анализа различных жизненных ситуаций и даже для моделирования социальных систем (Американская ассоциация юристов использует такие сети для описания стадий гражданского процесса).
Взгляните на рис. 2. Здесь с помощью обычной сети Петри представлена модель классической задачи Эдгара Дейкстры о пяти обедающих философах. Пять китайских философов уселись по кругу и приготовились к трапезе. Перед каждым из них находится блюдо с нежным рисом, а между блюдами разложено ровно по одной палочке. Итого, у нас пять философов, пять блюд и пять палочек. Чтобы есть рис, философу необходимо ровно две палочки. Немного насытившись, он может положить обе палочки и предаться размышлениям, а затем продолжить свою трапезу.
"В чем же здесь загвоздка?" – спросите вы. Дело в том, что задача Дейкстры демонстрирует типичную проблему распределения ресурсов в вычислительных системах, когда для работы того или иного процесса необходим конкретный ресурс (требующийся и другим процессам). В нашем случае в роли ресурсов выступают китайские палочки, а в роли процессов – сами философы. Если философов "запрограммировать" так, что, взяв палочку, они не смогут ее положить, пока не получат вторую и не захотят предаться размышлениям, то в какой-то момент времени может наступить тупиковая ситуация – каждый из философов возьмет по одной палочке и система "повиснет". Чтобы этого не произошло, надо на уровне модели заставить философа брать обе палочки одновременно. Именно такое решение и представлено на данном рисунке.
Нетрудно заметить, что между сетями Петри и изложенными выше абстракциями существует вполне конкретная связь. Так оно и есть, конечные автоматы являются частным случаем сетей Петри. В этом случае вместимость лунок равна 1, а у каждой задвижки количество ее входных и выходных желобков одинаково и равно 2. Каждому символу, входному и выходному, а также состоянию автомата соответствует одна лунка. К каждой задвижке ведет по одному желобку от состояния и входного символа, а выходные желобки ведут в следующее состояние и в выходной символ.
Для обеспечения эквивалентности сетей Петри и машины Тьюринга необходимо ввести в общую модель сдерживающие желобки (дуги). Они работают с точностью до наоборот (логическое "НЕ") – только при отсутствии шариков в соответствующей входной лунке. Обратите внимание, что в отличие от конечного автомата и машины Тьюринга состояние сети Петри однозначно описывается не одним конкретным состоянием, а упорядоченным набором (вектором) из состояния каждой лунки (текущего количества шариков). Работа сети Петри определяется не только топологией сети, но и вектором начальной разметки. Разработанный к настоящему времени богатый математический аппарат позволяет решать многие проблемы анализа сети, в частности, вопрос о достижимости из начального состояния (разметки) вполне определенного конечного состояния.

