Почему важно включить термин коррекции смещения для оптимизатора Adam для Deep Learning?


15

Я читал об оптимизаторе Адама для глубокого обучения и натолкнулся на следующее предложение в новой книге Бегнио, Гудфеллоу и Кортвилла « Глубокое обучение »:

Адам включает поправки смещения к оценкам как моментов первого порядка (члена импульса), так и (нецентрированных) моментов второго порядка, чтобы учесть их инициализацию в начале координат.

Кажется, что основная причина включения этих поправочных терминов смещения состоит в том, что каким-то образом он устраняет смещение инициализации и .mt=0vt=0

  • Я не уверен на 100%, что это значит, но мне кажется, что это, вероятно, означает, что 1-й и 2-й моменты начинаются с нуля, и каким-то образом начинать его с нуля наклоняет значения ближе к нулю несправедливым (или полезным) способом для обучения ?
  • Хотя я хотел бы знать, что это значит немного точнее и как это вредит обучению. В частности, какие преимущества дает смещение оптимизатора с точки зрения оптимизации?
  • Как это помогает тренировать модели глубокого обучения?
  • Кроме того, что это означает, когда это беспристрастно? Мне знакомо, что означает объективное стандартное отклонение, но мне не ясно, что это значит в этом контексте.
  • Действительно ли исправление смещения имеет большое значение, или это что-то преувеличено в статье оптимизатора Адама?

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


2
Ссылка: arxiv.org/pdf/1412.6980v8.pdf Оценки градиента 1-го и 2-го моментов обновляются с помощью скользящего среднего и начинаются с того, что обе оценки равны нулю, следовательно, те начальные значения, для которых истинное значение не равно нулю, смещают результаты потому что начальные оценки нуля только постепенно вымирают. Чего я не понимаю, так это почему градиент в начальной точке не используется для начальных значений этих вещей, а затем для первого обновления параметра. Тогда не было бы загрязнения начальными нулевыми значениями, которые должны быть отменены. Так что не было бы необходимости в коррекции смещения.
Марк Л. Стоун

1
Таким образом, кажется, что вместо того, чтобы иметь специальный код для начальной итерации, авторы решили сделать математически эквивалентную вещь, введя то, что было бы смещением, а затем отменив его. Это добавляет ненужные, хотя и быстрые вычисления на всех итерациях. Делая это, они поддерживали чистоту кода, который выглядит одинаково на всех итерациях. Я бы просто начал с первой оценки градиента, а формула обновления момента градиента начиналась только на 2-й итерации.
Марк Л. Стоун

@ MarkL. Стоун авторы так подчеркивают коррекцию смещения, что мне показалось, что это было новым или важным в их статье. Таким образом, они могли просто не «исправить ошибку» и иметь тот же алгоритм? Если это правда, я не понимаю, почему Адам такой важный оптимизатор или в чем дело. Я всегда думал, что это исправление смещения.
Чарли Паркер

4
Они привносят предвзятость, а затем исправляют ее безо всякой для меня причины. Это похоже на умножение на 2 (о боже, результат смещен), а затем деление на 2, чтобы «исправить» его. Все с введением и удалением смещения кажется ненужным побочным эффектом. Может быть, бумаги не хватило, чтобы проделать это, поэтому они добавили этот шпиль, чтобы сделать его длиннее :) Адам может иметь свои достоинства, но они поступили бы так же, как я предложил. Хотелось бы, чтобы авторы пришли сюда и все объяснили. Может быть, я упускаю какой-то тонкий момент или что-то неправильно понимаю.
Марк Л. Стоун

Ответы:


16

Проблема НЕ исправления смещения
Согласно статье

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

введите описание изображения здесь

Обычно на практике устанавливается намного ближе к 1, чем (как предложено автором , ), поэтому коэффициенты обновления намного меньше, чем .β2β1β2=0.999β1=0.91β2=0.0011β1=0.1

