Многие книги и учебные пособия по нейронной сети тратят много времени на алгоритм обратного распространения, который по сути является инструментом для вычисления градиента.
Давайте предположим, что мы строим модель с ~ 10K параметров / весов. Можно ли запустить оптимизацию, используя некоторые алгоритмы оптимизации без градиента?
Я думаю, что вычисление числового градиента было бы слишком медленным, но как насчет других методов, таких как Nelder-Mead, Имитация отжига или Генетический алгоритм?
Все алгоритмы пострадают от локальных минимумов, почему одержимы градиентом?
Ответы:
Первые два упомянутых вами алгоритма (Nelder-Mead и Simulated Annealing) обычно считаются в кругах оптимизации в значительной степени устаревшими, поскольку есть гораздо лучшие альтернативы, которые являются более надежными и менее дорогостоящими. Генетические алгоритмы охватывают широкий спектр, и некоторые из них могут быть разумными.
Однако в более широком классе алгоритмов оптимизации без производных (DFO) есть много, которые значительно лучше, чем эти «классики», поскольку в последние десятилетия это была активная область исследований. Итак, могут ли некоторые из этих новых подходов быть разумными для глубокого изучения?
Сравнительно недавний документ, в котором сравнивается уровень техники, заключается в следующем:
Это хорошая статья, в которой есть много интересных идей о последних технологиях. Например, результаты ясно показывают, что все лучшие локальные оптимизаторы основаны на модели, используя различные формы последовательного квадратичного программирования (SQP).
Однако, как отмечено в их реферате: «Мы находим, что способность всех этих решателей получать хорошие решения уменьшается с увеличением размера проблемы». Чтобы дать представление о числах, для всех задач решающим был дан бюджет 2500 оценок функций, а размеры задач составляли максимум ~ 300 параметров для оптимизации. Помимо параметров O [10], очень немногие из этих оптимизаторов работали очень хорошо, и даже лучшие из них показали заметное снижение производительности при увеличении размера проблемы.
Таким образом, для задач с очень большими измерениями алгоритмы DFO просто не могут конкурировать с производными. Чтобы дать некоторую перспективу, оптимизация на основе PDE (уравнения с частными производными) - это еще одна область с очень большими размерными проблемами (например, несколько параметров для каждой ячейки большой трехмерной сетки конечных элементов). В этой области « сопряженный метод » является одним из наиболее часто используемых методов. Это также оптимизатор градиентного спуска, основанный на автоматическом дифференцировании кода прямой модели.
Наиболее близким к многомерному оптимизатору DFO является, возможно, ансамблевый фильтр Калмана , используемый для ассимиляции данных в сложные моделирования PDE, например, модели погоды. Интересно, что это по существу подход SQP, но с байесовско-гауссовой интерпретацией (поэтому квадратичная модель является положительно определенной, то есть без седловых точек). Но я не думаю, что количество параметров или наблюдений в этих приложениях сопоставимо с тем, что можно увидеть в глубоком обучении.
Дополнительное примечание (локальные минимумы). Из того, что я прочитал о глубоком обучении, я думаю, что единодушным является то, что именно седловые точки, а не локальные минимумы, являются наиболее проблематичными для пространств с NN-параметрами большой размерности.
Например, недавний обзор в Nature говорит: «Недавние теоретические и эмпирические результаты убедительно свидетельствуют о том, что локальные минимумы не являются серьезной проблемой в целом. Вместо этого ландшафт заполнен комбинаторно большим количеством седловых точек, где градиент равен нулю, и поверхность изгибается в большинстве измерений и изгибается в остальном. "
Связанное с этим беспокойство касается локальной и глобальной оптимизации (например, этот вопрос указан в комментариях). Хотя я не занимаюсь глубоким обучением, в моем опыте переоснащение определенно является серьезной проблемой. На мой взгляд, методы глобальной оптимизации наиболее подходят для задач инженерного проектирования, которые не сильно зависят от «естественных» данных. В задачах ассимиляции данных, любые текущие глобальные минимумы легко могут измениться при добавлении новых данных (предостережение: Мой опыт будет сосредоточен в задачах геонаучных, где данные обычно «разреженный» по отношению к модели емкости).
Возможно, интересная перспектива
который обеспечивает полуторетические аргументы о том, почему и когда приближенная оптимизация может быть предпочтительнее на практике.
Конечное примечание (мета-оптимизация): хотя методы обучения на основе градиента, по-видимому, доминируют в обучающих сетях, DFO может играть роль в связанных задачах мета-оптимизации.
Одним из примеров будет настройка гиперпараметров. (Интересно, что успешные оптимизаторы DFO на основе моделей от Rios & Sahinidis можно рассматривать как принципиально решающие последовательность задач проектирования экспериментов / поверхности отклика .)
Другим примером может быть проектирование архитектур с точки зрения настройки уровней (например, число, тип, последовательность, узлы / уровень). В этом контексте дискретной оптимизации алгоритмы генетического стиля могут быть более подходящими. Обратите внимание, что здесь я имею в виду случай, когда связность неявно определяется этими факторами (например, полностью связные слои, сверточные слои и т. Д.). Другими словами, связность явно оптимизирована мета. (Сила соединения может упасть при обучении, где, например, разреженность может быть обеспечена регуляризацией и / или активацией ReLU ... однако этот выбор может быть мета-оптимизирован.)O[N2] not L1
источник
Вы можете использовать всевозможные алгоритмы локального поиска, обратное распространение только что оказалось наиболее эффективным для более сложных задач в целом ; Есть обстоятельства, когда другие локальные поиски лучше.
Вы можете использовать случайное начало подъема по нейронной сети, чтобы быстро найти правильное решение, но найти оптимальное решение практически невозможно.
Википедия (я знаю, не самый большой источник, но все же) говорит
источник
Что касается генетических алгоритмов, я бы увидел, что обратное распространение против генетического алгоритма для обучения нейронной сети
Основной случай, который я бы сделал для backprop, - это то, что он очень широко используется и имеет много значительных улучшений . Эти изображения действительно показывают некоторые невероятные достижения в ванильном распространении.
Я бы не думал о backprop как об одном алгоритме, но как о классе алгоритмов.
Я также хотел бы добавить, что для нейронных сетей параметры 10k - это небольшие компоненты. Другой поиск будет работать отлично, но в глубокой сети с миллионами параметров это вряд ли практично.
источник
Ну, оригинальные нейронные сети до революции распространения в 70-х годах были «обучены» вручную. :)
Что, как говорится:
Существует «школа» машинного обучения, называемая машиной экстремального обучения , которая не использует обратное распространение.
Что они делают, так это создают нейронную сеть со многими, многими, многими узлами - со случайными весами - и затем обучают последний слой, используя минимальные квадраты (как линейная регрессия). Затем они либо сокращают нейронную сеть впоследствии, либо применяют регуляризацию на последнем этапе (например, лассо), чтобы избежать переобучения. Я видел, что это применимо к нейронным сетям только с одним скрытым слоем. Там нет обучения, так что это супер быстро. Я провел несколько тестов и, что удивительно, эти нейронные сети, «обученные» таким образом, достаточно точны.
Большинство людей, по крайней мере те, с которыми я работаю, относятся к этой «школе» машинного обучения с насмешкой, и они - группа изгоев со своими собственными конференциями и так далее, но я на самом деле думаю, что это довольно изобретательно.
Еще один момент: в рамках обратного распространения есть альтернативы, которые редко упоминаются, такие как упругое обратное распространение , которые реализованы в R в
neuralnet
пакете, которые используют только величину производной. Алгоритм состоит из условий if-else вместо линейной алгебры. Они имеют некоторые преимущества по сравнению с традиционным обратным распространением, а именно: вам не нужно нормализовать ваши данные, поскольку они не страдают от исчезающей проблемы градиента .источник
Вы можете использовать практически любой алгоритм численной оптимизации для оптимизации весов нейронной сети. Вы также можете использовать смешанные алгоритмы непрерывной дискретной оптимизации для оптимизации не только весов, но и самого макета (количество слоев, количество нейронов в каждом слое, даже тип нейрона). Однако нет алгоритма оптимизации, который каким-либо образом не страдает от «проклятия размерности» и локальных оптимизмов.
источник
Вы также можете использовать другую сеть, чтобы сообщить, как параметры должны быть обновлены.
Существует отделенный нейронный интерфейс (DNI) от Google Deepmind. Вместо использования обратного распространения он использует другой набор нейронных сетей для прогнозирования обновления параметров, что позволяет выполнять параллельное и асинхронное обновление параметров.
В документе показано, что DNI увеличивает скорость обучения и емкость модели RNN и дает сопоставимые результаты как для RNN, так и для FFNN при выполнении различных задач.
В документе также перечислены и сравнены многие другие методы без обратного распространения
источник
Пока это вопрос сообщества, я думал, что добавлю еще один ответ. «Обратное распространение» - это просто алгоритм градиентного спуска. Он предполагает использование только первой производной функции, для которой пытаются найти локальные минимумы или максимумы. Есть еще один метод, называемый методом Ньютона или Ньютона-Рафсона, который включает вычисление гессиана и использует вторые производные. Это может быть успешным в тех случаях, когда градиентный спуск терпит неудачу. Мне говорят другие, более осведомленные, чем я, и да, это подержанный призыв к авторитету, что он не используется в нейронных сетях, потому что вычисление всех вторых производных слишком дорого с точки зрения вычислений.
источник