Исходные параметры генетического программирования

В колледже я немного поработал (примечание: очень мало) и недавно поиграл с этим. Мой вопрос касается начальных настроек запуска (размер популяции, количество поколений, минимальная/максимальная глубина деревьев, минимальная/максимальная глубина начальных деревьев, проценты для использования для различных операций воспроизведения и т. д.). Какова обычная практика установки этих параметров? Какие документы/сайты люди используют в качестве хорошего руководства?


person cmptrer    schedule 06.05.2010    source источник


Ответы (5)


Вы обнаружите, что это очень сильно зависит от вашей проблемной области, в частности от характера фитнес-функции, вашей реализации DSL и т. д.

Немного личного опыта:

  • Кажется, что большие размеры популяции работают лучше, когда у вас есть шумная фитнес-функция, я думаю, это потому, что рост подгрупп в популяции в последующих поколениях дает больше выборок фитнес-функции. Я обычно использую 100 для менее шумных/детерминированных функций, 1000+ для шумных.
  • Для количества поколений лучше всего измерять улучшения в фитнес-функции и останавливаться, когда она соответствует вашим целевым критериям. Обычно я запускаю несколько сотен поколений и смотрю, какие ответы выходят, если они не показывают никаких улучшений, то, вероятно, у вас есть проблема в другом месте.
  • Требования к глубине дерева действительно зависят от вашего DSL. Иногда я пытаюсь реализовать реализацию без явных ограничений, но наказываю или удаляю программы, которые работают слишком долго (вероятно, это то, что вас действительно волнует...). Я также обнаружил, что общее количество узлов около 1000 является весьма полезным жестким ограничением.
  • Проценты для различных операторов мутации/рекомбинации, похоже, не имеют большого значения. Пока у вас есть полный набор мутаций, обычно работает любое разумно сбалансированное распределение. Я думаю, причина этого в том, что вы в основном ищете благоприятные улучшения, поэтому основная цель — просто убедиться, что пробные улучшения достаточно хорошо распределены по всем возможностям.
person mikera    schedule 15.05.2010

Почему бы вам не попробовать использовать генетический алгоритм для оптимизации этих параметров для вас? :)

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

-Дэвид Дж. Уилер

person Drew Noakes    schedule 15.05.2010
comment
Нет плюсов, так как это неправильный ответ, но я рассмеялся. :-) - person Donal Fellows; 15.05.2010

Когда я начал изучать генетические алгоритмы, у меня был тот же вопрос.

Я хотел собрать данные, изменяющие параметры для очень простой задачи, и связать данные операторы и значения параметров (такие как скорость мутации и т. д.) с заданными результатами в зависимости от размера популяции и т. д.

Как только я начал немного больше вникать в ГА, я понял, что, учитывая огромное количество переменных, это огромная задача, а обобщение чрезвычайно сложно.

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

Безусловно, можно разработать набор руководящих принципов — как доказывает литература (редкая, но хорошая), — но вы сможете эффективно обобщать результаты в статистических терминах только тогда, когда решаемая задача может быть закодирована точно таким же образом и пригодность оценивается каким-то эквивалентным образом (что чаще всего означает, что вы столкнулись с очень похожей проблемой).

person JohnIdol    schedule 11.05.2010

Взгляните на многотомные тома Козы по этим вопросам.

person WhirlWind    schedule 06.05.2010
comment
Я прочитал первую книгу Козы по этому вопросу. Думаю, я понял, что с 1992 года было проведено больше исследований по соответствующей начальной популяции, какие методы воспроизводства работают лучше и т. д. - person cmptrer; 06.05.2010

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

Как упоминалось ранее, это зависит от вашего личного вкуса и опыта, ресурсов и, возможно, используемой системы GP!

Привет, Ян

person Jay    schedule 11.12.2011