stringtranslate.com

Генетическое программирование

В области искусственного интеллекта генетическое программирование ( ГП ) представляет собой метод разработки программ на основе популяции непригодных (обычно случайных) программ, пригодных для выполнения конкретной задачи, путем применения к популяции программ операций, аналогичных естественным генетическим процессам.

Операции: выбор наиболее приспособленных программ для воспроизводства (кроссинговер), репликация и/или мутация в соответствии с предопределенной мерой приспособленности, обычно мастерством в желаемой задаче. Операция кроссинговер включает обмен указанными частями выбранных пар (родителей) для получения нового и отличного потомства, которое становится частью нового поколения программ. Некоторые программы, не выбранные для воспроизводства, копируются из текущего поколения в новое поколение. Мутация включает замену некоторой случайной части программы некоторой другой случайной частью программы. Затем выбор и другие операции рекурсивно применяются к новому поколению программ.

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

Может и часто случается, что конкретный запуск алгоритма приводит к преждевременной сходимости к некоторому локальному максимуму, который не является глобально оптимальным или даже хорошим решением. Обычно для получения очень хорошего результата требуется несколько запусков (десятки или сотни). Также может быть необходимо иметь большой начальный размер популяции и изменчивость особей, чтобы избежать патологий.

История

Первая запись предложения об эволюции программ, вероятно, принадлежит Алану Тьюрингу в 1950 году. [1] Прошло 25 лет, прежде чем вышла работа Джона Холланда «Адаптация в естественных и искусственных системах», в которой были изложены теоретические и эмпирические основы этой науки. В 1981 году Ричард Форсайт продемонстрировал успешную эволюцию небольших программ, представленных в виде деревьев, для классификации улик с места преступления для Министерства внутренних дел Великобритании. [2]

Хотя идея эволюционирующих программ, изначально на языке программирования Lisp , была распространена среди студентов Джона Холланда [3] , только после того, как они организовали первую конференцию по генетическим алгоритмам (ГА) в Питтсбурге, Нихаэль Крамер [4] опубликовал эволюционирующие программы на двух специально разработанных языках, которые включали первое утверждение современного «древовидного» генетического программирования (то есть процедурных языков, организованных в древовидные структуры и управляемых соответствующим образом определенными ГА-операторами). В 1988 году Джон Коза (также аспирант Джона Холланда) запатентовал свое изобретение ГА для эволюции программ. [5] За этим последовала публикация на Международной совместной конференции по искусственному интеллекту IJCAI-89. [6]

Коза последовал за этим с 205 публикациями по «Генетическому программированию» (ГП), название придумал Дэвид Голдберг, также аспирант Джона Холланда. [7] Однако именно серия из 4 книг Коза, начавшаяся в 1992 году [8] с сопровождающими видео, [9] действительно утвердила ГП. Впоследствии произошло огромное расширение числа публикаций в Библиографии генетического программирования, превысившее 10 000 записей. [10] В 2010 году Коза [11] перечислил 77 результатов, в которых генетическое программирование было конкурентоспособным для человека.

В 1996 году Коза начал проводить ежегодную конференцию по генетическому программированию [12] , за которой в 1998 году последовала ежегодная конференция EuroGP [13] и первая книга [14] в серии GP под редакцией Коза. В 1998 году также вышел первый учебник по GP. [15] GP продолжала процветать, что привело к появлению первого специализированного журнала по GP [16] , а три года спустя (2003) Рик Риоло основал ежегодный семинар по теории и практике генетического программирования (GPTP). [17] [18] Статьи по генетическому программированию продолжают публиковаться на различных конференциях и в связанных журналах. Сегодня существует девятнадцать книг по GP, включая несколько для студентов. [15]

Основополагающая работа в области общей практики

Ранние работы, которые заложили основу для современных тем и приложений генетического программирования, разнообразны и включают в себя синтез и исправление программного обеспечения, предиктивное моделирование, интеллектуальный анализ данных, [19] финансовое моделирование, [20] мягкие датчики, [21] проектирование, [22] и обработку изображений. [23] Приложения в некоторых областях, таких как проектирование, часто используют промежуточные представления, [24] такие как клеточное кодирование Фреда Груау. [25] Промышленное внедрение было значительным в нескольких областях, включая финансы, химическую промышленность, биоинформатику [26] [27] и сталелитейную промышленность. [28]

