Батч-нормализация
Идея метода
Классическим подходом к повышению качества прогнозов моделей является нормализация признаков, т.е. приведение признаков к одинаковой шкале. Самым популярным методом нормализации является стандартизация, приводящая каждый признак со средним и стандартным отклонением к среднему ноль и единичной дисперсии:
Это позволяет обеспечить равный вклад признаков в прогноз, а также ускоряет настройку градиентными методами, поскольку делает линии уровня функции потерь менее вытянутыми и более скруглёнными, как показано ниже:
Батч-нормализация (batch-normalization, [1]) позволяет ускорить настройку сети за счёт нормализации не только входных признаков, но и активаций промежуточного слоя. Слой батч-нормализации может включаться за входным или скрытым слоем с выходами .
Слой батч-нормализации принимает на вход активации предыдущего слоя и их линейно перемасштабирует таким образом, чтобы они имели средние и стандартные отклонения :
где
-
- средние значения активаций ;
-
- стандартные отклонения активаций ;
-
- малая константа, призванная исключить деление на ноль.
Параметры и настраиваются вместе с остальными весами нейросети. Если для минимизации потерь действительно необходима стандартизация, то они настроятся на значения 0 и 1 соответственно. Если же стандартизация не нужна, то они настроятся на значения средних и стандартных отклонений соответственно, и по слой батч-нормализации будет действовать как тождеств енное преобразование. В общем же случае эти параметры будут принимать некоторые промежуточные значения.
В линейном слое, применяемом к батч-нормализованным входам, необязательно использовать смещения (bias), поскольку нейроны уже смещаются на выучиваемые смещения .
Батч-нормализация будет по-разному действовать при обучении и применении нейросети.
Обучение нейросети
Если при стандартизации признаков мы могли предварительно вычислить средние и стандартные отклонения признаков, то для активаций промежуточных нейронов уже нет, поскольку при настройке сети веса меняются, что оказывает влияние и на распределение всех последующих нейронов. Поэтому на каждом шаге обновления весов и перевычисляются как выборочные средние и станадртные отклонения нейронов по текущему мини-батчу, как показано ниже:
Для повышения точности оценки средних и стандартных отклонений (и, как следствие, повышения устойчивости батч-нормализации) рекомендуется настраивать нейросеть с повышенным размером мини-батчей.
Применение нейросети
Во время применения уже настроенной сети мы могли бы честно вычислить средние и стандартные отклонения нейронов, поскольку веса сети зафиксированы. Однако это предполагает дополнительный проход по обучающей выборке. На практике, чтобы его не делать, во время обучения вычисляются не только средние и стандартные отклонения по текущему мини-батчу, но и их сглаженные версии, используя экспоненциал ьное сглаживание. В результате, к концу обучения, мы просто подставляем вместо и их сглаженные значения.
Обоснование метода
Если поместить батч-нормализацию перед функцией нелинейности, то при соответствующей инициализации параметров и она будет приводить аргумент нелинейности в регион её существенных изменений (изгиб в функциях ReLU, LeakyReLU, tangh).
Также батч-нормализация ускоряет настройку сети в целом за счёт ускорения настройки её более поздних слоёв. Как мы знаем, на каждой итерации оптимизации все веса сети обновляются одновременно. Но в контексте обновлённых весов более ранних слоёв распределение активаций более поздних слоёв поменялось и обновления весов для поздних слоёв перестаёт быть актуальным! В итоге настройка сети замедляется, поскольку оптимизатору необходимо вначале настроить более ранние слои, и, когда они почти перестанут меняться, осуществлять уже пре дметную настройку зависящих от них более поздних слоёв.
Батч-нормализация упрощает одновременную настройку более ранних и более поздних слоёв за счёт того, что несмотря на то, что входы поздних слоёв меняются от итерации к итерации, но что-то в них остаётся неизменным, а именно среднее и стандартное отклонение. В результате обновления весов более поздних слоёв становятся более актуальными.
Батч-нормализация и прореживание сети
Если на параметры наложить регуляризацию, то часть мультипликаторов начнёт зануляться, что будет приводить к автоматическому исключению лишних нейронов и упрощению модели, снижая расходы на хранение сети и построение прогнозов.
Литература
- Ioffe S., Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift //International conference on machine learning. – pmlr, 2015. – С. 448-456.