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


140

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

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


3
Стоит отметить, что существует два типа нейронных сетей - контролируемые и неконтролируемые. Контролируемые получают данные обучения от человека, неконтролируемую обратную связь в себя, и в этом отношении они больше похожи на GA.
Chris S

3
Я вообще не думаю, что это "список". В ответах сравниваются два метода и разъясняется, когда использовать один по сравнению с другим.
Neil N

Краткий ответ: используйте GA, когда функция для моделирования не является непрерывной / дискретной или когда набор данных астрономически многомерный. Для всего остального используйте нейронные сети или GA (или другую модель) в зависимости от того, что дает вам наилучшие результаты. Для получения дополнительной информации см. Мой ответ здесь: stackoverflow.com/a/49684833/1121352
gaborous 06

Ответы:


131

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

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

а также:

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

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

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

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


13
Я просто хочу добавить немного к определению GA. Иногда люди думают о пространстве решения проблемы GA как о наборе состояний или ценностей. Например, «Найдите все способы, которыми набор из четырех шахматных фигур может быть расположен на шахматной доске, чтобы создать мат». Однако пространство решений также может быть набором алгоритмов. Именно здесь в игру вступает реальная сила генетических алгоритмов. Они помогут вам ответить на вопрос вроде «Найдите последовательность ходов с заданным набором шахматных фигур, которая приведет к мату».
lfalin

45

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

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

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


23
На самом деле нейронные сети - это просто метод интерполяции. :)
Дон Реба

3
+1 для генетических алгоритмов (оптимизация) и нейронных сетей (контролируемое обучение) практически не имеют ничего общего.
alfa

2
Единственным общим элементом является то, что они динамически перестраиваются по мере приближения к цели.
lfalin

1
Я не уверен, что есть какое-то совпадение. Нейронная сеть - это модель с функцией стоимости, GA - это метод оптимизации, который, как сказал @zenna, можно использовать для минимизации этой функции стоимости.
Matthieu Brucher

38

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

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

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

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


27

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

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

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


10
На самом деле. Это действительно «ортогональные» методы. Вы можете использовать GA, чтобы найти вес нейронной сети и / или архитектуру.
redcalx

23

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

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

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

Примеры :

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

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

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

Примеры :

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

14

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


1
А также NEAT ( cs.ucf.edu/~kstanley/neat.html ). С реализацией C # на сайте ( sharpneat.sourceforge.net )
redcalx,

Для javascript посетите github.com/wagenaartje/neataptic . Он также реализует NEAT.
Thomas W

8

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

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

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


5

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.