← Вернуться к списку

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

Краткое содержание

Пакетная нормализация — это слой нормализации, который показал свою эффективность в том, что помогает глубоким сетям обучаться быстрее и с более высокой точностью обобщения. Он нормализует активации предыдущего слоя к среднему $\beta$ и дисперсии $\gamma^2$, чтобы предотвратить такие явления, как взрыв или смещение активаций во время процесса обучения. Более конкретно: $$\hat{x} = \displaystyle \frac{x - \mu_t}{\sqrt{\sigma_t^2 + \epsilon}}\label{1}\tag{1}$$ $$BatchNorm_{\mu_t, \sigma_t}(x) = \gamma \hat{x} + \beta \label{2}\tag{2}$$ где $x$ — входной слой слоя, $\mu_t$, $\sigma_t$ — среднее значение и стандартное отклонение выборки в момент времени $t$, $\epsilon$ — небольшая константа, а $\gamma$ и $\beta$ — обучаемые параметры, чтобы выход не обязательно нормализовался к среднему $0$ и дисперсии $1$, но возможно к другой средней и дисперсии, которая может быть лучше для нейронной сети. Мой вопрос заключается в том, почему BatchNorm сначала стандартизирует входные данные $x$ до $\hat{x}$, прежде чем применять обучаемые параметры $\gamma$ и $\beta$? Не является ли это избыточным?

Полный текст

Почему батч-нормализует с использованием среднего/дисперсии выборки, когда она также изучает параметры для масштабирования среднего/дисперсии? Задать вопрос

Задано 4 года, 11 месяцев назад Изменено сегодня Просмотрено 605 раз

Задано 4 года, 11 месяцев назад

2 $\begingroup$ Батч-нормализация — это слой нормализации, который показал, что помогает глубоким сетям обучаться быстрее и с более высокой точностью обобщения. Она нормализует активации предыдущего слоя к среднему $\beta$ и дисперсии $\gamma^2$, чтобы предотвратить такие вещи, как взрыв или смещение активаций в процессе обучения. Более конкретно: $$\hat{x} = \displaystyle \frac{x - \mu_t}{\sqrt{\sigma_t^2 + \epsilon}}\label{1}\tag{1}$$ $$BatchNorm_{\mu_t, \sigma_t}(x) = \gamma \hat{x} + \beta \label{2}\tag{2}$$ где $x$ — входной слой слоя, $\mu_t$, $\sigma_t$ — среднее и стандартное отклонение выборки в момент времени $t$, $\epsilon$ — небольшая константа, а $\gamma$ и $\beta$ — изученные параметры так, чтобы выход не обязательно нормализовался к среднему 0 и дисперсии 1, но возможно к другой средней и дисперсии, которая может быть лучше для нейронной сети. Мой вопрос заключается в том, почему батч-нормализация сначала нормализует вход $x$ до $\hat{x}$, прежде чем применять изученные параметры $\gamma$ и $\beta$? Не является ли это избыточным? Параметры $\gamma$ и $\beta$ могли бы научиться нормализовать вход самостоятельно, верно? Фактически, по мере обучения $\mu_t$ и $\sigma_t$ обновляются до новых значений $\mu_{t+1}$ и $\sigma_{t+1}$, поэтому изученные параметры в этот момент времени, $\gamma_t$ и $\beta_t$, больше не применимы для момента времени $t+1$, поскольку это включает в себя другой процесс нормализации с другим средним и дисперсией. Таким образом, добавление этого шага нормализации может даже ухудшить сходимость слоя во время обучения, поскольку оно добавляет градиент $BatchNorm_{\mu_{t+1}, \sigma_{t+1}}(x}$ к $BatchNorm_{\mu_t, \sigma_t}(x)$, которые являются двумя разными функциями, верно? Разве не лучше просто сделать так: $$BatchNorm(x) = \gamma x + \beta \label{3}\tag{3}$$ Это упростило бы вычисление градиентов, что сделало бы обучение более быстрым. Батч-нормализация является одним из наиболее успешных достижений глубокого обучения, поэтому я знаю, что мое интуитивное понимание этих вещей неверно — я просто хочу знать, чего мне не хватает. нейронные сети глубокое обучение батч-нормализация нормализация стандартизация Поделиться Улучшить этот вопрос Следить за редактированием 13 января 2021 г., 10:56 nbro 43,2 тыс. 14 14 золотых значков 121 121 серебряный значок 222 222 бронзовый значок задано 13 января 2021 г., 1:18 user3667125 1,710 10 10 серебряных значков 16 16 бронзовых значков $\endgroup$ 1 $\begingroup$ Вторая формула напоминает мне о трюке с репараметризацией (используется, например, в VAE). Не уверен, связано ли это или нет, потому что я пока не знаком с деталями батч-нормализации. Поэтому вы можете изучить эту опцию. $\endgroup$ nbro – nbro 2021-01-13 10:55:52 +00:00 Закомментировано 13 января 2021 г., 10:55 Добавить комментарий | 1 Ответ 1 Отсортировано по: Сбросить к значению по умолчанию Наивысший балл (по умолчанию) Измененная дата (от новых к старым) Создание даты (от старых к новым) 0 $\begingroup$ Теоретически, да и батч-нормализацию можно опустить. Практически, нет. Большинство промежуточных признаков не нормализованы. Например, после 2x2 Max pool нормализованного признака SD и среднее значение значительно смещены к 0,8 и 1,2 исходных значений (я не помню точные цифры). Для того чтобы последующие изученные параметры усвоили эти масштабы и сдвиги, потребуется огромное количество итераций. До наступления поглощения эти карты SD с низким значением подавлены, что снижает общую емкость сети. Другие параметры обучаются на условии, когда некоторые признаки подавляются. Динамика ненормализованных признаков непредсказуема. Батч-Нормализация сначала нормализует x, затем изученные гамма и бета обновляются под тем же масштабом других нормализованных признаков. Поделиться Улучшить этот ответ Следить за ответом Отвечено 30 ноября 2022 г., 2:55 Max Law 1 $\endgroup$ Добавить комментарий