Точное уравнение нормализации батча во время вывода в сверточной нейронной сети

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

Я действительно вижу много ответов на ту же тему. Однако у меня есть часть, которая меня все еще сбивает с толку, поэтому я задаю этот вопрос.

https://stackoverflow.com/questions/38553927/batch-normalization-in-convolutional-neural-network

Во втором с конца абзаце ответа Maverick Meerkat говорится, что среднее значение и стандартное отклонение вычисляются по [m, n_W, n_H], что означает размеры батча, ширину, высоту.

Это, как сказано в оригинальной статье, используется

эффективный мини-батч размером m’ = |B| = m * p q

где m — размер мини-батча, p x q — размер карты признаков в случае сверточных сетей.

p x q как размер карты признаков означает, что p, q — это ширина и размер колонки тензора, к которому применяется batchnorm.

Но что я хочу подтвердить, так это уравнение для E[x] и Var[x], которые являются средним значением и дисперсией, используемыми во время вывода.

Уравнения в оригинальной статье: E[x] = E_B[μ_B] и Var[x] = m/m−1 E_B[σ^2_B]

Очевидно, что мы будем вычислять μ_B и σ^2_B с помощью 3d тензора в диапазоне эффективного мини-батча = размер мини-батча x ширина тензора x высота тензора.

Таким образом, длина векторов μ_B и σ^2_B будет равна глубине тензора. Количество векторов μ_B и σ^2_B будет равно (размер эпохи)/(размер мини-батча), что означает, что для всего обучающего набора данных (эпоха) мы будем вычислять μ_B и σ^2_B для каждого мини-батча.

Таким образом

E[x] = E_B[μ_B] = (Сумма μ_B) / глубина

и

Var[x] = m/m−1 E_B[σ^2_B] = m / m-1 (СУММА σ^2_B) / глубина

где сумма варьируется от [0, (размер эпохи)/(размер мини-батча)).

Проблема заключается в том, как мы должны интерпретировать m в определении для Var[x]. В статье говорится, что они используют “эффективный размер мини-батча (m’)” вместо размера батча (m) и сказано

Алгоритм 2 модифицирован аналогично, так что
во время вывода BN-преобразование применяет ту же линейную
трансформацию к каждой активации в данном карте признаков.

в оригинальной статье.

ВОПРОС:

Однако из-за моего ограниченного знания математики я не могу подтвердить, следует ли интерпретировать Var[x] = m/m−1 E_B[σ^2_B] как Var[x] = m’/m’−1 E_B[σ^2_B] для m’ = m * p * q.

В оригинальной статье говорилось, что Var[x] = m/m−1 E_B[σ^2_B] является “несмещенной оценкой дисперсии” в случае для 1d вектора x. Надеюсь, кто-то сможет подтвердить, действительно ли Var[x] = m’/m’−1 E_B[σ^2_B] является несмещенной оценкой дисперсии в случае 3d тензора свёрточной сети, где m’ — эффективный размер мини-батча.

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

Вопрос, связанный с нормализацией батчей (Batch Normalization) в свёрточных нейронных сетях, действительно может вызывать замешательство, особенно при рассмотрении различных подходов к вычислению среднего значения и дисперсии во время инференса. Чтобы помочь вам разобраться в этих аспектах, давайте детально разберем, как выполняется нормализация батчей, и рассмотрим, какие математические теории и практические примеры существуют для решения данного вопроса.

Теория

Нормализация батча была представлена в статье "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift" Альтера и др. В основе этого метода лежит идея уменьшения внутреннего "сдвига коварианты", что позволяет улучшить скорость обучения и стабилизировать процесс оптимизации.

Во время тренировки сети нормализация батчей выполняется следующим образом: для каждой функции активации вычисляется среднее значение и дисперсия по измерению мини-батча. Формулы для вычисления во время тренировок выглядят следующим образом:

  1. Среднее значение (μ_B):
    [
    \muB = \frac{1}{m \cdot p \cdot q} \sum{i=1}^{m \cdot p \cdot q} x_i
    ]
    где m — размер мини-батча, p и q — размеры карты признаков (ширина и высота соответственно).

  2. Дисперсия (σ²_B):
    [
    \sigma^2B = \frac{1}{m \cdot p \cdot q} \sum{i=1}^{m \cdot p \cdot q} (x_i – \mu_B)^2
    ]

Вопрос о том, как эти параметры используются во время инференса, включая обсуждение термина "эффективный размер батча" (m’ = |B| = m \cdot p \cdot q), требует дополнительного объяснения.

Пример

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

  1. Ожидаемое значение (E[x]):
    [
    E[x] = \frac{1}{N} \sum_{B} \mu_B
    ]
    где N — общее количество батчей, обработанных за время обучения.

  2. Дисперсия (Var[x]):
    [
    Var[x] = \frac{m’}{m’-1} \cdot \frac{1}{N} \sum_{B} \sigma^2_B
    ]

Вопрос заключается в корректном понимании m’ в процессе инференса, и подходит ли использование m’ вместо m как "эффективного размера батча". Исходя из теории, m’ используется как более универсальная форма для корректировки дисперсий, что позволяет применить вычисления на многомерных тензорах, каковыми являются карты признаков свёрточных сетей.

Применение

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

Для уверенности в том, что Var[x] = m’/m’-1 E_B[σ^2_B] дейстительно является несмещенной оценкой дисперсии в случае использования многомерных тензоров, можно провести эмпирическое тестирование на различных наборах данных. Это поможет вам корректно оценить, насколько этот подход способствует улучшению производительности сети в реальных условиях.

Таким образом, подход с использованием эффективного размера батча оправдан и применим как теоретически, так и практически, что позволяет достигать более высоких результатов в области машинного обучения и нейронных сетей.

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

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