Я читал об оптимизаторе Адама для глубокого обучения и натолкнулся на следующее предложение в новой книге Бегнио, Гудфеллоу и Кортвилла « Глубокое обучение »:
Адам включает поправки смещения к оценкам как моментов первого порядка (члена импульса), так и (нецентрированных) моментов второго порядка, чтобы учесть их инициализацию в начале координат.
Кажется, что основная причина включения этих поправочных терминов смещения состоит в том, что каким-то образом он устраняет смещение инициализации и .
- Я не уверен на 100%, что это значит, но мне кажется, что это, вероятно, означает, что 1-й и 2-й моменты начинаются с нуля, и каким-то образом начинать его с нуля наклоняет значения ближе к нулю несправедливым (или полезным) способом для обучения ?
- Хотя я хотел бы знать, что это значит немного точнее и как это вредит обучению. В частности, какие преимущества дает смещение оптимизатора с точки зрения оптимизации?
- Как это помогает тренировать модели глубокого обучения?
- Кроме того, что это означает, когда это беспристрастно? Мне знакомо, что означает объективное стандартное отклонение, но мне не ясно, что это значит в этом контексте.
- Действительно ли исправление смещения имеет большое значение, или это что-то преувеличено в статье оптимизатора Адама?
Просто чтобы люди знали, что я очень старался понять оригинальную статью, но я очень мало читал и перечитывал оригинальную статью. Я предполагаю, что на некоторые из этих вопросов можно ответить там, но я не могу разобрать ответы.
Ответы:
Проблема НЕ исправления смещения
Согласно статье
Обычно на практике устанавливается намного ближе к 1, чем (как предложено автором , ), поэтому коэффициенты обновления намного меньше, чем .β2 β1 β2=0.999 β1=0.9 1−β2=0.001 1−β1=0.1
На первом этапе обучения , , термин в обновлении параметра может быть очень большим, если мы будем использовать смещенную оценку напрямую.m1=0.1gt v1=0.001g2t m1/(v1−−√+ϵ)
С другой стороны, при использовании исправленной смещением оценки и , термин становится менее чувствительным к и .m1^=g1 v1^=g21 mt^/(vt^−−√+ϵ) β1 β2
Как исправляется смещениеm0 mt=βmt−1+(1−β)gt m0
Алгоритм использует скользящее среднее для оценки первого и второго моментов. Смещенная оценка будет такой: мы начнем с произвольного предположения и постепенно обновим оценку с помощью . Таким образом, очевидно, что на первых нескольких шагах наше скользящее среднее сильно смещено в сторону начального .
Чтобы исправить это, мы можем убрать эффект начального предположения (смещения) из скользящей средней. Например, во время 1, , мы член из и делим его на , что приводит к . Когда , . Полное доказательство приведено в разделе 3 статьи.m1=βm0+(1−β)gt βm0 m1 (1−β) m1^=(m1−βm0)/(1−β) m0=0 mt^=mt/(1−βt)
Как хорошо прокомментировал Марк Л. Стоун
Почему-то это не совсем эквивалентно
(конечно, его можно преобразовать в ту же форму, изменив правило обновления (см. обновление ответа), и я считаю, что эта строка в основном нацелена на то, чтобы показать ненужность введения смещения, но, возможно, стоит заметить разницу)
Например, исправлен первый момент времени 2
Если в качестве начального значения используется с тем же правилом обновления, который вместо этого в сторону на первых нескольких шагах.g1 m2=βg1+(1−β)g2 g1
Действительно ли исправление смещения имеет большое значение?
Так как оно действительно влияет только на первые несколько этапов обучения, это кажется не очень большой проблемой, во многих популярных системах (например, keras , caffe ) применяется только смещенная оценка.
По моему опыту, предвзятая оценка иногда приводит к нежелательным ситуациям, когда потери не уменьшатся (я не проверил это полностью, поэтому я не совсем уверен, связано ли это с предвзятой оценкой или чем-то еще), и уловка Я использую больший чтобы смягчить начальный размер шага.ϵ
Обновлениеm^t
m^t=βt−1g1+βt−2g2+...+gtβt−1+βt−2+...+1
Если вы развернете правила рекурсивного обновления, по сути, является средневзвешенным значением градиентов, Знаменатель может быть вычислен по формуле геометрической суммы, поэтому он эквивалентен следующему обновлению правило (которое не включает в себя термин смещения)
пока не сходятся, сделайте (взвешенная сумма) (средневзвешенное значение)
Следовательно, это может быть сделано без введения смещения и его исправления. Я думаю, что статья помещает это в форму исправления смещения для удобства сравнения с другими алгоритмами (например, RmsProp).
источник