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

StackOverflow https://stackoverflow.com/questions/1402370

Вопрос

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

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

Это было полезно?

Решение

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

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

и:

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры:

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

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

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

Примеры:

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top