Какие есть варианты градиентного спуска?

47

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

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

Тропа
источник

Ответы:

39

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

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

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

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

Дикран Сумчатый
источник
9
Очень верно. Проблема отсутствия глобального минимума переоценена.
Bayerj
2
Переоснащение происходит, когда вы используете много параметров в модели (типичный случай использования NN), это не связано с локальными минимумами - по крайней мере, не очевидными способами. Вы можете застрять в плохом локальном минимуме даже с небольшим NN, то есть с очень небольшим количеством свободных параметров.
Карлосаям
1
@DikranMarsupial, вы можете иметь много локальных минимумов, даже с одним параметром модели. Это зависит от формы функции потерь. Придуманный, но простой пример: , где являются ближайшими и вторыми ближайшими соседями к . Легко видеть, что между каждыми двумя последовательными точками существует локальный минимум, т.е. чем больше данных, тем больше локальных минимумов! Глобал достигается между ближайшими точками в наборе данных. Это экстремально, я знаю, но я видел подобное поведение, решающее проблемы с изменением. L(ω)=(x(1)ω)2+(x(2)ω)2x(1),x(2)ω
Карлосаям
1
@DikranMarsupial - мне не хватило символов, чтобы закончить предложение :) Я видел похожее поведение, решающее проблемы с точкой изменения ... используя нейронные сети. В такого рода проблемах локальный минимум обычно плох; поэтому я не согласен с тем, что эта проблема переоценена.
Карлосаям
1
@carlosayam «переоценен» не означает «неважно», просто проблема с нейронными сетями, которая обычно завышена. Всегда будут проблемы со всеми методами обучения, нет панацеи от всего, и вам всегда нужно диагностировать проблемы с помощью любой модели.
Дикран Marsupial
24

Градиентный спуск - это алгоритм оптимизации .

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

  • Стохастический градиентный спуск (SGD) , мини-партия SGD, ...: вам не нужно оценивать градиент для всего обучающего набора, а только для одной выборки или мини-серии выборок, это обычно намного быстрее, чем пакетный градиентный спуск. Мини-серии используются для сглаживания градиента и распараллеливания прямого и обратного распространения. Преимущество перед многими другими алгоритмами состоит в том, что каждая итерация находится в O (n) (n - это число весов в вашем NN). SGD обычно не застревает в локальных минимумах (!), Потому что это стохастик.
  • Нелинейный сопряженный градиент : кажется, что он очень успешен в регрессии, O (n), требует пакетного градиента (следовательно, может быть не лучшим выбором для огромных наборов данных)
  • L-BFGS : кажется, очень успешен в классификации, использует гессенское приближение, требует пакетного градиента
  • Алгоритм Левенберга-Марквардта (LMA) : На самом деле это лучший алгоритм оптимизации, который я знаю. Недостатком является то, что его сложность составляет примерно O (n ^ 3). Не используйте его для больших сетей!

И было много других алгоритмов, предложенных для оптимизации нейронных сетей, вы можете использовать Google для оптимизации без гессиана или v-SGD (есть много типов SGD с адаптивной скоростью обучения, см., Например, здесь ).

Оптимизация для NNs - не решенная проблема! По моему опыту, самая большая проблема - не найти хороший местный минимум. Однако, проблема состоит в том, чтобы выбраться из очень плоских областей, иметь дело с плохо обусловленными функциями ошибок и т. Д. Именно поэтому LMA и другие алгоритмы, использующие приближения гессиана, обычно так хорошо работают на практике, и люди пытаются разработать стохастические версии. которые используют информацию второго порядка с низкой сложностью. Однако часто очень хорошо настроенный набор параметров для мини-пакета SGD лучше, чем любой сложный алгоритм оптимизации.

Обычно вы не хотите найти глобальный оптимум. Потому что это обычно требует переобучения тренировочных данных.

альфа
источник
16

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

анна-earwen
источник
+1 Следует иметь в виду, что агрессивная оптимизация критерия обучения может привести к переоснащению, если не будут предприняты шаги для его предотвращения, поэтому я бы избегал PSO и EA, если критерий обучения не включает некоторую форму регуляризации или другую сложность, основанную на штраф.
Дикран Сумчатый
5
@ anna-earwen, не могли бы вы дать несколько ссылок, где PSO работает конкурентоспособнее по сравнению с SGD?
Emrea
8

Я знаю, что эта ветка довольно старая, а другие проделали большую работу по объяснению таких понятий, как локальные минимумы, переоснащение и т. Д. Однако, поскольку OP искал альтернативное решение, я постараюсь внести одно и надеюсь, что оно вдохновит на более интересные идеи.

Идея состоит в том, чтобы заменить каждый вес w на w + t, где t - случайное число, следующее за распределением Гаусса. Конечный выходной сигнал сети представляет собой средний выходной сигнал по всем возможным значениям t. Это можно сделать аналитически. Затем вы можете оптимизировать проблему с помощью градиентного спуска или LMA или других методов оптимизации. После завершения оптимизации у вас есть два варианта. Один из вариантов - уменьшить сигма в распределении Гаусса и проводить оптимизацию снова и снова, пока сигма не достигнет 0, тогда у вас будет лучший локальный минимум (но потенциально это может привести к переобучению). Другой вариант - продолжать использовать тот, у которого случайное число в его весах, обычно он имеет лучшее свойство обобщения.

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

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

Ниже приведены примеры выходных данных для задачи с двумя спиралями. Архитектура сети одинакова для всех трех: существует только один скрытый уровень из 30 узлов, а выходной уровень является линейным. Используемый алгоритм оптимизации - LMA. Левое изображение для настройки ванили; середина использует первый подход (а именно многократное уменьшение сигмы к 0); третий использует сигма = 2.

Результат двухспиральной задачи тремя подходами

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

И сверточное туннелирование, и аналитический способ введения шума - мои оригинальные идеи. Возможно они - альтернатива, кому-то может быть интересно. Подробности можно найти в моей статье « Объединение бесконечного числа нейронных сетей в одну» . Предупреждение: я не профессиональный академический писатель, и статья не рецензируется. Если у вас есть вопросы по поводу упомянутых мной подходов, пожалуйста, оставьте комментарий.

Бо Тянь
источник
1

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

Алекс
источник
0

Когда речь идет о задачах глобальной оптимизации (например, попытка найти глобальный минимум целевой функции), вы можете взглянуть на:

  1. Поиск по шаблону (также известный как прямой поиск, поиск без производных или поиск по « черному ящику»), который использует шаблон (набор векторов) для определения точек для поиска на следующей итерации.{vi}
  2. Генетический алгоритм, который использует концепцию мутации, кроссовера и отбора для определения совокупности точек, которые будут оцениваться на следующей итерации оптимизации.
  3. Оптимизация роя частиц , определяющая набор частиц, которые «ходят» по пространству в поисках минимума.
  4. Суррогатная оптимизация , использующая суррогатную модель для аппроксимации целевой функции. Этот метод можно использовать, когда целевая функция требует больших затрат.
  5. Многоцелевая оптимизация (также известная как оптимизация Парето ), которая может использоваться для задачи, которая не может быть выражена в форме, которая имеет единственную целевую функцию (а скорее вектор целей).
  6. Имитация отжига , которая использует концепцию отжига (или температуры) для компромисса между разведкой и эксплуатацией. Он предлагает новые точки для оценки на каждой итерации, но с увеличением количества итераций «температура» падает, и алгоритм становится все менее и менее вероятным исследовать пространство, таким образом «сходясь» к своему текущему лучшему кандидату.

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

Томаш Бартковяк
источник