Обратное распространение против генетического алгоритма для обучения нейронной сети


34

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

Есть ли какое-то общее эмпирическое правило, когда использовать то или иное? Может быть, это зависит от типа NN или существует какое-то современное решение, которое обычно превосходит другие?

Если возможно, я ищу общие ответы: например, «если NN огромен, GA лучше», или «GA всегда лучше, но имеет проблемы с вычислительной производительностью» и т. Д ...

Ответы:


23

Если вы внимательно посмотрите на научную литературу, вы найдете противоположные результаты. Очевидно, что в некоторых случаях GA (и в целом эволюционные алгоритмы) могут помочь вам найти оптимальный дизайн NN, но обычно они имеют так много недостатков (настройка параметров алгоритма, сложность вычислений и т. Д.), И их использование нереально для реальных задач. мир приложений. Конечно, вы можете найти множество проблем, где GA / EAs всегдалучше, чем обратное распространение. Учитывая, что поиск оптимального дизайна NN является сложной задачей мультимодальной оптимизации, GA / EAs могут помочь (как метаэвристика) улучшить результаты, полученные с помощью «традиционных» алгоритмов, например, используя GA / EAs для поиска только начальной конфигурации весов или помогая традиционным алгоритмам убежать от локальных минимумов (если вам интересно, я написал статью на эту тему).

Я много работал в этой области, и я могу сказать вам, что есть много научных работ по GA / EAs, примененных к NN, потому что они (или лучше, они были) развивающейся областью исследования.


2
Это то, что я тоже недавно придумал: сначала найдите «хорошее» решение, а затем улучшите его с помощью GA. Не только для NN, но и для оптимизации в целом ...
sashkello

1
Я запутался, почему они взаимоисключающие. Я думал, что GA должен изучить структуру; Обратное распространение может только узнать веса
Пит

8

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

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


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

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

5

Всякий раз, когда вы имеете дело с огромными объемами данных и хотите решить контролируемую задачу обучения с помощью нейронной сети с прямой связью, решения, основанные на обратном распространении, гораздо более осуществимы. Причина этого заключается в том, что для сложной нейронной сети количество свободных параметров очень велико. Один отраслевой проект, над которым я сейчас работаю, включает нейронную сеть с прямой связью с около 1000 входами, двумя скрытыми слоями по 384 нейронам каждый и 60 выходами. Это приводит к 1000 * 384 + 384 * 384 + 384 * 60 = 554496 весовых параметров, которые должны быть оптимизированы. Использование подхода GA здесь было бы ужасно медленным.


Насколько я понимаю, GA предназначен для решения проблем, которые сложнее решить с помощью стандартных подходов. Разве это не должно работать лучше именно в ситуации, которую вы описали?
sashkello

2
Я думал, что GA должен использоваться, чтобы выяснить, что это за структура, например, сколько скрытых слоев и как они связаны. Обратное распространение может только выяснить вес
Пит

2

Второй ответ неверен. Переоснащение не вызвано оптимизацией. Переоснащение происходит, когда ваша модель чрезмерно сложна и может уместить все точки данных, не изучая фактическое правило, которое их создало (то есть просто запоминает их, в крайнем случае.) Существует много способов предотвращения переобучения, таких как выбор более простых моделей, выпадение, dropconnect, снижение веса и просто использование большего количества данных. Цель должна состоять в том, чтобы оптимизировать вашу сеть и сделать ее максимально точной с учетом этих ограничений.

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

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

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


1
Не согласен с вашим первым абзацем. Переоснащение предотвращается в основном с помощью подходов регуляризации в проблеме обучения . Если вы начнете выполнять мета-оптимизацию - то есть решить множество задач обучения (например, настроить параметры ядра, сетевые архитектуры и т. Д.), - забота о переоснащении становится намного более сложной и, конечно, больше не гарантируется.
Марк Клазен

Если переоснащение не было вызвано оптимизацией, ранняя остановка не была бы эффективным средством для переоснащения.
Дикран Сумчатый

1

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


Просто комментируя, мы также используем случайный init. для весов в подпорке. Если при инициализации мы будем использовать одно и то же начальное число, это приведет к тому же решению, но если вы этого не сделаете, вероятно, нет. Таким образом, back-prop тоже зависит от случайного ввода. Когда вы исправите семя, вы также получите тот же результат в генетическом алгоритме, так как он будет использовать тот же результат. чисел снова.
пушки
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.