Статья взята из публичного аккаунта WeChat [Machine Learning Alchemy]. Следуйте ответу [Добавить группу], чтобы присоединиться к группе обмена новичками ИИ.
На самом деле, о слое BN я уже рассказывал в предыдущей статье «Градиентный взрыв», но поскольку я много раз спрашивал об этом во время интервью, вот более подробное объяснение.
Внутренний ковариатный сдвиг (ICS)
Автор оригинальной статьи о пакетной нормализации дал более стандартизированное определение внутреннего ковариатного сдвига:В процессе глубокого обучения сети процесс изменения распределения данных внутренних узлов за счет изменения параметров в сети называется Internal Covariate Shift.
Вот простое математическое определение: для полностью связанной сети математическое выражение i-го уровня может быть представлено как:
- Первая формула представляет собой простое линейное преобразование;
- Вторая формула представляет собой процесс выражения функции активации.
【Как понять проблемы с ICS】Мы знаем, что по мере прохождения градиентного спуска параметры каждого слояпостоянно обновляются, а это значит, чтоРаспределение также постоянно меняется, так чтораспределение изменилось.Это означает, что кроме того, что входные данные первого слоя не меняются, распределение входных данных всех последующих слоев будет меняться с обновлением параметров модели, и каждый слой должен постоянно адаптироваться к изменению этого распределения данных. Этот процесс представляет собой внутренний ковариатный сдвиг.
Проблемы, решаемые Б.Н.
[Скорость сходимости, обеспечиваемая ICS, низкая]Поскольку параметры каждого слоя постоянно меняются, распределение результатов вычислений каждого слоя меняется, и сеть в последнем слое постоянно адаптируется к этому изменению распределения, что сделает скорость обучения всей сети слишком медленной.
[Проблема насыщения градиента]Поскольку в нейронных сетях часто используются насыщенные функции активации, такие как сигмоид и тангенс, обучение модели рискует попасть в область насыщения градиента. Есть две идеи для решения такой проблемы насыщения градиента:Первая — более ненасыщенная функция активации., например, функция линейного выпрямления ReLU может в определенной степени решить проблему выхода обучения в область насыщения градиента. Другой способ мышления заключается в том,Мы можем поддерживать входное распределение функции активации в стабильном состоянии, чтобы максимально избежать их попадания в область насыщения градиента, что и является идеей нормализации.
Batch Normalization
BatchNormalization точно так же, как имя, которое нормализует данные пакета.
Теперь предположим, что в пакете есть 3 данных, каждая из которых имеет две функции: (1,2), (2,3), (0,1)
Если вы выполняете простую нормализацию, затем вычислите среднее значение и дисперсию, вычтите среднее значение и разделите данные на стандартное отклонение и преобразуйте их в стандартную форму 0 среднего и 1 дисперсии.
Для первой функции:
【Общая формула】
- где m представляет количество партий.
- это очень маленькое число, не позволяющее знаменателю равняться 0.
На данный момент мы получили распределение со средним значением 0 и дисперсией 1 для каждого признака. Таким образом, дистрибутив одинаковый, проблем с ICS быть не должно.
Как упоминалось выше, хотя операция нормализации облегчает проблему ICS и стабилизирует распределение входных данных каждого слоя сети, она приводит к отсутствию возможности выражения данных.Распределение каждого слоя одинаково, и распределение данных всех задач одинаково.Что изучает модель?
[Недостатки 0 означает 1 дисперсию данных]
- Отсутствие выразительности данных;
- Заставив входное распределение каждого слоя иметь среднее значение 0 и дисперсию 1, входные данные легко попадают в линейную область нелинейной функции активации, когда они проходят через сигмовидную или тангенциальную функцию активации. (Ни линейная область, ни насыщенная область не идеальны, предпочтительно нелинейная область)
Чтобы решить эту проблему, слой BN вводит два обучаемых параметра.и, таким образом, данные после нормализации слоя BN фактически подчиняютсязначит,данные дисперсии.
Итак, для определенного слоя сети у нас теперь есть этот процесс:
(В приведенной выше формуле опущено, в общем случае представляет собой процесс, при котором сетевой уровень i-го уровня генерирует входные данные i+1-го уровня)
БН на этапе тестирования
Мы знаем, что BN вычисляется на каждом уровнеиВсе они основаны на обучающих данных в текущем пакете, но это создает проблему: на этапе прогнозирования нам может потребоваться предсказать только одну выборку или несколько выборок, данных не так много, как обучающих выборок, таких какиКак его рассчитать?
Фактически, после использования обучающего набора для обучения модели слой BN каждого слоя сохраняет рассчитанное значение каждой партии.и, Затем используйте общий обучающий набор для оценки тестового набораи
Затем выполните слой BN на тестовой машине:
Конечно, вычислениеиметод в дополнение к вышеуказанному среднему. Учитель Ву Энда также предложил в своем курсе, что можно использовать метод экспоненциально взвешенного среднего. Но это все равно, что оценивать среднюю дисперсию тестовой машины на основе всего тренировочного набора.
Каковы преимущества слоя BN
- BN делает распределение входных данных каждого слоя в сети относительно стабильным и ускоряет скорость обучения модели.
BN делает среднее значение и дисперсию входных данных каждого слоя сети в пределах определенного диапазона посредством нормализации и линейного преобразования, так что последнему слою сети не приходится постоянно адаптироваться к изменениям входных данных в базовой сети, таким образом реализуя сеть в слое и между слоями.Развязка позволяет каждому слою учиться независимо, что полезно для повышения скорости обучения всей нейронной сети.
- BN позволяет сети использовать насыщаемые функции активации (такие как сигмовидная, тангенциальная и т. д.), облегчая проблему исчезающего градиента.
Благодаря операции нормализации входные данные функции активации могут попадать в ненасыщенную область градиента, чтобы облегчить проблему исчезновения градиента; кроме того, благодаря адаптивному обучениюиПусть данные сохранят больше исходной информации.
- BN имеет определенный эффект регуляризации
В пакетной нормализации, поскольку мы используем среднее значение и дисперсию мини-пакета в качестве оценки среднего значения и дисперсии общей обучающей выборки, хотя данные в каждой партии выбираются из общей выборки, среднее значение и дисперсия различных мини-пакетов -пакеты отличаются друг от друга, дисперсия будет разной, что добавляет случайный шум в процесс обучения сети
Сравнение BN с другими нормализаторами
【нормализация веса】Нормализация веса предназначена для нормализации весов сети, то есть нормы L2.
По сравнению с БН имеет следующие преимущества:
- WN ускоряет сходимость параметров сети за счет перезаписи весов нейронной сети и не зависит от мини-пакета. BN нельзя использовать для сети RNN из-за мини-пакета, но WN можно. И BN должен сохранять среднюю дисперсию каждой партии, поэтому WN экономит память;
- Преимуществом BN является эффект регуляризации, но добавление шума не подходит для чувствительного к шуму обучения с подкреплением, GAN и других сетей. WN может создавать меньше шума.
Но WN следует уделить особое внимание выбору параметра инициализации.
【Нормализация слоя】Более распространенным сравнением является BN против LN. Слои BN имеют два недостатка:
- Онлайн-обучение невозможно, потому что мини-пакет онлайн-обучения равен 1; LN может
- BN, упомянутый ранее, не может использоваться в RNN, LN может
- Потребляет определенный объем памяти для записи среднего значения и дисперсии; LN не
Однако LN не достигает лучших результатов, чем BN в CNN.
Ссылка на ссылку: