EssayAI
Блог
Блог
Математика и алгоритмы

Оптимизатор RMSprop: формула и параметры

19 июня 2026Время чтения: 8 минут
#оптимизатор rmsprop#градиентный спуск#обучение нейросети#learning rate#машинное обучение
Оптимизатор RMSprop: формула и параметры

Оптимизатор RMSprop (Root Mean Square Propagation) предложил Джеффри Хинтон в 2012 году прямо в слайдах курса по нейросетям на Coursera - формальной статьи у метода так и не вышло, но он быстро стал рабочей лошадкой для рекуррентных сетей и нестационарных задач. Идея простая: вместо одного общего шага для всех параметров RMSprop держит для каждого параметра скользящее среднее квадратов его градиента и делит шаг на корень из этого среднего. Параметры с большими градиентами получают меньший шаг, с малыми - больший. Ниже разберём формулу, смысл коэффициента затухания и то, чем RMSprop отличается от своего предшественника AdaGrad и наследника Adam. Чтобы сразу увидеть, как меняется траектория спуска, покрутите слайдеры в калькуляторе:

Формула RMSprop: две строки

RMSprop на каждом шаге tt делает два вычисления. Пусть gtg_t - градиент функции потерь по параметру θ\theta в момент tt. Сначала обновляется скользящее среднее квадратов градиента:

E[g2]t=ρE[g2]t1+(1ρ)gt2E[g^2]_t = \rho\, E[g^2]_{t-1} + (1-\rho)\, g_t^2

Затем сам параметр сдвигается на нормированный шаг:

θt=θt1αE[g2]t+εgt\theta_t = \theta_{t-1} - \frac{\alpha}{\sqrt{E[g^2]_t} + \varepsilon}\, g_t

Здесь E[g2]tE[g^2]_t - экспоненциально убывающее среднее квадратов градиента (накопитель «типичного масштаба»), α\alpha - скорость обучения, ρ\rho - коэффициент затухания (обычно 0.90.9), а ε108\varepsilon \approx 10^{-8} защищает от деления на нуль. Ключевой множитель α/(E[g2]t+ε)\alpha / (\sqrt{E[g^2]_t} + \varepsilon) - это эффективный шаг: там, где градиент стабильно большой, знаменатель тоже большой, и шаг автоматически уменьшается. По направлениям, где градиент мал, знаменатель мал, и шаг растёт.

Скользящее среднее квадратов градиента: RMSprop забывает старые градиенты с темпом rho, AdaGrad копит их без затухания, поэтому его шаг неизбежно уходит к нулю
Скользящее среднее квадратов градиента: RMSprop забывает старые градиенты с темпом rho, AdaGrad копит их без затухания, поэтому его шаг неизбежно уходит к нулю

Зачем нужно скользящее среднее

Главная задача RMSprop - сделать шаг масштабно-инвариантным. Если в одном направлении градиент стабильно равен 1010, а в другом 0.10.1, то обычный SGD с общим шагом либо расходится по крутому направлению, либо ползёт по пологому. RMSprop нормирует: эффективный шаг по крутому направлению уменьшается в E[g2]10\sqrt{E[g^2]} \approx 10 раз, а по пологому почти не меняется. В результате траектория идёт прямее ко дну «оврага», а не зигзагом поперёк него.

Слово «среднее» здесь важно. RMSprop не берёт текущий квадрат градиента gt2g_t^2 напрямую (это было бы слишком шумно от шага к шагу), а сглаживает его экспоненциальным средним с памятью на несколько десятков шагов. При ρ=0.9\rho = 0.9 «период полузабывания» составляет примерно 77 шагов: что было раньше, быстро теряет вес. Это и делает метод устойчивым к шуму мини-батчей.

Коэффициент rho: что он регулирует

ρ\rho управляет «памятью» масштаба - насколько быстро E[g2]tE[g^2]_t забывает старые квадраты градиентов. Дефолт ρ=0.9\rho = 0.9 работает для большинства задач.

