Алгоритм 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} \]