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

Нормализация функций

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

Объяснение этого обычно заключается в представлении примера, где два признака, скажем, x1 и x2, имеют очень разные диапазоны значений (например, x1 ∈ [1, 10], x2 ∈ [10.000, 20.000]). Это приводит к тому, что контурный график градиентного спуска имеет вытянутую форму, а его ось w1 намного длиннее, чем ось w2.

For the input layer:
z1 = x1・w1 + b
z2 = x2・w2 + b
a1 = g(z1)
a2 = g(z2)
with w1, w2, and b being the parameters and a1, a2 the output activations of the layer.

При использовании градиентного спуска для оптимизации потерь его путь к точке минимума, расположенной в центре контура, будет довольно извилистым. Он колеблется в направлении w1, учитывая его больший градиент, что приводит к снижению скорости обучения.

При нормализации признаков x1 и x2 вынуждены иметь значения в диапазоне от [0, 1], а контур адаптируется к более округлой форме, поэтому у нас не будет проблемы, описанной выше.

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

Пакетная нормализация

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

Поскольку нормализация признаков устраняет колебания во время обучения, пакетная нормализация решает проблему сдвига ковариации.

Рассмотрим случай обучения классификатора изображений для идентификации изображений кошек, как объясняется в курсе глубокого обучения на Coursera профессора Эндрю Янга. Если мы обучаем модель только изображениями черных кошек, мы не должны ожидать хороших результатов при тестировании с помощью изображения цветных кошек. И тренировочные, и тестовые изображения — это изображения кошек, но их распределение действительно отличается. Обученная модель изучила распределение изображений черных кошек, но не изображений цветных кошек.

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

Фактическая реализация пакетной нормализации делает больше, чем принудительное приведение активаций к нулевому среднему значению и отклонению 1. Хотя эта нормализация может применяться к выходным данным до или после активации, чаще используются нормализации, применяемые к линейным комбинациям Z.

Как показано выше, мы начинаем процесс с вычисления среднего значения и стандартного отклонения выходных данных Z. Затем каждое значение Z нормализуется, чтобы иметь нулевое среднее значение и стандартное отклонение, равное единице. Но что, если это конкретное распределение не является оптимальным для работы следующего уровня? Параметры 𝜸 и 𝜷 предназначены для решения этой проблемы. Это недавно введенные параметры для изучения лучших распределений для следующего слоя.