При ρ1\rho \to 1 среднее меняется очень медленно: эффективный шаг становится почти постоянным, метод приближается к обычному SGD с фиксированным масштабом. Это полезно, когда масштаб градиента стабилен и резкие пересчёты только вредят. При ρ0\rho \to 0 среднее практически равно текущему квадрату gt2g_t^2: метод мгновенно реагирует на каждое изменение масштаба, но становится шумным и может дёргаться. Промежуток 0.90.90.990.99 - разумный рабочий диапазон; на сильно нестационарных потерях (например, в рекуррентных сетях) иногда берут ρ=0.95\rho = 0.95.

Скорость обучения α\alpha задаёт общий масштаб шагов. Хинтон рекомендовал α=0.001\alpha = 0.001, но из-за нормировки RMSprop менее чувствителен к выбору α\alpha, чем SGD: знаменатель сам подстраивает эффективный шаг. Если обучение расходится - уменьшайте α\alpha на порядок; если сходится слишком медленно - пробуйте 0.0030.003 или 0.010.01.

RMSprop против AdaGrad

RMSprop вырос как прямая починка AdaGrad. AdaGrad накапливает сумму квадратов градиентов с самого начала обучения:

Gt=i=1tgi2,θt=θt1αGt+εgt.G_t = \sum_{i=1}^{t} g_i^2, \qquad \theta_t = \theta_{t-1} - \frac{\alpha}{\sqrt{G_t} + \varepsilon}\, g_t.

Эта сумма монотонно растёт - значит, знаменатель только увеличивается, и эффективный шаг неизбежно стремится к нулю. На коротких задачах это даже полезно, но на длинных обучениях AdaGrad «замораживается»: шаг становится настолько мал, что сеть перестаёт учиться задолго до сходимости. Этот эффект хорошо виден на графике эффективного шага в калькуляторе выше - красная пунктирная кривая (AdaGrad) уходит вниз, синяя (RMSprop) выходит на плато.

RMSprop заменил растущую сумму экспоненциально убывающим средним:

E[g2]t=ρE[g2]t1+(1ρ)gt2.E[g^2]_t = \rho\, E[g^2]_{t-1} + (1-\rho)\, g_t^2.

Старые градиенты теперь забываются, и накопитель остаётся конечным. Поэтому эффективный шаг не уходит к нулю, и метод применим на сколь угодно длинных обучениях. По сути это единственное, но решающее различие: AdaGrad помнит всё, RMSprop - только недавнее. Похожую идею «адаптивного шага по параметру» развивает и оптимизатор Adam, только он добавляет к ней ещё инерцию направления.

Траектория спуска в овраге: SGD осциллирует поперёк крутого склона, RMSprop за счёт нормировки шага идёт прямее ко дну долины к минимуму
Траектория спуска в овраге: SGD осциллирует поперёк крутого склона, RMSprop за счёт нормировки шага идёт прямее ко дну долины к минимуму

RMSprop против Adam

Adam (Adaptive Moment Estimation) можно прочитать как «RMSprop плюс импульс плюс коррекция смещения». RMSprop держит только второй момент - скользящее среднее квадратов E[g2]tE[g^2]_t. Adam добавляет к нему первый момент mtm_t (скользящее среднее самого градиента, аналог импульса в momentum-SGD) и bias correction - деление на (1ρt)(1 - \rho^t), чтобы скомпенсировать заниженные значения средних на первых шагах, когда история ещё пуста.

mt=β1mt1+(1β1)gt,vt=β2vt1+(1β2)gt2.m_t = \beta_1 m_{t-1} + (1-\beta_1)\, g_t, \qquad v_t = \beta_2 v_{t-1} + (1-\beta_2)\, g_t^2.

Здесь vtv_t - это в точности E[g2]tE[g^2]_t из RMSprop, а β2\beta_2 играет роль ρ\rho. То есть если в Adam отключить первый момент (β1=0\beta_1 = 0) и убрать bias correction, останется ровно RMSprop. На практике первый момент даёт более гладкую сходимость, поэтому Adam чаще выбирают по умолчанию. Но RMSprop проще, имеет на один гиперпараметр меньше и до сих пор популярен в рекуррентных сетях и обучении с подкреплением, где «лишняя» инерция Adam иногда мешает.

