Часть серии статей о |
Эволюционная биология |
---|
В информатике эволюционные вычисления — это семейство алгоритмов глобальной оптимизации, вдохновленных биологической эволюцией , и подобласть искусственного интеллекта и мягких вычислений, изучающая эти алгоритмы. С технической точки зрения, это семейство решателей проблем методом проб и ошибок на основе популяции с метаэвристическим или стохастическим характером оптимизации.
В эволюционных вычислениях начальный набор решений-кандидатов генерируется и итеративно обновляется. Каждое новое поколение производится путем стохастического удаления менее желаемых решений и введения небольших случайных изменений, а также, в зависимости от метода, смешивания родительской информации. В биологической терминологии популяция решений подвергается естественному отбору (или искусственному отбору ), мутации и, возможно, рекомбинации . В результате популяция будет постепенно эволюционировать с увеличением приспособленности , в данном случае выбранной функции приспособленности алгоритма.
Методы эволюционных вычислений могут производить высокооптимизированные решения в широком диапазоне проблемных установок, что делает их популярными в компьютерной науке . Существует множество вариантов и расширений, подходящих для более конкретных семейств проблем и структур данных. Эволюционные вычисления также иногда используются в эволюционной биологии как экспериментальная процедура in silico для изучения общих аспектов общих эволюционных процессов.
Концепция имитации эволюционных процессов для решения проблем возникла еще до появления компьютеров, например, когда Алан Тьюринг предложил метод генетического поиска в 1948 году. [1] U-машины Тьюринга типа B напоминают примитивные нейронные сети , а связи между нейронами изучались с помощью своего рода генетического алгоритма . Его U-машины типа P напоминают метод обучения с подкреплением , где сигналы удовольствия и боли направляют машину на изучение определенных моделей поведения. Однако статья Тьюринга оставалась неопубликованной до 1968 года, а он умер в 1954 году, поэтому эта ранняя работа не оказала практически никакого влияния на область эволюционных вычислений, которая должна была развиваться. [2]
Эволюционные вычисления как область начали серьезно развиваться в 1950-х и 1960-х годах. [1] В это время было несколько независимых попыток использовать процесс эволюции в вычислениях, которые развивались отдельно в течение примерно 15 лет. Для достижения этой цели в разных местах возникли три ветви: эволюционные стратегии , эволюционное программирование и генетические алгоритмы . Четвертая ветвь, генетическое программирование , в конечном итоге появилась в начале 1990-х годов. Эти подходы различаются по методу отбора, разрешенным мутациям и представлению генетических данных. К 1990-м годам различия между историческими ветвями начали размываться, и в 1991 году был введен термин «эволюционные вычисления» для обозначения области, которая существует во всех четырех парадигмах. [3]
В 1962 году Лоуренс Дж. Фогель инициировал исследование эволюционного программирования в Соединенных Штатах, которое считалось попыткой искусственного интеллекта . В этой системе конечные автоматы используются для решения задачи прогнозирования: эти автоматы будут мутировать (добавляя или удаляя состояния или изменяя правила перехода состояний), и лучшие из этих мутировавших автоматов будут развиваться дальше в будущих поколениях. Окончательный конечный автомат может использоваться для генерации прогнозов при необходимости. Метод эволюционного программирования был успешно применен к задачам прогнозирования, идентификации систем и автоматического управления. В конечном итоге он был расширен для обработки данных временных рядов и моделирования эволюции игровых стратегий. [3]
В 1964 году Инго Рехенберг и Ганс-Пауль Швефель представили парадигму эволюционных стратегий в Германии. [3] Поскольку традиционные методы градиентного спуска дают результаты, которые могут застрять в локальных минимумах, Рехенберг и Швефель предложили использовать случайные мутации (применяемые ко всем параметрам некоторого вектора решения) для выхода из этих минимумов. Дочерние решения были получены из родительских решений, и более удачное из них сохранялось для будущих поколений. Этот метод был впервые использован ими для успешного решения задач оптимизации в гидродинамике . [4] Первоначально этот метод оптимизации выполнялся без компьютеров, вместо этого полагаясь на игральные кости для определения случайных мутаций. К 1965 году вычисления выполнялись полностью машиной. [3]
Джон Генри Холланд представил генетические алгоритмы в 1960-х годах, и они получили дальнейшее развитие в Мичиганском университете в 1970-х годах. [5] В то время как другие подходы были сосредоточены на решении проблем, Холланд в первую очередь стремился использовать генетические алгоритмы для изучения адаптации и определения того, как ее можно смоделировать. Популяции хромосом, представленные в виде битовых строк, были преобразованы с помощью процесса искусственного отбора, выбирающего определенные биты «аллеля» в битовой строке. Среди других методов мутации, взаимодействия между хромосомами использовались для моделирования рекомбинации ДНК между различными организмами. В то время как предыдущие методы отслеживали только один оптимальный организм за раз (заставляя детей конкурировать с родителями), генетические алгоритмы Холланда отслеживали большие популяции (заставляя множество организмов конкурировать в каждом поколении).
К 1990-м годам появился новый подход к эволюционным вычислениям, который стал называться генетическим программированием , за который выступал Джон Коза и другие. [3] В этом классе алгоритмов предметом эволюции была сама программа, написанная на языке программирования высокого уровня (предыдущие попытки использовать машинный код предпринимались еще в 1958 году, но они не увенчались успехом). Для Коза программы представляли собой Lisp S-выражения , которые можно рассматривать как деревья подвыражений. Такое представление позволяет программам менять поддеревья, представляя собой своего рода генетическое смешивание. Программы оцениваются на основе того, насколько хорошо они выполняют определенную задачу, и оценка используется для искусственного отбора. Индукция последовательности, распознавание образов и планирование были успешными применениями парадигмы генетического программирования.
Многие другие деятели сыграли свою роль в истории эволюционных вычислений, хотя их работа не всегда вписывалась в одну из основных исторических ветвей этой области. Самые ранние вычислительные моделирования эволюции с использованием эволюционных алгоритмов и методов искусственной жизни были выполнены Нильсом Ааллом Барричелли в 1953 году, а первые результаты были опубликованы в 1954 году. [6] Другим пионером в 1950-х годах был Алекс Фрейзер , опубликовавший серию статей по моделированию искусственного отбора . [7] По мере роста академического интереса резкое увеличение мощности компьютеров позволило найти практические приложения, включая автоматическую эволюцию компьютерных программ. [8] Эволюционные алгоритмы теперь используются для решения многомерных задач более эффективно, чем программное обеспечение, созданное людьми-разработчиками, а также для оптимизации проектирования систем. [9] [10]
Методы эволюционных вычислений в основном включают в себя метаэвристические алгоритмы оптимизации . В широком смысле, эта область включает в себя:
Полный каталог со многими другими недавно предложенными алгоритмами был опубликован в Evolutionary Computation Bestiary. [11] Важно отметить, что многие недавние алгоритмы, однако, имеют плохую экспериментальную проверку. [12]
Эволюционные алгоритмы образуют подмножество эволюционных вычислений, поскольку они обычно включают только методы, реализующие механизмы, вдохновленные биологической эволюцией, такие как воспроизводство , мутация , рекомбинация , естественный отбор и выживание наиболее приспособленных . Кандидаты на решение задачи оптимизации играют роль особей в популяции, а функция стоимости определяет среду, в которой «живут» решения (см. также функцию приспособленности ). Затем происходит эволюция популяции после повторного применения вышеуказанных операторов.
В этом процессе существуют две основные силы, которые составляют основу эволюционных систем: рекомбинация (например, кроссинговер ) и мутация создают необходимое разнообразие и тем самым способствуют новизне, в то время как отбор действует как сила, повышающая качество.
Многие аспекты такого эволюционного процесса являются стохастическими . Измененные фрагменты информации из-за рекомбинации и мутации выбираются случайным образом. С другой стороны, операторы отбора могут быть либо детерминированными, либо стохастическими. В последнем случае особи с более высокой приспособленностью имеют более высокий шанс быть отобранными, чем особи с более низкой приспособленностью , но обычно даже слабые особи имеют шанс стать родителем или выжить.
Генетические алгоритмы предоставляют методы моделирования биологических систем и системной биологии , которые связаны с теорией динамических систем , поскольку они используются для прогнозирования будущих состояний системы. Это всего лишь яркий (но, возможно, вводящий в заблуждение) способ привлечь внимание к упорядоченному, хорошо контролируемому и высокоструктурированному характеру развития в биологии.
Однако использование алгоритмов и информатики, в частности вычислительной теории , помимо аналогии с динамическими системами, также актуально для понимания самой эволюции.
Эта точка зрения имеет преимущество признания того, что не существует центрального контроля развития; организмы развиваются в результате локальных взаимодействий внутри и между клетками. Наиболее многообещающими идеями о параллелях развития программ нам кажутся те, которые указывают на явно близкую аналогию между процессами внутри клеток и низкоуровневыми операциями современных компьютеров. [13] Таким образом, биологические системы подобны вычислительным машинам, которые обрабатывают входную информацию для вычисления следующих состояний, так что биологические системы ближе к вычислению, чем классическая динамическая система. [14]
Более того, следуя концепциям вычислительной теории , микропроцессы в биологических организмах принципиально неполны и неразрешимы ( полнота (логика) ), что подразумевает, что «за аналогией между клетками и компьютерами стоит нечто большее, чем грубая метафора». [15]
Аналогия с вычислениями распространяется также на связь между системами наследования и биологической структурой, которая, как часто считается, раскрывает одну из самых острых проблем в объяснении происхождения жизни.
Эволюционные автоматы [16] [17] [18] , обобщение эволюционных машин Тьюринга [19] [20] , были введены для более точного исследования свойств биологических и эволюционных вычислений. В частности, они позволяют получать новые результаты о выразительности эволюционных вычислений [18] [21] . Это подтверждает первоначальный результат о неразрешимости естественной эволюции и эволюционных алгоритмов и процессов. Эволюционные конечные автоматы , простейший подкласс эволюционных автоматов, работающий в терминальном режиме, может принимать произвольные языки над заданным алфавитом, включая нерекурсивно перечислимые (например, язык диагонализации) и рекурсивно перечислимые, но не рекурсивные языки (например, язык универсальной машины Тьюринга) [22] .
Список активных исследователей естественно динамичен и не является исчерпывающим. Сетевой анализ сообщества был опубликован в 2007 году. [23]
Хотя статей об эволюционных вычислениях или их использовании предостаточно в литературе, несколько журналов посвящены эволюционным вычислениям:
Основные конференции в области эволюционных вычислений включают в себя:
{{cite book}}
: CS1 maint: others (link){{cite journal}}
: Цитировать журнал требует |journal=
( помощь )