Я читал несколько статей, в которых обсуждались плюсы и минусы каждого метода, некоторые утверждали, что GA не дает никакого улучшения в поиске оптимального решения, в то время как другие показывают, что оно более эффективно. Кажется, что GA в литературе обычно предпочитают (хотя в основном люди модифицируют ее каким-то образом для достижения нужных результатов), тогда почему большинство программных решений используют только обратное распространение?
Есть ли какое-то общее эмпирическое правило, когда использовать то или иное? Может быть, это зависит от типа NN или существует какое-то современное решение, которое обычно превосходит другие?
Если возможно, я ищу общие ответы: например, «если NN огромен, GA лучше», или «GA всегда лучше, но имеет проблемы с вычислительной производительностью» и т. Д ...
Одной из ключевых проблем с нейронными сетями является чрезмерная подгонка, что означает, что алгоритмы, которые очень стараются найти сеть, минимизирующую некоторый критерий на основе конечной выборки данных, в итоге получат сеть, которая очень хорошо работает для этой конкретной выборки. данных, но которые будут иметь плохое обобщение. По этой причине я довольно осторожно использую GA для проектирования нейронных сетей, особенно если они выполняют оптимизацию архитектуры одновременно с оптимизацией весов. В целом я обнаружил, что обучающие сети (с регуляризацией) из числа (скажем, 20) случайных векторов начального веса и последующего формирования ансамбля всех полученных сетей, как правило, являются таким же хорошим подходом, как и любой другой.
По сути, оптимизация - это корень всего зла в машинном обучении, чем больше вы его делаете, тем больше вероятность того, что вы в конечном итоге переоцените данные.
источник
Всякий раз, когда вы имеете дело с огромными объемами данных и хотите решить контролируемую задачу обучения с помощью нейронной сети с прямой связью, решения, основанные на обратном распространении, гораздо более осуществимы. Причина этого заключается в том, что для сложной нейронной сети количество свободных параметров очень велико. Один отраслевой проект, над которым я сейчас работаю, включает нейронную сеть с прямой связью с около 1000 входами, двумя скрытыми слоями по 384 нейронам каждый и 60 выходами. Это приводит к 1000 * 384 + 384 * 384 + 384 * 60 = 554496 весовых параметров, которые должны быть оптимизированы. Использование подхода GA здесь было бы ужасно медленным.
источник
Второй ответ неверен. Переоснащение не вызвано оптимизацией. Переоснащение происходит, когда ваша модель чрезмерно сложна и может уместить все точки данных, не изучая фактическое правило, которое их создало (то есть просто запоминает их, в крайнем случае.) Существует много способов предотвращения переобучения, таких как выбор более простых моделей, выпадение, dropconnect, снижение веса и просто использование большего количества данных. Цель должна состоять в том, чтобы оптимизировать вашу сеть и сделать ее максимально точной с учетом этих ограничений.
Чтобы ответить на вопрос, backprop предположительно намного быстрее, чем стохастическая оптимизация (генетические алгоритмы и т. П.). Я предполагаю, что это потому, что он использует то, чем должен был быть фактический результат , корректирует весовые коэффициенты в правильном направлении, основываясь на этом. где стохастическая оптимизация пробует совершенно случайные изменения и игнорирует эту информацию.
Однако, изучая большую территорию, ГА, вероятно, преуспеют в долгосрочной перспективе, избегая местных оптимизмов, а тренировка займет больше времени.
Мне любопытно, насколько медленнее GA, чем backprop, и если кто-нибудь знает о гибридных алгоритмах (поиск с разбросом кажется идеальным для этого).
источник
Имхо разница между GA и обратным распространением состоит в том, что GA основывается на случайных числах, и что обратное распространение основывается на статическом алгоритме, таком как стохастический градиентный спуск. GA, основанный на случайных числах и добавление к этой мутации, означает, что он, вероятно, избежит попадания в локальные минимумы. Но тогда, когда GA основан на случайных числах, это означает, что вполне вероятно, что в течение двух разных периодов вы запустите обучение в одной и той же сети, он может прийти к другому выводу, то есть к другому набору весов.
источник