Алгоритм RMSprop очень похож на Gradient Descent with momentum, с некоторыми отличиями.

На каждой итерации \(t\) градиентного спуска происходит вычисление произоводной для текущей порции данных (mini-batch), однако отличие от GD with momentum состоит в том, что производная возводится в квадрат, и это поэлементная операция:

Для параметра \(w\):

\[S_{dw}=\beta S_{dw}+(1-\beta)\bigg(\frac{\partial\mathcal{L}}{\partial w}\bigg)^2\]

и точно также для параметра \(b\):

\[S_{db}=\beta S_{db}+(1-\beta)\bigg(\frac{\partial\mathcal{L}}{\partial b}\bigg)^2\]

Затем происходит обновление параметра \(w\) по немного более сложной, чем для GD with momentum, схеме:

\[ w:= w-\alpha \frac{\frac{\partial\mathcal{L}}{\partial w}}{\sqrt{S_{dw}}} \]

и также параметра \(b\):

\[ b:= b-\alpha \frac{\frac{\partial\mathcal{L}}{\partial b}}{\sqrt{S_{db}}} \]

Для того, чтобы избежать деления на ноль, в знаменатель дроби, для стабильности, добавляют параметр \(\varepsilon\), с очень маленьким значением, например 1e-8, для параметра \(w\):

\[ w:= w-\alpha \frac{\frac{\partial\mathcal{L}}{\partial w}}{\sqrt{S_{dw}} + \varepsilon} \]

и для параметра \(b\):

\[ b:= b-\alpha \frac{\frac{\partial\mathcal{L}}{\partial b}}{\sqrt{S_{db}}+ \varepsilon} \]