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

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

Вопрос

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

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

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

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

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

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

Решение

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

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

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

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

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

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

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

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

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

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

Посмотрите на Neuro Evolution. (NE)

На данный момент лучшими методами являются NEAT и HyperNEAT Кеннета Стэнли.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

scroll top