112

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

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

+3

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

+1

Можем ли мы работать над выводом неконструктивных бит в вопрос? Это очень много вокруг «набора примеров», так как это самый список-у, и мы не хотим его поощрять. Ответы довольно хорошие, и мы хотели бы сохранить его таким образом. Мы будем рады открыть его после того, как этот бит позаботится. – casperOne

+2

Я не думаю, что это «list-y» вообще. Ответы сравнивают два метода и уточняют, когда использовать один против другого. –

ответ

106

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

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

и:

Neural networks являются нелинейными инструментами статистического моделирования данных. Они могут использоваться для моделирования сложных взаимосвязей между входами и выходами или до найти модели в данных.

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

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

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

+9

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

30

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

NNS классифицировать/распознавать существующие модели на основе обучения, которые вы предоставляете

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

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

+4

не может понять, почему это было приостановлено ... –

19

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

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

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

Примеры Графическая экстраполяция. Распознавание лица.

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

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

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

33

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

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

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

+3

.. «просто техника оптимизации» .. Это все? – 2009-10-27 18:13:26

+4

«просто метод оптимизации» не был предназначен для умаления мощности оптимизации. Дело было в том, чтобы показать, что GA выполняют ту же функцию, что и многие другие методы оптимизации, такие как скалолазание. – zenna

+17

Нейронные сети - это всего лишь метод интерполяции. :) –

6

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

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

Конечно, существует тысячи вариантов обоих вариантов: линия между ними несколько размыта.

12

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

+1

А также NEAT (http://www.cs.ucf.edu/~kstanley/neat.html). С реализацией C# в (http://sharpneat.sourceforge.net) – redcalx

+0

Для javascript зайдите на https://github.com/wagenaartje/neataptic. Он также реализует NEAT. –

21

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

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

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

+5

Действительно. Это действительно «ортогональные» методы. Вы можете использовать GA для поиска весов нейронной сети и/или архитектуры. – redcalx

4

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

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