Каковы различия между имитацией отжига и генетическими алгоритмами? - PullRequest
15 голосов
/ 04 ноября 2010

Каковы соответствующие различия с точки зрения производительности и вариантов использования между имитированным отжигом (с поиском бобов) и генетическими алгоритмами?

Я знаю, что SA можно рассматривать как GA, где численность населения составляетодин, но я не знаю ключевую разницу между ними.

Кроме того, я пытаюсь придумать ситуацию, когда SA превзойдет GA или GA превзойдет SA.Достаточно одного простого примера, который поможет мне понять.

Ответы [ 3 ]

58 голосов
/ 04 ноября 2010

Строго говоря, эти две вещи - имитация отжига (SA) и генетические алгоритмы не являются ни алгоритмами, ни их предназначением для "извлечения данных".

Оба являются метаэвристиками - на пару уровней выше «алгоритма» в масштабе абстракции. Другими словами, оба термина относятся к метафорам высокого уровня - один заимствован из металлургии, а другой - из эволюционной биологии. В метаэвристической таксономии SA - это метод с одним состоянием , а GA - популяционный метод (в подклассе наряду с PSO, ACO и др., Обычно называемыми как биологически вдохновленная метаэвристика ).

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

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

Любой метод решения для решения задач ограничения, независимо от алгоритма, будет состоять в основном из этих шагов (которые обычно кодируются как один блок в рекурсивном цикле):

  1. кодировать специфичные для домена детали в функции стоимости (это поэтапная минимизация стоимости вернулся из этой функции, которая представляет собой «решение» с / о проблема);

  2. оценка прохождения функции стоимости в первоначальном «предположение» (для начала итерация);

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

  4. оцените каждое возможное решение по передавая его в наборе аргументов, чтобы функция стоимости;

  5. повторять шаги (iii) и (iv) до либо некоторый критерий сходимости удовлетворен или максимальное количество итерации достигнуты.

Метаэвристика направлена ​​на шаг (iii) выше; следовательно, SA и GA отличаются тем, как они генерируют подходящие решения для оценки по функции стоимости. Другими словами, это место, где нужно посмотреть, чтобы понять, как эти две метаэвристики отличаются.

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


Так как же SA и GA генерируют подходящие решения?

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

p = e((-highCost - lowCost)/temperature)

Или в питоне:

p = pow(math.e, (-hiCost - loCost) / T)

Термин «температура» - это переменная, значение которой уменьшается в процессе оптимизации, и, следовательно, вероятность того, что SA примет худшее решение, уменьшается с увеличением числа итераций.

Иными словами, когдаалгоритм начинает итерацию, T очень велико, что, как вы можете видеть, заставляет алгоритм переходить к каждому вновь созданному решению-кандидату, лучше или хуже, чем текущее наилучшее решение - т. е. выполняется случайное блуждание в пространстве решений.По мере увеличения числа итераций (т. Е. По мере того, как температура охлаждается), поиск алгоритмом пространства решений становится менее разрешительным, пока при T = 0 поведение не будет идентично простому алгоритму восхождения на холм (т. Е. Только решения лучше, чем текущий лучшийрешение принято).

Генетические алгоритмы очень разные.С одной стороны - и это большая вещь - он генерирует не единственное решение для кандидата, а целую «совокупность из них».Это работает так: GA вызывает функцию стоимости для каждого члена (вариант решения) населения.Затем он ранжирует их от лучшего к худшему, упорядочив их по значению, возвращенному функцией стоимости («лучшее» имеет наименьшее значение).Из этих ранжированных значений (и соответствующих им вариантов решения) создается следующая совокупность.Новые члены населения создаются по существу одним из трех способов.Первый обычно называется «элитарностью» и на практике обычно подразумевает просто принятие наиболее подходящих решений-кандидатов и передачу их напрямую - без изменений - следующему поколению.Два других способа, которыми новые члены населения обычно называют «мутация» и «кроссовер».Мутация обычно включает в себя изменение одного элемента в векторе решения-кандидата из текущей совокупности для создания вектора решения в новой совокупности, например, [4, 5, 1, 0, 2] => [4, 5, 2, 0, 2].Результат операции кроссовера аналогичен тому, что произошло бы, если бы векторы могли иметь половые контакты, т. Е. Новый дочерний вектор, элементы которого состоят из некоторых от каждого из двух родителей.

Таковы алгоритмические различия между GAи SA.Как насчет различий в производительности?

На практике: (мои наблюдения ограничиваются проблемами комбинаторной оптимизации) GA почти всегда превосходит SA (возвращает более низкое «лучшее» возвращаемое значение из функции стоимости - то есть значениеблизко к глобальному минимуму пространства решений), но с более высокой стоимостью вычислений.Насколько мне известно, в учебниках и технических публикациях приводится одно и то же заключение о разрешении.

, но вот в чем дело: GA по своей природе распараллеливаем;Более того, это тривиально, потому что отдельным «поисковым агентам», входящим в каждую группу, не нужно обмениваться сообщениями, т. е. они работают независимо друг от друга.Очевидно, что это означает, что GA вычисление может быть распределено , что означает на практике, вы можете получить гораздо лучшие результаты (ближе к глобальному минимуму) и лучшую производительность (скорость выполнения).

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

5 голосов
/ 04 ноября 2010

Сравнивать два действительно сложно, так как они были вдохновлены разными доменами.

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

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

3 голосов
/ 04 ноября 2010

Я далеко не эксперт по этим алгоритмам, но я постараюсь помочь.

Я думаю, что самое большое различие между ними заключается в идее кроссовера в GA и, таким образом, в любом примереЗадача обучения, которая лучше подходит для GA, чем SA, будет зависеть от того, что означает кроссовер в этой ситуации и как он реализуется.

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

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

...