Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

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

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

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

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

In this case, evolutionary и genetic algorithms are perfect, one could even say a god send, since they can "jump" from one solution to the next without any issue. They don't care that some solutions are impossible, nor that the gaps are big or small between subset of the possible state space, evolutionary algorithms can jump randomly far away or close by until they find appropriate solutions.

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

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

Ответ 5

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

Ответ 6

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

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

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

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

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

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

Tom Mitchell Machine Learning Book: http://www.cs.cmu.edu/~tom/mlbook.html

Ответ 7

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

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

Ответ 8

Эволюционные алгоритмы являются алгоритмом оптимизации на основе совокупности, что означает, что эти алгоритмы выполняют рекомбинацию и мутацию данных, предоставленных им, для выполнения наилучшего оптимизированного поиска.
Нейронные сети - это алгоритмы, смоделированные от человеческого мозга. Они могут принимать входные данные, корректировать смещение в соответствии с данными обучения и выдают выходные данные на основе предоставленной им гипотезы.
Эволюционные алгоритмы используются с нейронными сетями для выполнения мощных оптимизаций. Например, Generative Adversarial Networks (GAN) являются текущим примером трендов комбинации нейронных сетей и генетических алгоритмов (класс эволюционных алгоритмов). ГАН могут генерировать изображения людей, этих людей даже не существует. Это очень интересное использование GAN. Этот пример может быть проверен на этом сайте Nvidia: https://thispersondoesnotexist.com/?ref=coolsiteoftheday.