В этом уроке мы детально изучим слои нормализации.
Самая популярная версия слоя нормализации - слой нормализации "по батчу" (batch-norm слой).
Рассмотрим его работу в наиболее простом случае, когда на вход подается батч из одномерных векторов:
На вход подается батч одномерных векторов:
где j индекс вектора внутри батча, i - номер компоненты.
Для текущего батча:
По каждой компоненте входа вычисляются мат.ожидание и дисперсия:
Вход нормируется по формуле:
Эпсилон необходим для случая нулевой дисперсии.
Нормированный вход преобразуется следующим образом:
Где Гамма и Бета - обучаемые параметры слоя. Обратите внимание, Гамма и Бета - вектора такой же длины, как инстансы входа.
Их можно фиксировать, например, простейший случай - Бета принимается равным нулевому вектору, Гамма - вектору из единиц.
Если же взять Гамму равным знаменателю дроби из формулы для Z, а Бету равным мат.ожиданию, то слой вернет входной тензор без изменений. То есть, слой будет эквивалентен тождественной функции.
Таким образом, параметры Бета и Гамма позволяют не терять входящию в слой информацию, и одновременно с этим, батч-норм слой нормализует вход. Последнее ускоряет сходимость параметров сети, а в некоторых случаях без нормализации добиться сходимости сети крайне сложно.
Итоговая формула преобразования входа:
В этом уроке мы будем двигаться по следующему плану:
Вначале реализуем train-этап батч-нормализации для батча из одномерных векторов с нулевым Бета и единичным Гамма.
Затем добавим возможность задания параметров Бета и Гамма.
После этого добавим eval-этап использования слоя.
И последним шагом по батч-нормализации реализуем train-этап слоя батч-нормализации для батча из многоканальных двумерных тензоров с нулевым Бета и единичным Гамма.
После батч-нормализации вас ждут шаги по другим видам нормализации.

К сожалению, у нас пока нет статистики ответов на данный вопрос, но мы работаем над этим.