Компьютерные игры, искусственный интеллект, секс у бактерий и эволюция
scinquisitor — 19.06.2011 В компьютерной вселенной фантастического мира Mass Effect есть цивилизация роботов Гетов, наделенных искусственным интеллектом. В какой-то момент эти роботы оказались разделены на две группы с противоположным мнением по фундаментальному вопросу. Первая группа пришла к выводу, что надо поддержать некоторых космических пришельцев (тоже роботов), которые собрались стереть с лица вселенной органическую жизнь и пустить ее на биоматериал. Вторая группа пришла к выводу, что надо остановить это вторжение.Один из роботов с искусственным интеллектом имя которому Легион в беседе сообщает главному герою причину столь разных мнений. Оказывается, что дело в том, что первая группа носителей искусственного интеллекта поражена вирусом, который вносит сбой в работу программ. Из-за этого сбоя уравнения, которые имеют корнем число 1.33382 решаются с корнем 1.33381 (кстати, есть реальный похожий баг некоторых старых пентиумов). Эта ошибка затрагивает процессы более высокого уровня. Поэтому две группы роботов неизбежно приходят к разным выводам.
Сегодня я занимался генетическим программированием. В искусственном интеллекте генетическое программирование — автоматическое создание или изменение программ путем их эволюции. С помощью этой методологии «выращиваются» программы всё лучше и лучше (в соответствии с определенной функцией приспособленности), решающие полученную компьютерную задачу. Мне интересно узнать, можно ли решить этим методом одну научную задачу в области генетики.
В общем случае процесс исполнения генетических алгоритмов выглядит так. Генератор случайных программ создает популяцию программ. Программы пробуют выполнить некоторую задачу (должна быть выбрана такая задача, чтобы мы могли автоматически оценить, насколько хорошо она выполнена). Те программы, которые хуже справились с задачей, стираются. Те программы, которые лучше справились с задачей, оставляют потомков, похожих по коду на "родителей", но с внесенными случайными мутациями. Как вариант, можно скрещивать программы: создавать потомков с кусочками кода от двух или более программ "родителей" - ввести аналог полового размножения. Если половой процесс ввести правильно, то в большинстве случаев он заметно ускоряет эволюцию программ. Это хороший ответ на вопросы "почему в природе существует секс", "почему животные не размножаются исключительно почкованием", "почему даже у бактерий происходит обмен фрагментами ДНК" . Секс - это приспособление для ускорения эволюции.
Секс у бактерий (коньюгация)
Довольно простая метапрограмма, которая запускает эволюцию, создает случайные программы, оценивает их качество, мутирует и скрещивает их, обычно пишется человеком. Хотя в некоторых случаях используют мета-генетическое программирование при котором эволюционируют не только конечные программы, но и сама метапрограмма (например, "секс" не задается как исходная возможность размножения программ, а возникает сам в ходе эволюции метапрограммы и всех ее параметров). В каком-то очень глубоком смысле итоговые параметры метапрограммы аналогичны нашим законам физики и условиям среды, задающим правила и возможности успешного выживания. Но все это отступление от темы.
Эффективность генетического программирования дает наглядную демонстрацию эффективности эволюции по Дарвину (отбираются самые приспособленные программы) и является прекрасным примером появления "сложных объектов" исключительно благодаря случайным мутациями и отбору - экспериментальное опровержение одного из любимых тезисов креационистов "о невозможности самоусложнения". В интернете можно найти множество примеров достижений генетического программирования в различных областях, в том числе при создании некоторых запатентованных изобретений, таких как микросхемы. Лично мне нравится пример программы Blondie24, которая эволюционировала, чтобы играть в шашки. Когда программу выпустили против игроков-людей, она сыграла 165 партий и достигла рейтинга превосходящего рейтинг 99.6% людей, играющих в шашки на сайте, на котором она тестировалась.
В чем-то похожие принципы лежат в основе обучения роботов лауреата Нобелевской премии Джеральда Эдельмана, который выдвинул идею "Нейродарвинизма". По представлениям Эдельмана в мозге человека при обучении происходят процессы аналогичные естественному отбору. Принцип работы созданного в его лаборатории робота, имитирующего такое обучение заключается в том, что в зависимости от результатов его деятельности (наличия успеха в поставленной задаче) определенные связи в его "мозге" (имя которому Дарвин) усиливаются, а другие ослабевают. Тем самым меняется искусственная нейронная сеть, управляющая поведением робота (сеть эволюционирует; связи способствующие успеху закрепляются; связи препятствующие успеху ослабевают, при этом постоянно образуются и новые связи).
NOMAD - самообучающийся робот.
У меня это глубоко ассоциируется с идеями, изложенными еще 30 лет назад философом Карлом Поппером, который указывал в своем произведении "Эволюционная эпистемология" на некоторое сходство между биологической эволюцией живых организмов, функционированием разума человека и развитием науки. В науке тоже происходит эволюция. Можно даже сказать, что по Дарвину: новые идеи постоянно рождаются и подвергаются проверке на качество. Идеи, гипотезы не прошедшие такую проверку отвергаются научным сообществом, а прошедшие сохраняются, часто вытесняя старые, менее "качественные" идеи, которые хуже описывают реальность. Этот метод не гарантирует, что все принятые идеи будут правильными, но он гарантирует, что мы будем все лучше и лучше понимать, как устроена природа: более правильные идеи рано или поздно вытеснят менее правильные.
После долгих отступлений перейду к делу. Вчера я запустил программу, которая должна была запустить эволюцию алгоритмов, решающих нужную мне задачу и обнаружил, что эволюция не происходит. Качество алгоритмов не росло из поколения в поколение ни на каплю. Я долго не мог найти ошибку, несмотря на то, что код программы очень простой - все было на своем месте. И только сегодня я понял, что это было вызвано тем, что в одном месте кода метапрограммы вместо числа 5 у меня стояло число 6. Это приводило к тому, что ни одна из порожденных метапрограммой программ заведомо не могла функционировать. Одиночная ошибка в числе приводила к тому, что в моей симуляции пропадала эволюция. После исправления ошибки эволюция успешно запустилась.
И мне пришла в голову гипотеза. А что если креационист - это просто человек у которого одна из мысленных операций порождает слегка неверное значение. Не "5", а "6". Не "1.33382", а "1.33381". Это могло бы затронуть и процессы на более высоком иерархическом уровне, как в некоторых перечисленных примерах. В том числе к непониманию основ современной биологии и неспособности обучаться этим основам.