Используются ли эволюционные алгоритмы и нейронные сети в одних и тех же областях? - PullRequest
19 голосов
/ 10 марта 2009

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

Я понимаю, что реализации эволюционных алгоритмов весьма отличаются от реализаций нейронных сетей.

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

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

Я просмотрел некоторые статьи, которые предлагают использовать их в качестве дополнения. Есть ли достойный пример использования для этого?

Ответы [ 7 ]

18 голосов
/ 10 марта 2009

Вот в чем дело: в задачах машинного обучения у вас обычно есть два компонента:

а) Модель (класс функций и т. Д.)

б) Методы подгонки модели (алгоритмы оптимизации)

Нейронные сети - это модель: учитывая расположение и настройку весов, нейронная сеть производит некоторую продукцию. Существуют некоторые канонические методы подбора нейронных сетей, такие как обратное распространение, контрастная дивергенция и т. Д. Однако, главное в нейронных сетях состоит в том, что, если кто-то даст вам «правильные» веса, вы преуспеете в проблеме.

Эволюционные алгоритмы обращаются ко второй части - подгонке модели. Опять же, есть некоторые канонические модели, которые идут с эволюционными алгоритмами: например, эволюционное программирование обычно пытается оптимизировать все программы определенного типа. Тем не менее, советники - это, по сути, способ найти правильные значения параметров для конкретной модели. Обычно вы записываете параметры своей модели таким образом, чтобы разумно было выполнить операцию кроссовера, и поворачиваете ручку советника, чтобы получить разумную настройку параметров.

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

4 голосов
/ 10 марта 2009

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

Большинство других эволюционных алгоритмов " вычисляют " решение ad hoc на месте, по типу схемы восхождения на гору.

Также, как указано в другом ответе, во время выполнения ANN может " догадаться " быстрее, чем большинство других эволюционных алгоритмов может " вычислить ". Однако нужно быть осторожным, поскольку ИНС это просто " угадывание ", и это может быть неправильно.

2 голосов
/ 06 апреля 2018

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

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

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

Если ваше пространство решений дискретно (т. Е. Вы можете выбрать решение A, или B, или C, но ничего посередине, например, 0,5% A + 0,5% B), то вы пытаетесь найти непостоянный функции, и тогда нейронные сети не смогут работать.

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

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

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

2 голосов
/ 08 апреля 2011

Посмотрите на Нейро Эволюцию. (NE)

В настоящее время лучшие методы - NEAT и HyperNEAT Кеннета Стэнли.

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

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

Также вы можете тренировать его с помощью фитнес-функции, которая, таким образом, превосходит обратное распространение, когда вы не знаете, каким должен быть выход. Идеально подходит для изучения сложного поведения для систем, для которых вы не знаете оптимальных стратегий. Единственная проблема в том, что он научится поведению, которое вы не ожидали. Часто такое поведение может быть очень чуждым, хотя оно делает именно то, за что вы его вознаграждали в фитнес-функции. Таким образом, вы будете использовать столько же времени для получения фитнес-функций, сколько и для создания выходных наборов для обратного распространения: P

1 голос
/ 13 октября 2016

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

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

1 голос
/ 05 июня 2009

С точки зрения проблемных областей я сравниваю искусственные нейронные сети, обученные обратным распространением, с эволюционным алгоритмом.

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

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

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

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

В целом, нейронные сети могут быть обучены быстро и получить разумные результаты с минимальными затратами времени (просто попробуйте некоторые параметры). Теоретически нейронная сеть, которая достаточно велика, способна аппроксимировать каждую целевую функцию, что с другой стороны делает ее склонной к переоснащению. Эволюционные алгоритмы требуют, чтобы вы получали много вариантов дизайна, чтобы получить хорошие результаты, вероятно, труднее всего было оптимизировать модель. Но EA могут искать в очень сложных проблемных пространствах (так, как вы их определили) и быстро получать хорошие результаты. АЕ даже могут оставаться успешными, когда проблема (целевая функция) меняется со временем.

Книга Тома Митчелла по машинному обучению: http://www.cs.cmu.edu/~tom/mlbook.html

1 голос
/ 10 марта 2009

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

...