Стоит помнить, что RMSprop не содержит коррекции смещения. На первых шагах E[g2]tE[g^2]_t занижено (стартует с нуля), поэтому знаменатель меньше истинного, а эффективный шаг - больше. Обычно это безвредно: пара завышенных шагов в начале сглаживается, но на чувствительных задачах помогает короткий warmup скорости обучения.

Когда применять RMSprop

RMSprop особенно хорош там, где масштаб градиента сильно меняется во времени - в рекуррентных сетях (LSTM, GRU) и в задачах обучения с подкреплением, где распределение данных нестационарно по самой природе обучения. В этих сценариях экспоненциальное среднее «следит» за текущим масштабом и не даёт шагу ни взорваться, ни замёрзнуть.

Для обычных свёрточных сетей и трансформеров чаще берут AdamW, но RMSprop остаётся хорошим запасным вариантом: меньше гиперпараметров - меньше риск ошибиться с настройкой. Если Adam по какой-то причине нестабилен на вашей задаче, перейти на RMSprop - дешёвый диагностический шаг: вы убираете первый момент и смотрите, не в нём ли была проблема.

Частые ошибки

  • Путают ρ\rho с learning rate. α\alpha задаёт общий масштаб шага, ρ\rho - скорость забывания старых квадратов градиента. Это разные ручки: уменьшив ρ\rho вместо α\alpha, вы получите не меньший шаг, а более дёрганый.
  • Берут слишком маленький ρ\rho. При ρ=0.5\rho = 0.5 среднее почти равно текущему квадрату градиента, нормировка становится шумной, и траектория дёргается. Начинайте с 0.90.9.
  • Ожидают, что RMSprop сам подберёт α\alpha. Нормировка снижает чувствительность к α\alpha, но не отменяет её: при α=1\alpha = 1 метод всё равно разойдётся.
  • Забывают ε\varepsilon при самостоятельной реализации. Без него на первых шагах, когда E[g2]t0E[g^2]_t \approx 0, происходит деление почти на нуль и шаг взрывается.
  • Используют RMSprop там, где давно лучше работает AdamW. Для трансформеров и больших языковых моделей правильный weight decay из AdamW обычно важнее, чем экономия на одном гиперпараметре.

FAQ

Чем RMSprop отличается от AdaGrad? AdaGrad копит сумму всех квадратов градиентов с начала обучения, поэтому знаменатель растёт и эффективный шаг затухает к нулю. RMSprop заменяет сумму экспоненциально убывающим средним с коэффициентом ρ\rho: старое забывается, накопитель остаётся конечным, и шаг не замораживается даже на длинных обучениях.

Какое значение rho выбрать? Дефолт ρ=0.9\rho = 0.9 подходит для большинства задач. Для сильно нестационарных потерь (рекуррентные сети, RL) иногда берут 0.950.950.990.99, чтобы среднее менялось плавнее. Значения ниже 0.90.9 делают нормировку шумной и обычно не рекомендуются.

RMSprop или Adam - что лучше? Adam - это RMSprop с добавленным первым моментом (импульсом) и bias correction, поэтому он чаще сходится глаже и берётся по умолчанию. RMSprop проще, имеет меньше гиперпараметров и хорошо себя ведёт в рекуррентных сетях и обучении с подкреплением; если Adam нестабилен, RMSprop - разумная альтернатива.

Коротко

RMSprop держит для каждого параметра скользящее среднее квадратов градиента E[g2]tE[g^2]_t и делит шаг на корень из него, получая адаптивный масштабно-инвариантный эффективный шаг. Коэффициент ρ=0.9\rho = 0.9 задаёт память накопителя, α=0.001\alpha = 0.001 - общий масштаб. От AdaGrad метод отличается заменой растущей суммы на затухающее среднее (шаг не замораживается), от Adam - отсутствием первого момента и bias correction (на один-два механизма проще). RMSprop особенно уместен в рекуррентных сетях и обучении с подкреплением, где масштаб градиента нестационарен.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также