Оптимизатор Hengyuan Cloud_NAG в области распознавания речи и семантической обработки

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

Источник статьи | Облачное сообщество Hengyuan (сосредоточение внимания на платформе обучения искусственному интеллекту / глубокому обучению облачных графических процессоров, официальный веб-сайт:Хэнъюань Чжисян Облако)

Исходный адрес |NAG-оптимизатор

Автор оригинала Рог серый


Сообщество полно талантов, и сегодня редактор нашел еще одного бесценного модератора, «Цзяо Хуэй».

Редактор — это человек, который любит делиться, когда я вижу хорошую статью и хорошего автора, как я могу это проконтролировать и не поделиться со всеми? Итак, следуйте за редактором, и я бегло пройдусь по содержанию статьи!

текст начинается

Недавно, когда я просматривал исходный код Fairseq, я обнаружил, что реализация оптимизатора NAG (градиент Nesterov Accelerate) немного отличается от реализации torch, поэтому я планирую проверить информацию, чтобы ясно понять ее.

Во-первых, вспомните Momentm, метод градиентного спуска вводит понятие импульса, использует β для выполнения скользящего экспоненциального среднего взвешенного значения на историческом градиенте, самый ранний градиент затухает быстрее всего и мало влияет на текущее обновление; наоборот, чем ближе текущий градиент соответствует обновлению.больше, формула такова:image.png

где Vt, gt и g(θt) представляют скорость, градиент и параметры модели в момент времени t соответственно, μ — коэффициент импульса, а lr — скорость обучения. Идея этого метода заключается в том, чтобы сгладить параметры сети, чтобы градиент не слишком сильно качался.

NAG похож на Momentum в том, что они используют исторические градиенты для обновления параметров.Разница в том, что NAG сначала использует µVt для частичного обновления θt для получения θt+µVt, а затем использует градиент g (θt+µVt) для обновления для получения θt+1 , формула выглядит следующим образом:

image.png

Здесь ε — скорость обучения.

На следующем рисунке представлено визуальное объяснение Momentum и NAG:

image.png

Momentum использует скорость Vt и градиент g(θt) в текущем положении A для непосредственного обновления пункта назначения C; в то время как NAG сначала делает небольшой шаг по инерциальному направлению от точки A к B, где она очень близка к C, а затем использует B. Градиент g(θt+µVt) at обновляется до C.

В документе считается, что это может быстро обновить V, сделав Nag более стабильным, чем импульс, и более подходящим для сценариев с высокой скоростью обучения. Кроме того, если Nag обновляется до точки B с помощью µVt, градиент g(θt+µVt) в точке B больше, чем g(θt) импульса, поэтому Nag может быть скорректирован обратно в начальную точку A быстрее.

Ближе к делу, вот формула и код для torch.optim.SGD [1]:

image.png image.png

Вот формула и код для Fairseq.optim.nag [2]:

image.png image.png

Можно видеть, что они на самом деле несколько отличаются, и формула Fairseq фактически такая же, как и формула статьи.В [3] есть производные:image.png

Среди них β — коэффициент импульса μ этой статьи.После первой замены θt+βVt для получения θt', наконец, θt' рассматривается как параметр θt, подлежащий обновлению, то есть значение каждого обновления всегда равно θt+βVt , Об этом См. следующий рисунок и [4] для объяснения:image.png

Короче говоря, оптимизатор nag может ускорить сходимость, а также стабилен с большой скоростью обучения.Неудивительно, что ConvS2S в Fairseq может использовать скорость обучения 0,5.

[1]torch sgd

[2]fairseq nag

[3]Методы оптимизации в глубоком обучении

[4]CS231n Convolutional Neural Networks for Visual Recognition