Как улучшить алгоритмы градиентного спуска

алгоритм регулярное выражение Нейронные сети задняя часть
Автор: Девин Сони Сборник: слабенький

Примечание редактора: градиентный спуск имеет две основные болевые точки: попадание в локальные минимумы и переоснащение. Блогер Девин Сони, ведущий блог Data Science, предлагает краткий обзор распространенных методов решения обеих этих проблем.

вводить

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

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

Стохастический градиентный спуск и мини-пакетный стохастический градиентный спуск

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

Регуляризация

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

Слева: недообучение; справа: переоснащение

Если исходная функция потерь сети записана какL(y, t), константа регуляризации записывается какλ, то после применения регуляризации L2 функция потерь переписывается следующим образом:

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

импульс

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

Основываясь на этой простой концепции импульса, мы можем переписать уравнение обновления веса в форме (αфактор импульса):

Существуют и другие более продвинутые формы импульса, такие какМетод Нестерова.

отжиг скорости обучения

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

Наиболее распространенные графики отжига основаны на1/tотношения, как показано на рисунке ниже, гдеTиμ0для заданных гиперпараметров,μтекущая скорость обучения:

Это часто называют планом отжига «поиск, затем сходимость», потому что до тех пор, покаtдостигатьTРаньше сеть находилась в фазе «поиска», и скорость обучения не сильно падала, после этого скорость обучения замедлилась и сеть вошла в фазу «конвергенции». с участиемисследованиеиИсследованиеБаланс между ними более или менее связан. Сначала мы отдаем приоритет изучению пространства поиска, расширяя наши общие знания о пространстве, и со временем мы переходим к использованию хороших областей пространства поиска, которые мы нашли, сужая до конкретных минимумов.

Эпилог

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

Оригинальный адрес: https://towardsdatascience.com/improving-vanilla-gradient-descent-f9d91031ab1d