Использует ли BatchNormalization скользящую среднюю по партиям или только по партии? и как использовать скользящую среднюю по партиям? - PullRequest
0 голосов
/ 29 февраля 2020

Как видно из названия, мне интересно, происходит ли нормализация каждой мини-партии только на основе собственной статистики этой мини-партии или использует ли скользящие средние / статистику по мини-партиям ( во время обучения )?

Кроме того, есть ли способ заставить нормализацию пакетов использовать скользящие средние / статистику по партиям?

Мотивация заключается в том, что из-за ограничений памяти размер моего пакета довольно мал.

Заранее спасибо.

1 Ответ

1 голос
/ 06 марта 2020

Нормализация каждой мини-партии происходит только на основе собственной статистики этой мини-партии.

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

Тогда почему бы нам не использовать скользящее среднее во время обучения? Ответ связан с тем, что во время тренировок нам необходимо выполнять обратное распространение. По сути, когда мы используем некоторую статистику для нормализации данных, нам нужно также распространять эту статистику. Если мы используем статистику активаций из предыдущих мини-пакетов для нормализации данных, нам необходимо учитывать, как предыдущий слой влиял на эту статистику во время обратного распространения. Если мы игнорируем эти взаимодействия, мы можем потенциально заставить предыдущие слои продолжать увеличивать величину их активаций, даже если это не влияет на потери. Это означает, что если мы используем скользящее среднее, нам нужно будет сохранять данные всех предыдущих мини-пакетов во время обучения, что слишком дорого.

В пакетной перенормировке авторы предлагают использовать скользящее среднее также принимая во внимание влияние предыдущих слоев на статистику. Их метод - в своей основе - простая репараметризация нормализации с помощью скользящей средней. Если мы обозначим среднее и стандартное отклонение скользящего среднего значения как 'mu' и 'sigma', а среднее и стандартное отклонение мини-партии как mu_B и sigma_B, уравнение перенормировки партии будет:

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

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

Пожалуйста, обратитесь эта ссылка для уточнения

...