Слепцов Н.В. ЭВОЛЮЦИОННО - ГЕНЕТИЧЕСКИЕ МЕТОДЫ И ОСНОВАНИЯ ГЕНЕТИЧЕСКОГО ПРОГРАММИРОВАНИЯ
Поиск эффективных решений сложных, комплексных проблем, например, проблем искусственного интеллекта приводит к вовлечению в спектр применяемых методов идей биологической эволюции, иначе говоря, в настоящее время один из подходов к разрешению проблемы: "Как обеспечить получение решения
комплексных задач?" состоит в том, чтобы заимствовать идеи естественного отбора и использовать их для решения проблемы.
Организмы как правило производят много потомков, но их популяции, которые, должны были бы иметь тенденцию к экспоненциальному росту, имеют тенденцию сохраняться в постоянных размерах, поскольку силы, действующие на популяцию (конкуренция, заболеваемость, хищничество), ведут к выживанию особей, наилучших для среды обитания. Организмы в любой совокупности имеют индивидуальные различия, и поскольку только оставшиеся в живых могут размножаться, черты, которые помогли им выжить, будут переданы в следующее поколение, а черты, не дающие преимуществ, не передаются потомкам и с течением времени исчезают из популяции. Эволюция путем естественного отбора накапливает малые положительные изменения в популяции.
Механизм индивидуальной изменчивости способа передачи черт родителей потомкам упрощенно представим следующим образом. Все организмы первоначально растут от единственной клетки, которая содержит ДНК, являющейся исходной программой построения целого организм. ДНК - длинная цепь молекул -нуклеотидов. Черты передаются потомкам просто передачей ДНК, что имеет важное значение, поскольку черты, возникшие по внешним причинам, (например, последствия травм) потомкам не передаются.
Имеются механизмы создания новых признаков (черт). Простейшим является мутация, изменяющая нуклеотиды (в ряде случаев - добавляющая или удаляющая). Мутация может произойти из-за погрешности копирования ДНК (химические воздействия или излучение), или, что наиболее интересно, это может произойти под управлением самого организма с изменением "горячих точек", расположенных на хромосоме. Мутация происходит во всех организмах, но двуполые организмы имеют дополнительные механизмы. Путем использования ДНК двух организмов и выбора частей каждого для формирования новой ДНК, осуществляется смешение черт организмов. Так, если различные благоприятные черты присутствуют в двух родительских организмах, они могут быть объединены в потомке. Возможен и обратный вариант: могут объединиться неудачные комбинации и могут быть разбиты удачные комбинации черт. Однако объединение благоприятных черт дает их владельцу лучший шанс на выживание и передачу полученных характеристик потомкам.
Приведенное описание крайне упрощено. Его главная цель состоит в том, чтобы выдвинуть на первый план особенности естественного отбора и генетики, которые имеют прямое отношение к пониманию эволюционных алгоритмов. В действительности, реальные процессы крайне сложны. Например, при декодировании ДНК, различные фрагменты декодируются параллельно и протеины, которые при этом производятся, могут активизировать или блокировать декодирование в других фрагментах. Часто протеины взаимодействуют очень замысловатым способом для создания или сохранения организма. Идея использования генетических алгоритмов (ГА) состоит в использовании принципа эволюции и применение его к решению задач.
Генетические алгоритмы - алгоритмы эволюционные; они работают, моделируя эволюционные процессы. Для эволюции существенным является наличие ряда обстоятельств:
есть популяция организмов;
некоторые организмы предпочтительнее ( в большей степени соответствуют окружению), чем другие;
предпочтительные организмы имеют тенденцию производить больше потомков;
организмы "определяются" их генетическим кодом;
генетическая информация потомков сформирована из частей генетической информации их предков с учетом влияния мутации.
Для ГА, влияние на особь или внешняя среда, в которой особи существуют, интерпретируются как задача, которая должна быть решена, а особи или организмы, приспособленные к среде являются решениями этой задачи. Для применения ГА к реальной задаче, должны быть определены: а) генетическая кодировка для задачи и б) функция оценки (пригодности), которая каждому решению ставит в соответствие некоторую величину согласно его характеристикам.
Традиционно ГА работают со строками символов фиксированной длины, которые иногда называют хромосомами по их естественной биологической аналогии. Каждой позиции в строке соответствует ген -некоторое множество, содержащее символы, которые могут появиться в отдельной позиции строки. Элементы гена называются его аллелями.
Генетическое кодирование для решения определенной задачи зависит от двух составляющих: от длины
строки и генов, расположенных в ней, что соответствует представлению задачи или просто представлению, и от способа отображения между строками и возможными решениями задачи. Отображение от строки к решению соответствует развитию организма из единой клетки в соответствии с кодом ДНК.
Аллели для ГА могут быть представлены любыми символами, но как по теоретическим, так и по практическим соображениям обычно используются натуральные числа. Например, двоичной кодировке генов соответствует {0,1}, троичной - {0,1,2}. Фиксируя таким образом алфавит, можно поставить в соответствие каждому гену одно число, равное количеству элементов в нем ( характеристика гена ). Представление задачи может быть задано вектором таких характеристик генов ( длиной вектора является длина строк) и характеристика гена для определенной позиции определяет ген для этой позиции в строке.
Таким образом, решение проблемы может быть представлено как организм, определяемый генетической информацией, а функция оценки оказывает воздействие аналогичное воздействию окружающей среды.
ГА работает с популяцией фиксированного размера. Первоначальная популяция образована организмами (особями) со случайно сгенерированными строками. Эти строки оцениваются с помощью функции оценки, после чего производится селекция. Селекция отбирает пары строк из популяции, вероятность отбора пропорциональна приспособленности. Пары строк подвергаются рекомбинации, этот процесс включает две операции: кроссовер и мутацию, потомок помещается в новую популяцию. Процесс селекции и рекомбинации повторяется до тех пор, пока не заполнится новая популяция. Цикл образования новой популяции из старой - поколение или эпоха.
Рекомбинация - процесс объединения двух строк для формирования потомков. Процесс включает операции кроссовера и мутации. Кроссовер смешивает родительские аллели. Традиционной формой кроссовера является одноточечный кроссовер. Он воздействует на родительские строки с определенной вероятностью
- вероятностью кроссовера - и действия его состоят в в выборе точки внутри строки, разрыве родительских строк в этой точке и в обмене полученными фрагментами. Результат - формирование двух новых строк. Действие мутации на строку потомка состоит в том, что с определенной вероятностью - вероятностью мутации - каждая аллель в потомке изменяет значение на другое. Данные действия показаны на рис. 1 Вероятность мутации обычно низка, например, 0.01, 0.001, и маловероятно, чтобы три мутации
могли произойти на строке в 10 битов.
Предки Потомки
0 0 0 0 0 0 0 0 | 1 1 0 0 0 1 1 0 1 0 0 1
1 1 1 1 1 1 1 1 | 0 0 1 1 1 0 0 0 1 1 0 0
Кроссовер Мутация
Рис.1 Получение потомков рекомбинацией
ГА работает до тех пор, пока не встретится определенное условие остановки. Например, ГА может работать в течение определенного числа поколений, либо до тех пор, пока не будет достигнуто соответствие строки некоторой оценке. Результатом работы ГА является наилучшая строка из конечной популяции или наилучшая строка, найденная во время прогона. Возможна, однако, ситуация, когда будет найдена и затем утрачена строка с хорошими свойствами.
Каким образом случайный обмен и изменение подстрок совместно со смещенным, но все равно случайным методом селекции строк, полученных этими операциями может обеспечить эффективный поиск?
Причина в том, чтобы рассматривать не строки в целом, а способ сохранения внутри строк отображений аллелей. Отображения аллелей называются шаблонами (в ряде работ - шимами), они - просто строки, которые обрабатывает ГА, но с дополнительным отличительным признаком безразличия - "#",
который разрешен в каждой позиции. Например, шаблонами для задачи представления <3,2,2>являются # # #, # # 0, # 1 #, 2 # #, # 0 0 , 0 # 1 и 2 1 0.
Шаблоны определены двумя величинами. Порядок шаблона - число определенных в нем аллелей (иначе - сколько символов отличны от #). Разрешение (длина разрешения) - расстояние между первой и последней определенной аллелью. Данные величины применяются для определения того, как шаблон поведет себя при рекомбинации. Порядок определяет вероятность разрушения шаблона при мутации: большее количество аллелей означает большую вероятность мутации одной из них. Разрешение определяет, с какой вероятностью шаблон может быть разрушен кроссовером: чем ни больше размер шаблона, тем больше вероятность того, что кроссовер произойдет в шаблоне. Случай кроссовера усложняется тем, что разрушение шаблона зависит от свойств взаимодействующих строк, например, если шаблон присутствует в обеих строках, кроссовер не может его разрушить.
Обработка шаблоны происходит следующим образом. Если шаблон будет иметь тенденцию образовываться в строках с характеристиками выше средних, тогда вследствие более частого отбора этих строк и шаблоны будут отбираться чаще. Строки сами по себе часто разрушаются рекомбинацией, но с шаблонами, особенно короткими или низкого порядка, такое происходит существенно реже. Так, если шаблон возникает в «хороших» строках популяции, ГА произведет новую популяцию с большим количеством строк, содержащих такой шаблон, что и требуется. Если шаблон будет появляться на «хороших» строках и данное обстоятельство будет закреплено в популяции, то весьма вероятно, что полученные свойства будут объединены с другими интересующими нас свойствами, определяемыми другими шаблонами, что позволит сформировать строки с очень высокими значениями функции пригодности.
Такие аргументы могут быть ослаблены высоким уровнем взаимодействия между строками. Пусть шаблон H имеет тенденцию появляться на строках с неудачным набором свойств. Эти строки отбираются реже и присутствие шаблона в популяции падает, пока не исчезает совсем. Это плохо, поскольку комбинация H с шаблоном H' является частью оптимальной строки. Высокая степень взаимодействия между этими двумя шаблонами таким образом ведет к заключению для управляющей части ГА, что шаблон H не является ценным. Такое менее вероятно при коротком шаблоне или шаблоне низкого порядка. Хорошая комбинация H и H' может возникнуть при инициализации популяции или вследствие рекомбинации прежде, чем эти части строк будут потеряны. Если шаблоны будут более длинными или будут иметь более высокий порядок, то они с меньшей вероятностью появятся вместе при инициализации или вследствие рекомбинации, а с большей вероятностью будут разбиты рекомбинацией. Таким образом, если комбинирование действительно происходит, то его вероятность фактически управляет поведением популяции, поскольку последнее определяется соотношением селекции, усиливающей ша блоны, и рекомбинацией , их ослабляющими.
Вероятность выживания шаблона зависит от вероятности мутации, и используемого оператора кроссовера.
Неявный параллелизм, ключевые шаблоны и унифицированные преобразования. При обработке строк происходит также неявная обработка шаблонов. Смысл обработки в том, что шаблоны с характеристиками выше средних в следующем поколении будут встречаться чаще, с характеристиками ниже средних
- реже. Игнорируя шаблоны, которые, вероятно, будут разрушены при рекомбинации, для каждых n обработанных строк (популяций размера n) число обработанных шаблонов по оценке составляет О(n3) . Подобные вычисления являются реализацией неявного параллелизма (или внутренней параллельности).
Идея обработки такого рода проявляется в достаточно известном примере. Двоичные деревья чаще используются для хранения информации, чем связанные списки, потому что поиск элемента в дереве може т быть найден за O( log n) операций, а не за O(n). Такое уменьшение является следствием одной из форм неявного параллелизма. Когда элемент в корневом узле сравнивается с искомым элементов поиска, принимается решение, на какой половине дерева продолжать поиск, иными словами, одно сравнение исключает из поиска n/2 элементов. В этом примере свободная обработка - это результаты сравнений между искомым элементом поиска и всеми элементами в той части дерева, которую мы отбросили; результат - тот же самый, что получен при сравнении корневого узла и элемента поиска.
В примере с двоичным деревом свободная обработка кажется очевидной, но именно поэтому такой пример и приведен. В ГА свободная обработка и более сложна, и имеет вероятностные характеристики: шаблоны обрабатываются, но с этой обработкой связана определенная степень погрешности.
Свободная обработка - не только результат обработки строк. Можно представить алгоритм явной обработки множества шаблонов. Обработка этих шаблонов вызывает неявную обработку других шаблонов. Определим специальные множества шаблонов - ключевых шаблонов, которые являются точно теми шаблонами, которые должны быть обработаны для всех обрабатываемых шаблонов. Способов выбора ключевых шаблонов для представления конкретной прикладной задачи может быть несколько.
Рассмотрим, как обработка множества ключевых шаблонов может привести к свободной обработке всех других шаблонов. В качестве примера возьмем простейшую проблему представления <2>. Если нам известны средние оценки пригодности популяции, наблюдаемая пригодность шаблона 1 и удельный вес шаблона 1 в популяции, тогда мы можем вычислить ожидаемый удельный вес шаблона 1 в следующем поколении. Это вычисление - основа обработки шаблона, которую ГА делает неявно. Заметим, что, поскольку популяция содержит только 0 и 1, пропорции 1 определяет пропорции 0. Это означает, что, без выполнения вычисления для обработки шаблона, мы имеем верное количество 0 в популяции. Существенным является то, что обработка шаблона 1 - также и обработка шаблона 0. В примере имелся один ключевой шаблон, который мог быть либо 0, либо 1. Если количество элементов гена увеличить до с, то ключевых шаблонов станет с-1; единственный оставшийся шаблон будет обработан неявно.
Рассмотрим представление <2,2>. Для однобитового аргумента при обработке 1# и #1 шаблоны 0# и #0 обрабатывались как побочные эффекты. Однако ни один из двухбитовых шаблонов не будет обработан
как побочный эффект. Например, если мы знаем, что есть точно одно появление каждого из однобитовых шаблонов, мы не можем знать, содержатся ли в популяции 00,11 или 01,10. Если же мы обрабатываем также 11, тогда все остальные двухбитовые шаблоны обрабатываются неявно. Причина проста: если мы
знаем, сколько имеется значений 11, тогда значения 1# , не связанные с 11, могут появиться только в 10. Точно так же оставшееся значение #1 может появиться только в 01, и остальная часть популяции должна быть представлена значениями 00. Для этого примера ключевыми шаблонами являются 1#, #1 и 11.
Может быть доказано, что, если есть л3-1 строк, то для того, чтобы все оставшиеся были обработаны как побочный эффект, должны быть обработаны л3-1 ключевых шаблонов (при рассмотрении удельного веса строк в совокупности используется п -1 ключевой шаблон, поскольку шаблон ###...# всегда имеет удельный вес 1 для упрощения игнорируется. Если мы рассматриваем обработку в терминах изменения наблюдаемых оценок пригодности тогда шаблон ###...# будет с наибольшей вероятностью обработан (потому что его оценка - средняя оценка всей популяции и мы должны использовать п ключевых шаблонов. Эта форма более общая и применяется как основа унифицированного преобразования.
Ключевые шаблоны обеспечивают способ изменения цели работы ГА. Выбор строк как объектов обработки ГА является естественным; алгоритм описывается в терминах операций на строках, и множество строк - одна из возможностей для набора (множества) ключевых шаблонов. Выбирая другой набор (другое множество) ключевых шаблонов, можно задать другие цели для ГА.
Для рассмотрения ГА с точки зрения обработки шаблонов нужно выбирать ключевые шаблоны, отражающие характерный набор свойств шаблонов, а не строк. Хорошим выбором будет максимально возможное множество шаблонов с одной аллелью, которому следует максимально возможное множество шаблонов с двумя аллелями, с тремя и т.д. Более точно - следует максимизировать число символов # в наборе ключевых шаблонов. Приоритет шаблонам низкого порядка объясняется тем, что они лучше переносят рекомбинацию. Особым набором ключевых шаблонов, который следует отметить, является набор шаблонов не содержащих 0. Так, для трехбитового случае ключевыми шаблонами были бы ###, 1##, #1#, ##1,#11,
1#1, 11#, 111.
Применение ключевых шаблонов обеспечивает поддающееся трактовке представление об обработке шаблонов, поскольку в этом случае можно ограничиться рассмотрением ключевых шаблонов; остальные ситуации обрабатываются автоматически как побочный эффект. Это - важный момент, поскольку он может быть связан с методом, позволяющим обеспечить рассмотрение разных аспектов ГА (оценка пригодности, удельный вес в популяции и т.д.) с точки зрения различных ключевых шаблонов.
Описанные особенности составляют основу ГА. Большинство отмеченных составляющих этих алгоритмов являются в настоящее время предметом исследований, поэтому остановимся на вопросах и проблемах, которые необходимо решить перед непосредственным применением ГА.
1. Существует множество методов селекции. Наиболее известны пропорциональная репродукция, ранжированная селекция, турнирный отбор и селекция с установившимся состоянием. Кроме того, имеются схемы селекции, типичные для других эволюционных алгоритмов. Для понимания воздействия селекции на разнообразие черт в популяции необходимо рассмотрение стохастические эффекты, коэффициентов элиминирования наиболее слабых строк, наконец, в эволюционных алгоритмах применяются обобщенные варианты механизмов отбора, обеспечивающие существенно различные рабочие характеристики на унимодальных и мультимодальных функциях.
2. За селекцией следует рекомбинация. Влияние на генетический поиск кроссовера и мутации проявля-
ется по-разному в зависимости от конкретных условий. В частности, некоторые эволюционные алгоритмы показывают высокие результаты только с одним из этих двух операторов: эволюционные стратегии
используют мутацию генов с кодировкой вещественными числами, тогда как генетическое программирование использует кроссовер на основе структур деревьев, на который мутация не оказывала существенного воздействия. Отмеченные примеры используют внутреннюю организацию, отличную от традиционного ГА. В работе [1] продемонстрировано теоретически, что для ГА и кроссовер и мутации имеют более важное значение, чем другие операции, в [2] экспериментально показано, что в ряде случаев предпочтительным является кроссовер, но иногда лучшей оказывается мутация.
3. Если мы допускаем, что кроссовер, имеет преимущества, тогда следующим вопросом является какой тип кроссовера использовать.
Выше был описан одноточечный кроссовер, но он легко может быть обобщен до двух-, трехточечного и т.д. Другой оператор - однородный кроссовер, который для каждой позиции вдоль родительской строки меняет аллели с определенной вероятностью (обычно 0.5). Это - традиционные варианты кроссовера. Менее обычный - HUX - кроссовер, который меняет точно половину аллелей предков, и моделируемый кроссовер, который использует целую популяцию для производства потомков, биты которых, в среднем, аналогичны образованным селекцией и кроссовером. Имеются и другие операторы кроссовера.
4. Вопрос с образованием популяции также имеет ряд проблем. В простейшем случае мы должны решить вопрос, как одна популяция производится из другой. В частности, новая популяция может быть полностью образована потомками предшествующей. Однако, вызывают большой интерес ГА с установившимися состояниями, где на каждом шаге потомками замещаются только одна или две строки. Ряд ГА работает с несколькими популяциями, с перемещением между ними, или т.н. "географией популяций", имея в виду, что некоторые стоки расположены ближе друг к другу и их взаимодействие более вероятно. В [2] рассмотрены несколько различных моделей популяций и показано, что параллельный ГА, основанный на идее структурированной популяции, может быть успешно применен к различным задачам.
При любом выборе для ГА существует проблемы согласования параметров. Традиционно ГА имеет несколько параметров: размер популяции, коэффициент кроссовера, коэффициент мутации. Один из наиболее радикальных подходов к согласованию параметров состоит в том, чтобы позволить ГА осуществлять поиск значений параметров в то же самое время, когда он решает задачу.
5. Наконец, существуют два радикально различных вида ГА.
Алгоритм CHC [1] использует для усиления эффекта крайне разрушительные операторы рекомбинации и консервативную стратегию селекции. Кроме того, используется техника селекции, предотвращающая родственное скрещивание и мутация с применением рестартов популяций (для популяции проводится операции частичной рандомизации всякий раз, когда проявляются признаки сходимости).
«Грязные» генетические алгоритмы - методика, которая следует идее, что ГА просто находят и комбинируют хорошие «строительные блоки». Обычно «грязный» ГА обеспечивает пригодные решения для ряда сложных задач крупного масштаба, за умеренное время.
Приведенное рассмотрение позволяет сделать выводы о перспективности рассмотрения ГА в качестве основы методов поиска решений традиционно труднорешаемых задач и о направлениях исследования ГА с учетом специфики конкретных классов задач.
ЛИТЕРАТУРА
1. Гэри М., Джонсон Д. - Вычислительные машины и труднорешаемые задачи. 416 с. М., 1982
2. J. R. Koza. Genetic Programming 2: Automatic Discovery of Reusable Programms. MIT Press. 1994
3. G. Rudolph. Convergence of non - elitist strategies. In Proceedings of the 5 IEEE Conference on Evolutionary Computation, vol 1., pp. 63 - 66, IEEE Press, June 2004.