Читаем Эволюция разума. Как расширение возможностей нашего разума позволит решить многие мировые проблемы полностью

Я опишу этот процесс в упрощенном виде. Сначала мы определяли способ кодирования возможных решений данной проблемы. Если проблема заключалась в оптимизации исходных параметров какой-то цепи, мы определяли список всех параметров (приписывая каждому специфический объем информации (число битов)) этой цепи. Этот список является своеобразным генетическим кодом генетического алгоритма. Мы случайным образом создавали тысячи и более таких генетических кодов. Каждый код (который представляет собой один набор исходных параметров) рассматривается в качестве модельного организма («решения»).

Далее мы оценивали каждый модельный организм в модельной среде, используя описанный метод определения каждого набора параметров. Эта оценка — ключ к успеху генетического алгоритма. В нашем примере мы проверяли все программы, созданные на основе наших параметров, и оценивали их по определенным критериям (решена ли задача, как быстро она решается и т. д.). Лучшим организмам (лучшим «решениям») разрешалось выжить, а остальные были элиминированы.

Далее мы заставляли выжившие организмы размножаться до определенной численности «особей». Для этого мы имитировали половое размножение: иными словами, мы создавали потомство, в котором каждая особь наследовала одну часть генетического кода от одного родителя, а другую — от другого. Обычно в нашей системе нет никакой разницы между женскими и мужскими организмами, потомство может давать любая пара условных родителей, так что речь фактически идет об однополых браках. В этой связи данный процесс не столь интересен, как в природе. Для нас было важно только наличие двух родителей. По мере размножения наших модельных организмов мы допускали появление в их хромосомах случайных мутаций (изменений).

Итак, мы описали появление одного поколения модельных организмов. Далее мы повторяли все те же процессы для каждого следующего поколения: определяли, насколько улучшился дизайн (то есть рассчитывали среднее улучшение оценки для всех выживших организмов). Когда результаты оценки организмов из двух последовательных поколений практически переставали улучшаться, мы останавливали цикл и использовали лучшие образцы из последнего поколения[99].

Суть генетического алгоритма (ГА) заключается в том, что создатели программы не программируют решение, а позволяют ему сформироваться в результате многократных имитаций конкуренции и улучшений. Биологическая эволюция — процесс умный, но медленный, и мы попытались этот медленный процесс ускорить. Компьютер действует достаточно быстро, чтобы имитировать смену множества поколений за несколько часов или дней, а наши эксперименты длились несколько недель, так что мы могли наблюдать смену сотен тысяч поколений. Но этот многократно повторяющийся процесс мы должны были воспроизвести лишь однажды. Как только мы запустили процесс искусственной эволюции, достаточно быстро смогли применить полученные усовершенствованные правила к решению реальных проблем. В нашей системе распознавания речи мы использовали их для обнаружения исходной топологии сети и других критических параметров. Итак, мы использовали две самоорганизующиеся системы: ГА для симуляции биологической эволюции, что позволило определить специфический дизайн коры, и ИСММ для симуляции организации коры, определяющей процесс обучения у человека.

Еще одно важное требование для успешного применения ГА заключается в обеспечении надежного метода оценки всех возможных решений. Эта оценка должна быть быстрой, поскольку в каждом поколении приходится анализировать тысячи возможных вариантов. Метод ГА прекрасно подходит для нахождения точного аналитического значения в задачах с очень большим числом переменных. Например, при проектировании моторов приходится учитывать более сотни переменных и удовлетворять десяткам различных условий. Использование инженерами General Electric метода ГА при создании реактивного двигателя позволило добиться более точного соответствия необходимым требованиям, чем применение традиционных методов.

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

Проект «Электрическая овца» Скотта Дрейва — основанная на генетическом алгоритме программа, которая умеет рисовать. Функция оценки использует в качестве оценщиков многие тысячи людей. Рисунки изменяются во времени — вы можете увидеть их на сайте electricsheep.org.

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

Перейти на страницу:

Все книги серии Civiliзация

Похожие книги