Методы

Программа представления

Функция, представленная в виде древовидной структуры

GP развивает компьютерные программы, традиционно представленные в памяти в виде древовидных структур . [29] Деревья можно легко оценить рекурсивным способом. Каждый внутренний узел имеет операторную функцию, а каждый конечный узел имеет операнд, что делает математические выражения простыми для развития и оценки. Таким образом, традиционно GP предпочитает использовать языки программирования , которые естественным образом воплощают древовидные структуры (например, Lisp ; другие функциональные языки программирования также подходят).

Были предложены и успешно реализованы недревовидные представления, такие как линейное генетическое программирование , которое, возможно, подходит для более традиционных императивных языков . [30] [31] Коммерческое программное обеспечение GP Discipulus использует автоматическую индукцию двоичного машинного кода («AIM») [32] для достижения лучшей производительности. μGP [33] использует направленные мультиграфы для генерации программ, которые полностью используют синтаксис данного языка ассемблера . Программирование с множественными выражениями использует трехадресный код для кодирования решений. Другие представления программ, по которым были проведены значительные исследования и разработки, включают программы для виртуальных машин на основе стека, [34] [35] [36] и последовательности целых чисел, которые отображаются в произвольные языки программирования с помощью грамматик. [37] [38] Декартово генетическое программирование является другой формой GP, которая использует графовое представление вместо обычного древовидного представления для кодирования компьютерных программ.

Большинство представлений имеют структурно неэффективный код ( интроны ). Такие некодирующие гены могут показаться бесполезными, поскольку они не оказывают никакого влияния на производительность какой-либо одной особи. Однако они изменяют вероятности генерации различного потомства под действием операторов вариации и, таким образом, изменяют вариационные свойства особи . Эксперименты, по-видимому, показывают более быструю сходимость при использовании программных представлений, которые допускают такие некодирующие гены, по сравнению с программными представлениями, которые не имеют никаких некодирующих генов. [39] [40] Инстанцирования могут иметь как деревья с интронами, так и без них; последние называются каноническими деревьями. Вводятся специальные канонические операторы кроссинговера, которые поддерживают каноническую структуру родителей в их потомках.

Выбор

Отбор — это процесс, в ходе которого из текущего поколения выбираются определенные особи, которые будут служить родителями для следующего поколения. Особи выбираются вероятностно, так что у особей с лучшими показателями больше шансов быть выбранными. [18] Наиболее часто используемый метод отбора в GP — это турнирный отбор , хотя другие методы, такие как пропорциональный отбор по приспособленности , отбор по лексике [41] и другие, как было показано, работают лучше для многих задач GP.

Элитизм, который подразумевает заселение следующего поколения лучшими особями (или лучшими n особями) текущего поколения, — это метод, который иногда применяется для избежания регресса.

Кроссовер

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

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

Репликация

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

Мутация

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

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

Анимация создания потомка генетического программирования путем мутации родителя, удаления поддерева и замены случайным кодом

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

Приложения

GP успешно использовался в качестве автоматического инструмента программирования , инструмента машинного обучения и автоматического механизма решения проблем. [18] GP особенно полезен в областях, где точная форма решения заранее неизвестна или приемлемо приблизительное решение (возможно, потому что найти точное решение очень сложно). Некоторые из приложений GP — это подгонка кривых, моделирование данных, символическая регрессия , выбор признаков , классификация и т. д. Джон Р. Коза упоминает 76 случаев, когда генетическое программирование смогло дать результаты, которые конкурентоспособны с результатами, полученными человеком (называемые результатами, конкурентоспособными с человеком). [42] С 2004 года ежегодная Конференция по генетическим и эволюционным вычислениям ( GECCO ) проводит конкурс Human Competitive Awards (называемый Humies), [43] где денежные премии вручаются за результаты, конкурентоспособные с человеком, полученные с помощью любой формы генетических и эволюционных вычислений. GP выиграл множество наград в этом конкурсе за эти годы.

Метагенетическое программирование

