Таким образом, градиентный спуск на основе импульса работает следующим образом:
где - это предыдущее обновление веса, а - текущий градиент относительно параметров , - скорость обучения, а - постоянная величина.
и ускоренный градиентный спуск Нестерова работает следующим образом:
что эквивалентно:
или же
источник: https://github.com/fchollet/keras/blob/master/keras/optimizers.py
Поэтому мне кажется, что ускоренный градиентный спуск Нестерова просто придает больший вес члену lr * g в течение предыдущего члена m изменения веса (по сравнению с простым старым импульсом). Правильно ли это толкование?
optimization
gradient-descent
яблочный сидр
источник
источник
Ответы:
Ответ Ареша о импульсе Нестерова правильный, но код, по сути, делает то же самое. Таким образом, в этом отношении метод Нестерова придает больший вес термину и меньшему весу члену .vlr⋅g v
Чтобы проиллюстрировать, почему реализация Keras верна, я заимствую пример Джеффри Хинтона .
Метод Нестерова использует подход «азартная игра-> коррекция». Коричневый вектор - это (gamble / jump), красный вектор - (исправление), а зеленый вектор - это (куда мы должны перейти). - это функция градиента.
v′=m⋅v−lr⋅∇(w+m⋅v)
w′=w+v′
m⋅v −lr⋅∇(w+m⋅v) m⋅v−lr⋅∇(w+m⋅v) ∇(⋅)
Код выглядит иначе, потому что он перемещается по коричневому вектору вместо зеленого , поскольку метод Нестерова требует только вычисления вместо . Поэтому на каждом этапе мы хотим∇(w+m⋅v)=:g ∇(w)
Код Кераса, написанный для краткости: , и мы выполним некоторые математические вычисленияp′=p+m⋅(m⋅v−lr⋅g)−lr⋅g
и это ровно . На самом деле исходный код использует более короткий путь .1→0→2→3 1→2→3
Фактическое оценочное значение (зеленый вектор) должно быть , которое должно быть близко к когда обучение сходится.pp−m⋅v p
источник
Мне кажется, что на вопрос ОП уже был дан ответ, но я постараюсь дать другое (надеюсь, интуитивное) объяснение об импульсе и разнице между классическим импульсом (CM) и ускоренным градиентом Нестерова (NAG).
tl; dr
Просто перейдите к изображению в конце.
Рассуждения NAG_ball - это еще одна важная часть, но я не уверен, что без всего остального это будет легко понять.
CM и NAG оба являются методами выбора следующего вектора в пространстве параметров, чтобы найти минимум функции .θ f(θ)
В других новостях, в последнее время появились эти два диких разумных шара:
Оказывается (в соответствии с наблюдаемым поведением шаров и согласно статье « О важности инициализации и импульса в глубоком обучении» , которая описывает CM и NAG в разделе 2), что каждый шар ведет себя точно так же, как один из этих методов , и поэтому мы бы назвали их «CM_ball» и «NAG_ball»:
(NAG_ball улыбается, потому что он недавно наблюдал конец лекции 6c - Метод импульса, Джеффри Хинтон с Нитишем Шриваставой и Кевином Сверским , и, таким образом, верит больше, чем когда-либо, что его поведение приводит к поиску минимума быстрее.)
Вот как ведут себя шары:
Пусть будет шара в пространстве параметров, а будет прыжок шара . Тогда переход между точками в пространстве параметров может быть описан как .
Аналогичным образом, прыжок с уклона идет в направлении самого крутого склона вниз (в направлении, противоположном градиенту), и чем больше уклон, тем больше скачок.
Наклонный прыжок также зависит от , уровня готовности мяча (естественно, ): чем больше стремление к мячу, тем дальше будет проходить наклонный прыжок. (И в CM, и в NAG - это гиперпараметр, называемый «скорость обучения».) Пусть
Таким образом, двойной прыжок CM_ball:
Напротив, NAG_ball некоторое время думал об этом, а затем решил всегда начинать с Momentum Jump.vt=μvt−1−ϵ∇f(θt−1+μvt−1)
Поэтому двойной прыжок NAG_ball:
NAG_ball рассуждения
Поэтому я должен рассмотреть ситуацию так, как будто я уже совершил Momentum Jump, и я собираюсь совершить прыжок с уклона.
Наконец, вчера мне посчастливилось наблюдать, как каждый шарик прыгает в одномерном пространстве параметров.θ
f(θ) 7
Я думаю, что взгляд на их изменяющиеся позиции в пространстве параметров не сильно поможет в достижении интуиции, так как это пространство параметров является линией.
Поэтому вместо каждого шара я нарисовал двухмерный график, на котором горизонтальная ось равна . Затем я нарисовал используя черную кисть, а также нарисовал каждый шарик в его первых позициях вместе с числами, чтобы показать хронологический порядок позиций. Наконец, я нарисовал зеленые стрелки, чтобы показать расстояние в пространстве параметров (т. Е. Горизонтальное расстояние на графике) для каждого скачка импульса и скачка наклона.
Приложение 1 - Демонстрация рассуждений NAG_ball
В этом завораживающем GIF Алек Рэдфорд , вы можете увидеть, что NAG работает, возможно, лучше, чем CM ("Momentum" в GIF).
(Минимум - это то, где находится звезда, а кривые - это контурные линии . Объяснение контурных линий и почему они перпендикулярны градиенту, см. В видео 1 и 2 легендарной 3Blue1Brown .)
Анализ конкретного момента демонстрирует рассуждения NAG_ball:
Приложение 2 - вещи / термины, которые я придумал (для интуиции)
Приложение 3 - термины, которые я не составил
источник
Я так не думаю.
Есть хорошее описание свойств Nesterov Momentum (aka Nesterov Accelerated Gradient), например, в Sutskever, Martens и др. «О важности инициализации и импульса в глубоком обучении» 2013 .
Основное отличие состоит в том, что в классическом импульсе вы сначала корректируете свою скорость, а затем делаете большой шаг в соответствии с этой скоростью (а затем повторяете), но в импульсе Нестерова вы сначала делаете шаг в направлении скорости, а затем делаете поправку к вектору скорости на основе на новом месте (затем повторите).
т.е. Классический импульс:
В то время как импульс Нестеров заключается в следующем:
На самом деле, это имеет огромное значение на практике ...
источник
Добавлено: Стэнфордский курс по нейронным сетям, cs231n , дает еще одну форму шагов:
Здесь
v
скорость ака шаг ака состояние иmu
является фактором импульса, обычно 0,9 или около того. (v
,x
Иlearning_rate
может быть очень длинные векторы, с NumPy, код тот же.)v
в первой строке - градиентный спуск с импульсом;v_nesterov
экстраполирует, продолжает идти. Например, с mu = 0,9,Следующее описание имеет 3 термина:
один термин - простой градиентный спуск (GD),
1 + 2 - GD + импульс,
1 + 2 + 3 - Нестеров Г.Д.
Нестеров Г.Д. обычно описывают как шаги переменного импульса и шаги градиента :xt→yt yt→xt+1
где - отрицательный градиент, а - размер шага, или скорость обучения.gt≡−∇f(yt) h
Объедините эти два уравнения в одно только в , в точках, в которых оцениваются градиенты, вставив второе уравнение в первое, и переставьте термины:yt
Последний член - это разница между БД с простым импульсом и БД с импульсом Нестерова.
Можно использовать отдельные термины импульса, скажем, и : - шаговый импульс - градиент импульсаm mgrad
+ m (yt−yt−1)
+ mgrad h (gt−gt−1)
Тогда дает простой импульс, Nesterov. усиливает шум (градиенты могут быть очень шумными), - фильтр сглаживания IIR.m g r a d = m m g r a d > 0 m g r a d ∼ - .1mgrad=0 mgrad=m
mgrad>0
mgrad∼−.1
Кстати, импульс и размер шага могут изменяться со временем, и , или для каждого компонента (ada * координатное снижение), или для обоих - больше методов, чем в тестовых примерах.ч тmt ht
График сравнения простого импульса с импульсом Нестерова в простом двумерном тестовом примере :
источник