Когда мне следует использовать генетические алгоритмы, а не нейронные сети?

Есть ли практическое правило (или набор примеров), чтобы определить, когда использовать генетические алгоритмы, а не нейронные сети (и наоборот) для решения проблемы?

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


comment
Стоит отметить, что существует два типа нейронных сетей - контролируемые и неконтролируемые. Контролируемые получают данные обучения от человека, неконтролируемую обратную связь в самих себя, и в этом отношении они больше похожи на GA.   -  person Chris S    schedule 26.10.2012
comment
Я не думаю, что это вообще список. В ответах сравниваются два метода и разъясняется, когда использовать один по сравнению с другим.   -  person Neil N    schedule 23.12.2012
comment
Краткий ответ: используйте GA, когда функция для моделирования не является непрерывной / дискретной или когда набор данных имеет астрономическую многомерность. Для всего остального используйте нейронные сети или GA (или другую модель) в зависимости от того, что дает вам наилучшие результаты. Для получения дополнительной информации см. Мой ответ здесь: stackoverflow.com/a/49684833/1121352   -  person gaborous    schedule 06.04.2018


Ответы (8)


Из википедии:

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

и:

Нейронные сети - это инструменты нелинейного статистического моделирования данных. Их можно использовать для моделирования сложных отношений между входами и выходами или для поиска закономерностей в данных.

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

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

Также необходимо учитывать время исполнения. Генетическому алгоритму требуется много времени, чтобы найти приемлемое решение. Нейронной сети требуется много времени, чтобы «учиться», но затем она может почти мгновенно классифицировать новые входные данные.

person Dawie Strauss    schedule 09.09.2009
comment
Я просто хочу добавить немного к определению GA. Иногда люди думают о пространстве решения проблемы GA как о наборе состояний или ценностей. Например, Найдите все способы, которыми набор из четырех шахматных фигур может быть расположен на шахматной доске, чтобы создать мат. Однако пространство решений также может быть набором алгоритмов. Вот где в игру вступает реальная сила генетических алгоритмов. Они помогут вам ответить на такой вопрос, как «Найти последовательность ходов с заданным набором шахматных фигур, которая приведет к мату». - person lfalin; 13.03.2014

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

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

Это две принципиально разные сущности, но иногда проблемы, которые они способны решить, пересекаются.

person zenna    schedule 10.09.2009
comment
На самом деле нейронные сети - это просто метод интерполяции. :) - person Don Reba; 05.05.2011
comment
+1 для генетических алгоритмов (оптимизация) и нейронных сетей (контролируемое обучение) практически не имеют ничего общего. - person alfa; 04.03.2012
comment
Единственный общий элемент - это то, что они динамически перестраиваются по мере приближения к цели. - person lfalin; 13.03.2014
comment
На самом деле, я не уверен, что есть какое-то совпадение. Нейронная сеть - это модель с функцией стоимости, GA - это метод оптимизации, который, как сказал @zenna, можно использовать для минимизации этой функции стоимости. - person Matthieu Brucher; 18.11.2018

GA генерируют новые шаблоны в структуре, которую вы определяете.

Сетевые сети классифицируют (или распознают) существующие шаблоны на основе предоставленных вами обучающих данных.

GA хорошо работают при эффективном поиске решений в большом пространстве состояний и сходятся на одном или нескольких хороших решениях, но не обязательно к «лучшему» решению.

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

person Steven A. Lowe    schedule 09.09.2009

Здесь вы сравниваете две совершенно разные вещи.

Нейронные сети используются для регрессии / классификации - учитывая набор примеров (x, y), вы хотите регрессировать неизвестный y для некоторого заданного x.

Генетические алгоритмы - это метод оптимизации. Учитывая функцию f (x), вы хотите определить x, который минимизирует / максимизирует f (x).

person bayer    schedule 19.09.2009
comment
Верно. Это действительно «ортогональные» методы. Вы можете использовать GA, чтобы найти веса и / или архитектуру нейронной сети. - person redcalx; 13.10.2009
comment
Называть их совершенно разными или ортогональными кажется немного излишним, учитывая другие ответы, предоставленные в этой и других темах по этой теме. - person Johan; 13.01.2021

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

Нейронные сети

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

Примеры:

  • Экстраполяция графа
  • Распознавание лиц

Генетические алгоритмы

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

Примеры:

  • Планирование самолетов / доставки
  • Расписания.
  • Поиск лучших характеристик для простого агента в искусственной среде
  • Визуализация приближения картинки со случайными многоугольниками
person Unknown    schedule 09.09.2009

Вы можете использовать генетические алгоритмы в качестве альтернативы алгоритму обратного распространения ошибки для обновления весов в нейронных сетях. Для примера обратитесь к: http://www.ai-junkie.com/ann/evolved/nnt1.html.

person Amro    schedule 14.09.2009
comment
А также NEAT (cs.ucf.edu/~kstanley/neat.html). С реализацией C # по адресу (sharpneat.sourceforge.net) - person redcalx; 13.10.2009
comment
Для JavaScript посетите github.com/wagenaartje/neataptic. Он также реализует NEAT. - person Thomas Wagenaar; 07.04.2017

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

С другой стороны, нейронные сети (обычно) работают с непрерывными данными (плавающими и т. Д.). Типичное приложение для NN - это аппроксимация функций, где у вас есть набор X входов и набор Y связанных выходов, но аналитическая функция f: X Y.

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

person Community    schedule 10.09.2009

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

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

person tilish    schedule 27.10.2009