Разница между программированием экспрессии генов и декартовым генетическим программированием

Что-то довольно раздражающее в эволюционных вычислениях заключается в том, что слегка отличающиеся и перекрывающиеся концепции имеют тенденцию выбирать совершенно разные имена. Последнее, что меня смущает из-за этого, заключается в том, что программирование экспрессии генов очень похоже на картезианское генетическое программирование.

  1. (как) Это принципиально разные понятия?
  2. Я читал, что косвенное кодирование инструкций GP является эффективным методом (это делают и GEP, и CGP). Был ли достигнут какой-то консенсус в отношении того, что непрямое кодирование устарело в классическом древовидном базисе GP?

person Jelle    schedule 13.08.2010    source источник


Ответы (3)


Что ж, кажется, что есть некоторая разница между программированием экспрессии генов (GEP) и декартовым генетическим программированием (CGP или то, что я рассматриваю как классическое генетическое программирование), но эта разница может быть больше раздута, чем на самом деле должно быть. Обратите внимание, что я никогда не использовал GEP, поэтому все мои комментарии основаны на моем опыте работы с CGP.

В CGP нет различия между генотипом и фенотипом, другими словами, если вы смотрите на «гены» CGP, вы также смотрите на их экспрессию. Здесь нет кодировки, т.е. деревом экспрессии является сам ген.

В GEP генотип выражается в фенотипе, поэтому, если вы посмотрите на гены, вы не всегда понятно, как будет выглядеть выражение. «Изобретатель» GP Кандида Феррейра написала действительно хорошую статью и есть несколько других ресурсов, которые пытаются дать краткий обзор всей концепции.

Ферриера говорит, что преимущества «очевидны», но я действительно не вижу ничего, что обязательно делало бы GEP лучше, чем CGP. По-видимому, GEP является мультигенным, что означает, что несколько генов участвуют в выражении признака (т. Е. Дерево экспрессии). В любом случае пригодность рассчитывается на выраженном дереве, поэтому не похоже, что GEP делает что-либо для повышения пригодности. Автор утверждает, что GEP увеличивает скорость достижения пригодности (то есть за меньшее количество поколений), но, честно говоря, вы можете увидеть резкие сдвиги в производительности по сравнению с CGP просто за счет другого алгоритма отбора, другой структуры турнира, разделения популяция в племена, миграция особей между племенами, включение разнообразия в приспособленность и т. д.

Выбор:

  • случайный
  • колесо рулетки
  • топ-n
  • взять половину
  • и Т. Д.

Частота турниров:

  • один раз в эпоху
  • один раз для каждого экземпляра данных
  • один раз в поколение.

Структура турнира:

  • Возьмите 3, убейте 1 и замените его потомком двух других.
  • Отсортируйте всех участников турнира по пригодности, убейте нижнюю половину и замените ее потомством верхней половины (где более низкая приспособленность хуже, а верхняя - лучше).
  • Случайным образом выберите особей из турнира, чтобы спарить и убить лишних особей.

Племя
Население можно разделить на племена, которые развиваются независимо друг от друга:

  • Миграция - периодически отдельные лица из племени перемещаются в другое племя.
  • Племена логически разделены, так что они похожи на свои отдельные популяции, живущие в разных средах.

Разнообразие пригодности
Включите разнообразие в приспособленность, подсчитывая, сколько индивидуумов имеют одинаковое значение приспособленности (таким образом, они, вероятно, имеют одинаковый фенотип), и наказываете их приспособленность пропорциональным значением: чем больше людей с одинаковым значением пригодности, тем больше штраф для этих людей. Таким образом, будут поощряться экземпляры с уникальными фенотипами, поэтому стагнация популяции будет намного меньше.

Это лишь некоторые из факторов, которые могут сильно повлиять на производительность CGP, и когда я говорю «сильно», я имею в виду, что они находятся в том же порядке или выше, чем производительность Ferriera. Так что, если бы Ферриера не слишком сильно возилась с этими идеями, она могла бы увидеть гораздо более медленную работу CGP... особенно если бы она не предпринимала ничего для борьбы со стагнацией. Так что я был бы осторожен при чтении статистики производительности GEP, потому что иногда люди не учитывают все доступные «оптимизации».

person Kiril    schedule 14.08.2010
comment
Этот ответ неверен. Декартова ГП — это не то же самое, что классическая ГП. Декартова GP также имеет косвенное представление (аналогично GEP) и не основана на дереве, хотя в конечном итоге вы строите граф, похожий на классическое дерево GP. - person rll; 12.08.2015

Кажется, что в этих ответах есть некоторая путаница, которую необходимо прояснить. Декартова GP отличается от классической GP (также известной как древовидная GP) и GEP. Несмотря на то, что они разделяют многие концепции и черпают вдохновение из одних и тех же биологических механизмов, представление людей (решений) различается.

В CGP представление (сопоставление генотипа и фенотипа) является косвенным, другими словами, не все гены в геноме CGP будут выражены в феноме (концепция также встречается в GEP и многих других). Генотипы могут быть закодированы в сетке или массиве узлов, а результирующий программный граф является выражением только активных узлов.

В GEP представление также является косвенным, и аналогичным образом не все гены будут экспрессироваться в фенотипе. Представление в этом случае сильно отличается от treeGP или CGP, но генотипы также выражаются в программном дереве. На мой взгляд, GEP является более элегантным представлением, его проще реализовать, но он также страдает от некоторых дефектов, таких как: вам нужно найти подходящий размер хвоста и головы, который зависит от проблемы, мнлитогенная версия является чем-то вроде принудительного клея между деревьями выражений. , и, наконец, он слишком раздут.

Независимо от того, какое представление может быть лучше другого в какой-то конкретной предметной области, они имеют общее назначение и могут применяться к любой области, если вы можете ее закодировать.

person rll    schedule 12.08.2015

В общем, ГЭП проще ГП. Допустим, вы разрешаете в своей программе следующие узлы: константы, переменные, +, -, *, /, если,... Для каждого из таких узлов с ГП вы должны создать следующие операции: - рандомизировать - мутировать - кроссовер - и возможно, и другие генетические операторы

В GEP для каждого из таких узлов необходимо реализовать только одну операцию: десериализацию, которая берет массив чисел (например, double в C или Java) и возвращает узел. Это напоминает десериализацию объектов в таких языках, как Java или Python (разница в том, что десериализация в языках программирования использует массивы байтов, а здесь массивы чисел). Даже эта операция «десериализации» не обязательно должна быть реализована программистом: ее можно реализовать с помощью универсального алгоритма, точно так же, как это делается в десериализации Java или Python.

Эта простота, с одной точки зрения, может сделать поиск наилучшего решения менее успешным, но с другой стороны: требует меньше работы от программиста, а более простые алгоритмы могут выполняться быстрее (легче оптимизировать, больше кода и данных помещается в кэш ЦП и т. д.). . Так что я бы сказал, что GEP немного лучше, но, конечно, точный ответ зависит от проблемы, и для многих проблем может быть верно обратное.

person iirekm    schedule 07.12.2010