Перейти к основному содержимому

Мониторинг сходимости

Для анализа сходимости метода стохастического градиентного спуска важно смотреть на динамику потерь на каждой итерации алгоритма. Особенно это важно при долгой и трудоёмкой настройке нейросетей, чтобы на ранней стадии оптимизации увидеть некорректную настройку определённых параметров. Поскольку в стохастическом градиентном спуске сдвиг весов производится на антиградиент по случайному минибатчу объектов, то и величина этого сдвига будет подвержена случайным колебаниям, как в примере ниже:

smoothed-loss.png

Для большей наглядности нам хотелось бы отслеживать сглаженную версию этой динамики, показанную зелёной кривой. Для этого существуют два подхода - скользящее среднее и экспоненциальное сглаживание. Оба метода на вход принимают зашумлённый временной ряд ztz_t (в нашем случае - потерь на объектах минибатча), а на выходе выдают его сглаженную версию sts_t, причем сглаживание осуществляется динамически в каждый момент времени.

Скользящее среднее

Идея скользящего среднего заключается в выдаче усреднения по KK последним наблюдениям:

st=1Ki=tK+1tzts_t=\frac{1}{K}\sum_{i=t-K+1}^t z_t

Это среднее можно эффективно пересчитывать по формуле

st:=st1+ztKztKKs_t:=s_{t-1}+\frac{z_t}{K}-\frac{z_{t-K}}{K}

Вначале, пока KK наблюдений еще не накоплены, нужно усреднять по всем располагаемым наблюдениям.

Экспоненциальное сглаживание

Экспоненциальное сглаживание вычисляет сглаженную версию временного ряда по следующей формуле:

{s1=z1st=(1α)zt+αst1\begin{cases} s_{1}=z_{1} & \\ s_{t}=(1-\alpha)z_{t}+\alpha s_{t-1} & \end{cases}

Гиперпараметр α[0,1)\alpha\in [0,1) управляет степенью сглаживания.

Как именно α\alpha влияет на результат?

Увеличение α\alpha приводит к более слабому учёту новых данных и к более сильному - исторических. Поэтому сглаженный временной ряд sts_t будет получаться более гладким. Уменьшение α\alpha уменьшает сглаживание. В частности, при α=0\alpha=0, сглаженный ряд совпадает с исходным.

Если рекуррентно переписать зависимость sts_t только от zt,zt1,zt2,...z_t,z_{t-1},z_{t-2},..., то получим, что экспоненциальное сглаживание выдаёт взвешенное усреднение по всем прошлым наблюдениям с экспоненциально убывающими весами:

st=(1α)(zt+αzt1+α2zt2+α3zt3+...)s_t = (1-\alpha)(z_{t}+\alpha z_{t-1}+\alpha^{2}z_{t-2}+\alpha^{3}z_{t-3}+...)

Более детально об экспоненциальном сглаживании и его связи со скользящим средним можно прочитать в [1].

Литература

  1. Wikipedia: exponential smoothing.