Метагенетическое программирование — это предлагаемая методика метаобучения для эволюции генетической программной системы с использованием самого генетического программирования. Она предполагает, что хромосомы, кроссинговер и мутация сами эволюционировали, поэтому, как и их реальные аналоги, им должно быть разрешено изменяться самостоятельно, а не определяться программистом-человеком. Мета-ГП был официально предложен Юргеном Шмидхубером в 1987 году. [44] Eurisko Дуга Лената — это более ранняя попытка, которая может быть той же методикой. Это рекурсивный, но завершающийся алгоритм, позволяющий избежать бесконечной рекурсии. В подходе «автоконструктивной эволюции» к метагенетическому программированию методы производства и изменения потомства кодируются в самих эволюционирующих программах, и программы выполняются для создания новых программ, которые будут добавлены в популяцию. [35] [45]

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

Смотрите также

Ссылки

  1. ^ "Вычислительная техника и интеллект". www.cs.bham.ac.uk . Получено 19 мая 2018 г.
  2. ^ "BEAGLE Дарвиновский подход к распознаванию образов". www.cs.bham.ac.uk . Получено 19 мая 2018 г.
  3. ^ Личное общение с Томом Вестердейлом
  4. ^ "Представление для адаптивной генерации простых последовательных программ". www.cs.bham.ac.uk . Получено 19.05.2018 .
  5. ^ "Нелинейные генетические алгоритмы для решения проблем". www.cs.bham.ac.uk . Получено 19.05.2018 .
  6. ^ "Иерархические генетические алгоритмы, работающие с популяциями компьютерных программ". www.cs.bham.ac.uk . Получено 19.05.2018 .
  7. ^ Голдберг. Д.Э. (1983), Автоматизированная эксплуатация газопровода с использованием генетических алгоритмов и обучения правилам. Диссертация, представленная в Мичиганский университет в Энн-Арбор, штат Мичиган, в частичном выполнении требований для получения степени доктора философии.
  8. ^ «Генетическое программирование: о программировании компьютеров с помощью естественного отбора». www.cs.bham.ac.uk . Получено 19.05.2018 .
  9. ^ "Генетическое программирование: Фильм". gpbib.cs.ucl.ac.uk . Архивировано из оригинала 2021-12-11 . Получено 2021-05-20 .
  10. ^ "Влияние рекомбинации на фенотипическое исследование и надежность в эволюции". gpbib.cs.ucl.ac.uk . Получено 20 мая 2021 г.
  11. ^ "Результаты, позволяющие конкурировать с человеком с помощью генетического программирования". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  12. ^ "Генетическое программирование 1996: Труды первой ежегодной конференции". www.cs.bham.ac.uk . Получено 19 мая 2018 г.
  13. ^ "Генетическое программирование". www.cs.bham.ac.uk . Получено 19.05.2018 .
  14. ^ «Генетическое программирование и структуры данных: генетическое программирование + структуры данных = автоматическое программирование!». www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  15. ^ ab "Генетическое программирование — Введение; Об автоматической эволюции компьютерных программ и ее приложениях". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  16. ^ Банцхаф, Вольфганг (2000-04-01). «Редакционное введение». Генетическое программирование и эволюционирующие машины . 1 (1–2): 5–6. doi :10.1023/A:1010026829303. ISSN  1389-2576.
  17. ^ "Теория и практика генетического программирования". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  18. ^ abc "Практическое руководство по генетическому программированию". www.gp-field-guide.org.uk . Получено 20 мая 2018 г.
  19. ^ «Интеллектуальный анализ данных и обнаружение знаний с помощью эволюционных алгоритмов». www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  20. ^ "ЭДДИ побеждает букмекеров". www.cs.bham.ac.uk . Получено 20.05.2018 .
  21. ^ «Применение вычислительного интеллекта: как создать ценность». www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  22. ^ "Изобретение машины, конкурентоспособной человеку, с помощью генетического программирования". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  23. ^ "Открытие программ извлечения признаков текстуры изображения, конкурентоспособных у человека, с использованием генетического программирования". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  24. ^ "Три способа выращивания конструкций: сравнение эмбриогений для задачи эволюционного дизайна". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  25. ^ "Клеточное кодирование как графовая грамматика - Публикация конференции IET". IEEE : 17/1–1710. Апрель 1993 г. Получено 20 мая 2018 г.
  26. ^ «Генетический алгоритм декодирования для интерпретации инфракрасных спектров в аналитической биотехнологии». www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  27. ^ "Генетическое программирование для извлечения данных ДНК-чипов у больных раком". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  28. ^ "Генетическое программирование и моделирование теста Джомини". www.cs.bham.ac.uk . Получено 20 мая 2018 г.
  29. Николас Л. Крамер «Представление для адаптивной генерации простых последовательных программ». Архивировано 04.12.2005 на Wayback Machine .
  30. ^ Генетическое программирование: Введение, Вольфганг Банцхаф, Питер Нордин, Роберт Э. Келлер, Фрэнк Д. Франконе, Морган Кауфманн, 1999. ISBN 978-1558605107
  31. ^ Гарнетт Уилсон и Вольфганг Банцхаф. «Сравнение декартового генетического программирования и линейного генетического программирования»
  32. ^ ( Питер Нордин , 1997, Банцхаф и др., 1998, раздел 11.6.2-11.6.3)
  33. ^ Джованни Скиллеро. «μGP (МикроГП)».
  34. ^ "Генетическое программирование на основе стека". gpbib.cs.ucl.ac.uk . Получено 20 мая 2021 г. .
  35. ^ ab Спектор, Ли; Робинсон, Алан (2002-03-01). «Генетическое программирование и автоконструктивная эволюция с языком программирования Push». Генетическое программирование и эволюционирующие машины . 3 (1): 7–40. doi :10.1023/A:1014538503543. ISSN  1389-2576. S2CID  5584377.
  36. ^ Спектор, Ли; Кляйн, Джон; Кейзер, Маартен (2005-06-25). «Стек выполнения Push3 и эволюция управления». Труды 7-й ежегодной конференции по генетическим и эволюционным вычислениям . ACM. стр. 1689–1696. CiteSeerX 10.1.1.153.384 . doi :10.1145/1068009.1068292. ISBN  978-1595930101. S2CID  11954638.
  37. ^ Райан, Конор; Коллинз, Дж. Дж.; Нил, Майкл О. (1998). Конспект лекций по информатике . Берлин, Гейдельберг: Springer Berlin Heidelberg. стр. 83–96. CiteSeerX 10.1.1.38.7697 . doi :10.1007/bfb0055930. ISBN  9783540643609.
  38. ^ О'Нил, М.; Райан, К. (2001). «Грамматическая эволюция». Труды IEEE по эволюционным вычислениям . 5 (4): 349–358. doi :10.1109/4235.942529. ISSN  1089-778X. S2CID  10391383.
  39. Джулиан Ф. Миллер. «Декартовское генетическое программирование». Архивировано 24 сентября 2015 г. на Wayback Machine . стр. 19.
  40. ^ Джанет Клегг; Джеймс Альфред Уокер; Джулиан Фрэнсис Миллер. Новая кроссоверная техника для декартового генетического программирования. 2007.
  41. ^ Спектор, Ли (2012). «Оценка модальности проблемы по дифференциальной производительности выбора лексиказы в генетическом программировании». Труды 14-й ежегодной конференции-компаньона по генетическим и эволюционным вычислениям. Gecco '12. ACM. стр. 401–408. doi :10.1145/2330784.2330846. ISBN 9781450311786. S2CID  3258264.
  42. ^ Коза, Джон Р. (2010). «Результаты, позволяющие конкурировать с человеком с помощью генетического программирования». Генетическое программирование и эволюционирующие машины . 11 (3–4): 251–284. doi : 10.1007/s10710-010-9112-3 .
  43. ^ «Humies = награды за конкурентоспособность среди людей».
  44. ^ «ДИССЕРТАЦИОННАЯ РАБОТА 1987 ГОДА ПО ТЕМЕ «ИЗУЧЕНИЕ ТЕХ, КАК УЧИТЬСЯ, МЕТАОБУЧЕНИЕ, МЕТАГЕНЕТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ, ЭКОНОМИКА МАШИННОГО ОБУЧЕНИЯ С ЭКОНОМИЧНЫМИ КРЕДИТАМИ».
  45. ^ GECCO '16 Companion: труды конференции Genetic and Evolutionary Computation Conference 2016: 20–24 июля 2016 г., Денвер, Колорадо, США . Нейман, Фрэнк (ученый-компьютерщик), Ассоциация вычислительной техники. SIGEVO. Нью-Йорк, Нью-Йорк. 20 июля 2016 г. ISBN 9781450343237. OCLC  987011786.{{cite book}}: CS1 maint: location missing publisher (link) CS1 maint: others (link)

Внешние ссылки