На первом этапе обучения , , термин в обновлении параметра может быть очень большим, если мы будем использовать смещенную оценку напрямую.m1=0.1gtv1=0.001gt2m1/(v1+ϵ)

С другой стороны, при использовании исправленной смещением оценки и , термин становится менее чувствительным к и .m1^=g1v1^=g12mt^/(vt^+ϵ)β1β2

Как исправляется смещение
Алгоритм использует скользящее среднее для оценки первого и второго моментов. Смещенная оценка будет такой: мы начнем с произвольного предположения и постепенно обновим оценку с помощью . Таким образом, очевидно, что на первых нескольких шагах наше скользящее среднее сильно смещено в сторону начального .m0mt=βmt1+(1β)gtm0

Чтобы исправить это, мы можем убрать эффект начального предположения (смещения) из скользящей средней. Например, во время 1, , мы член из и делим его на , что приводит к . Когда , . Полное доказательство приведено в разделе 3 статьи.m1=βm0+(1β)gtβm0m1(1β)m1^=(m1βm0)/(1β)m0=0mt^=mt/(1βt)


Как хорошо прокомментировал Марк Л. Стоун

Это похоже на умножение на 2 (о боже, результат смещен), а затем деление на 2, чтобы «исправить» его.

Почему-то это не совсем эквивалентно

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

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

Например, исправлен первый момент времени 2

m2^=β(1β)g1+(1β)g21β2=βg1+g2β+1

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

m2=βg1+(1β)g2
g1

Действительно ли исправление смещения имеет большое значение?
Так как оно действительно влияет только на первые несколько этапов обучения, это кажется не очень большой проблемой, во многих популярных системах (например, keras , caffe ) применяется только смещенная оценка.

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

Обновление
Если вы развернете правила рекурсивного обновления, по сути, является средневзвешенным значением градиентов, Знаменатель может быть вычислен по формуле геометрической суммы, поэтому он эквивалентен следующему обновлению правило (которое не включает в себя термин смещения) m^t

m^t=βt1g1+βt2g2+...+gtβt1+βt2+...+1

m1g1
пока не сходятся, сделайте (взвешенная сумма) (средневзвешенное значение)
mtβmt+gt
m^t(1β)mt1βt

Следовательно, это может быть сделано без введения смещения и его исправления. Я думаю, что статья помещает это в форму исправления смещения для удобства сравнения с другими алгоритмами (например, RmsProp).


1
Согласны ли вы с моим вторым комментарием по этому вопросу? Для меня это суть. Смысл умножения и деления на 2 должен был быть «более легкой для понимания» аналогией, а не математикой, используемой в данном вопросе. если бы были другие статьи, на которые я не смотрел, которые вводили смещение по тому же механизму, который в случае ADAM кажется полностью предотвратимым, но не исправлял его, то это просто ГЛУПЫ помогло выполнение алгоритма).
Марк Л. Стоун

@ MarkL. Камень да! на самом деле я проголосовал за это, извините за мой английский. и я думаю, что алгоритм, который не исправил смещение, это rmsprop, но в отличие от adam rmsprop отлично работает с уклоном.
dontloo

@dontloo отвечает ли ваш ответ на комментарий Марка Л. Стоуна о том, почему коррекция смещения кажется излишней? (Это, я думаю, очень важно, может быть, даже больше, чем перефразирование того, что говорится в оригинальной статье).
Чарли Паркер

@CharlieParker Вы имеете в виду, почему коррекция смещения является излишней или почему автор заставляет ее выглядеть излишней?
dontloo

@ Dontloo Я не думаю, что авторы делают это излишним. Я думал, что они действительно нуждаются в этом (учитывая их конкретные условия). Однако я подумал, что в этом нет необходимости, учитывая предложение Марка. Я предполагаю, что мой вопрос в разделе комментариев прямо сейчас, действительно ли им нужен срок исправления.
Чарли Паркер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.