Вычисление дисперсии итерации SGD

Вопрос или проблема

Известно, что итерация SGD имеет большую дисперсию.
Учитывая обновление итерации:
$$
w^{k+1} := w^k – \underbrace{\alpha \ g_i(w^k)}_{p^k},
$$

где $w$ – веса модели, а $g_i(w^k)$ – градиент функции потерь, оцененный для образца $i$. Как я могу вычислить дисперсию каждого обновления $p^k$?
Я хотел бы построить график для каждой итерации и изучить его поведение в процессе минимизации.

Вы можете построить график обновления по сравнению с итерацией и проанализировать изменения каждого обновления по мере увеличения числа итераций. Как здесь здесь, где они сравнивают дисперсию стандартного алгоритма градиентного спуска с его стохастической версией.

вставьте описание изображения здесь

Ответ или решение

Для вычисления дисперсии обновления в итерации стохастического градиентного спуска (SGD) необходимо внимательно рассмотреть природу обновления весов модели, заданного формулой:

$$
w^{k+1} := w^k – \underbrace{\alpha \ gi(w^k)}{p^k}.
$$

Здесь (w) представляет собой веса модели, (\alpha) — скорость обучения, а (g_i(w^k)) — градиент функции потерь, вычисленный для конкретного образца (i). Основное преимущество SGD заключается в его способности использовать только один образец (или небольшую партию образцов), что приводит к более быстрой обработке данных по сравнению с полным градиентным спуском (BGD). Однако из-за такой выборки SGD обычно сопровождается высокой дисперсией.

Шаги для вычисления дисперсии обновления (p^k)

  1. Определение (p^k):
    Обновление весов в SGD обозначается как (p^k = -\alpha g_i(w^k)). Важно отметить, что это обновление зависит от конкретного (случайного) образца (или мини-парти).

  2. Компьютирование матожидания градиента:
    Предположим, что у нас есть выборка из (N) образцов, и градиент для образца (i) можно рассматривать как случайную величину. Для вычисления дисперсии нам нужно определить математическое ожидание градиента:
    $$
    \mathbb{E}[g(w^k)] = \frac{1}{N} \sum_{j=1}^N g_j(w^k),
    $$
    где (g_j(w^k)) — это градиент для образца (j).

  3. Вычисление дисперсии (g_i(w^k)):
    Дисперсия градиента для избранного образца (i) может быть найдена следующим образом:
    [
    \text{Var}(g_i(w^k)) = \mathbb{E}[g_i^2(w^k)] – \left(\mathbb{E}[g_i(w^k)]\right)^2.
    ]
    Здесь (\mathbb{E}[g_i^2(w^k)]) — это математическое ожидание квадратов градиента для образца (i), а (\mathbb{E}[g_i(w^k)]) — это уже определенное математическое ожидание градиента.

  4. Дисперсия обновления (p^k):
    Теперь можно вычислить дисперсию обновления (p^k):
    [
    \text{Var}(p^k) = \alpha^2 \text{Var}(g_i(w^k)).
    ]
    Это связано с тем, что (\alpha) — это фиксированное значение, и при вычислении дисперсии константа возводится в квадрат.

  5. Построение графика:
    Для анализа поведения дисперсии обновлений в ходе минимизации функции потерь можно построить график значений дисперсии на каждой итерации. В этом графике по оси (x) будут изображены итерации, а по оси (y) — значения дисперсии (Var(p^k)). Это даст понимание того, как изменяется дисперсия при увеличении числа итераций.

Заключение

Понимание и вычисление дисперсии в стохастическом градиентном спуске критически важно для оценки стабильности и эффективности алгоритма. Высокая дисперсия может приводить к неустойчивым обновлениям весов и замедлению сходимости. С помощью полученных формул можно проанализировать, как различные параметры, такие как скорость обучения и размер выборки, влияют на результаты обновлений, что поможет в тонкой настройке модели.

Оцените материал
Добавить комментарий

Капча загружается...