[Перевод] Пакетная нормализация 3 уровня понимания | Технический обзор

искусственный интеллект Программа перевода самородков
[Перевод] Пакетная нормализация 3 уровня понимания | Технический обзор

Эта статья переведена с:к data science.com/batch-Norma…

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

В частности, эта статья направлена ​​на то, чтобы привести

  • Обновленное объяснение пакетной нормализации с 3 уровнями понимания: 30 секунд, 3 минуты и подробное руководство.

  • Охватывает ключевые элементы, чтобы получить максимальную отдачу от BN

  • Простая реализация слоя BN с использованием Pytorch в Google Colab, воспроизводящая эксперимент на основе MNIST в официальной статье.

  • Основные выводы о том, почему BN до сих пор плохо изучен (даже после прочтения объяснений от высококлассных авторов!)

Давайте начнем!

А) понять в течение 30 с

Пакетная нормализация (BN) — это алгоритм, который делает обучение глубокой нейронной сети (DNN) более быстрым и стабильным.

Он состоит в нормализации векторов активации скрытых слоев с использованием первого и второго статистических моментов (среднего значения и дисперсии) текущей партии. Примените этот шаг нормализации до (или после) нелинейной функции.

Многослойный персептрон (MLP) без BN | Кредит: автор - Дизайн:Lou HD

Многослойный персептрон с использованием BN | Кредит: автор - Дизайн:Lou HD

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

Примечание. Для тех из вас, кто предпочитает читать код, а не текст, я здесь.repoПростая реализация пакетной нормализации написана на .

Б) понять в течение 3 минут

Б.1 Природа

Пакетная нормализация вычисляется по-разному во время обучения и тестирования.

Б.1.1 Обучение

На каждом скрытом уровне пакетная нормализация преобразует данные следующим образом.

(1) μ=1niZ(i)\mu=\frac{1}{n} \sum_{i} Z^{(i)}

(2) о=1ni(Z(i)μ)\sigma=\frac{1}{n} \sum_{i}\left(Z^{(i)}-\mu\right)

(3) Znorm (i)=Z(i)μо2ϵZ_{\text {norm }}^{(i)}=\frac{Z^{(i)}-\mu}{\sqrt{\sigma^{2}-\epsilon}}

(4) Z^=γ*Znorm (i)+β\hat{Z}=\gamma * Z_{\text {norm }}^{(i)}+\beta

Нормализация партии по первому уравнению (1) и (2) вычисляет среднее значение и дисперсию партии.

Затем используйте уравнение (3), чтобы получитьZ(i)Z^{(i)}нормализовать. Таким образом, выход каждого нейрона в пакете удовлетворяет стандартному нормальному распределению (ϵ\epsilonконстанта, используемая для численной стабильности)

Первый шаг пакетной нормализации, пример представляет собой скрытый слой с 3 нейронами, а размер пакета равен b. После использования пакетной нормализации выходные данные каждого нейрона удовлетворяют стандартному нормальному распределению | Кредит: автор - Дизайн:Lou HD

Наконец, используяγ\gammaиβ\betaЛинейное преобразование вычисления выходных данных сетевого уровняz^i\hat{z}^{i}, как показано в формуле (4). Этот шаг позволяет модели выбрать оптимальное распределение для каждого скрытого слоя путем настройки двух параметров:

  • γ\gammaИспользуется для настройки стандартного отклонения (стандартного отклонения)

  • β\betaИспользуется для регулировки смещения, перемещая кривую влево или вправо.

γ\gammaиβ\betaПреимущества параметров. Изменение распределения (вверху) позволяет нам использовать другую область нелинейной функции (внизу). | Кредит: автор - Дизайн:Lou HD

Примечание: Имеются недоразумения и ошибки (даже в исходном тексте), объясняющие причины действия БН. Недавняя статья [2] опровергает некоторые ложные предположения и обновляет понимание сообществом этого подхода. Мы обсудим этот вопрос в разделе C.3: «Почему работает БН?».

На каждой итерации сеть вычисляет среднее значение, соответствующее текущей партии.μ\muи стандартное отклонениео\sigma. Затем тренируйтесь по градиентному спускуμ\muио\sigma, используя метод экспоненциальной скользящей средней (EMA), чтобы придать больший вес последней итерации.

Б.1.2 Тестирование

В отличие от этапа обучения, на этапе тестирования у нас может не быть полного пакетного ввода в модель.Чтобы решить эту проблему, мы вычисляемμpop\mu_{pop}иоpop\sigma_{pop}:

  • μpop\mu_{pop}: Оцените среднее значение населения

  • оpop\sigma_{pop}: стандартное отклонение оценочной совокупности

Эти значения все во время тренировкиμbatch\mu_{batch}иоbatch\sigma_{batch}Вычислительный, и уравнение (3) вводится непосредственно во время тестирования (вместо того, чтобы сначала вызывать уравнения (1) и (2)).

ПРИМЕЧАНИЕ. Мы подробно обсудим этот вопрос в разделе C.2.3 «Нормализация во время оценки».

Б.2 Практика

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

Во всех популярных фреймворках реализована пакетная нормализация. Например:

Все реализации BN позволяют вам устанавливать каждый параметр независимо. Однако размер входного вектора является наиболее важным. Должно быть установлено:

  • Сколько нейронов в текущем скрытом слое (для MLP)

  • Сколько фильтров в текущем скрытом слое (для сверточных сетей)

Взгляните на онлайн-документацию для вашего любимого фреймворка и прочитайте страницу слоя BN, есть ли что-то конкретное для их реализации?

B.3 Сводка результатов

Несмотря на то, что мы не знаем всей базовой механики BN (см. C.3), есть одна вещь, с которой все согласны:это действительно.

Давайте сначала посмотрим на результаты официальной статьи [1]:

Как БН влияет на тренировки. Точность проверочного набора ImageNet (2012), горизонтальная ось — количество итераций обучения, а вертикальная ось — точность проверочного набора. Сравниваются пять сетей: «Начальная» — обычная начальная сеть [3]; «BN-X» — исходная сеть с слоями BN (для 3 разных скоростей обучения: x1, x5, x30); оптимальная начальная сеть, BN-X-Sigmoid» — это начальная сеть со слоями BN, все ReLU заменены на Sigmoid. |Источник: [1]

Результаты показывают, что слои BN ускоряют обучение и обеспечивают более широкий диапазон скоростей обучения, не влияя на сходимость обучения.

Примечание. К этому моменту вы уже должны знать о слоях BN достаточно, чтобы их использовать. Однако, если вы хотите получить максимальную отдачу от BN, вам нужно копнуть глубже!

Какая связь между BN и этим графом? | Источник:Danilo Alvesd on Unsplash

В) Полное понимание

С.1 Реализация

Я повторно реализовал слой BN в Pytorch, чтобы воспроизвести исходные результаты на бумаге. Код доступен по адресуэтот гитхабполучено в.

Я предлагаю вам взглянуть на некоторые онлайн-реализации слоев BN. Посмотрите, как это закодировано в вашем любимом фреймворке, это поучительно!

C.2 BN на практике

Прежде чем погрузиться в теорию, начнем с определенности относительно Б.Н. В этом разделе мы увидим:

  • Как BN влияет на эффективность тренировок? Почему этот подход так важен в глубоком обучении сегодня?

  • Мы должны обратить внимание на то, каковы побочные эффекты BN?

  • Когда и как использовать БН?

C.2.1 Результаты исходного текста

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

Официальная статья [1] проводит 3 эксперимента, чтобы продемонстрировать эффективность своего метода.

Во-первых, они обучили классификатор набору данных MNIST. Модель состоит из 3 полносвязных слоев по 100 нейронов в каждом, преобразованных с помощью сигмовидной функции активации. Они обучили эту модель дважды (со слоями BN и без них) для 50 000 итераций, используя стохастический градиентный спуск (SGD) и ту же скорость обучения (0,01). Обратите внимание, что слой BN расположен прямо перед функцией активации.

Вы можете легко воспроизвести эти результаты без графического процессора, что является отличным способом познакомиться с концепцией!

Рисунок 2: Влияние BN на обучение на примере MLP | Связь между точностью и количеством итераций слева | Связь между потерями при обучении и количеством итераций справа | Кредит: автор

Выглядит неплохо! BN улучшает производительность нашей сети, включая потери при обучении и точность.

Второй эксперимент заключался в проверке активаций в скрытых слоях. Ниже приведен график, соответствующий последнему скрытому слою (непосредственно перед нелинейностью):

Рисунок 3: Влияние BN на значение активации последнего скрытого слоя | Кредит: автор

Без пакетной нормализации значения активации значительно колеблются во время первой итерации. Наоборот, с BN кривая активации более гладкая.

Рисунок 4: Кривая активации модели с BN более гладкая, чем у модели без BN | Кредит: автор

В то же время, когда добавляется слой BN, шум сигнала меньше. Это, по-видимому, облегчает сходимость модели.

Этот пример не показывает всех преимуществ BN.

Официальная статья провела третий эксперимент. Они надеются сравнить производительность моделей при добавлении слоев BN в более крупный набор данных ImageNet (2012). Для этого они обучили мощную на тот момент нейронную сеть под названием Inception [3]. Изначально в этой сети не было слоев BN. Они добавили немного и обучили модель, изменив скорость обучения (x1, x5, x30). Они также пытались заменить каждую функцию активации ReLU сигмоидой в другой сети. Затем они сравнили производительность этих новых сетей с исходными сетями. Результат выглядит следующим образом

Рисунок 5: Влияние BN на обучение в ImageNet. «Начальная»: исходная сеть [3]; «BX-Baseline»: начальная плюс BN, скорость обучения такая же, как и в исходной сети; «BX-x5»: то же, что и BX-Baseline, скорость обучения x5 ; «BX-x30»: то же, что и BX-Baseline, скорость обучения x30; «BN-x5-Sigmoid»: то же, что и BX-Baseline, скорость обучения x5, с использованием Sigmoid вместо ReLU | Источник: [1]

Из кривых можно сделать вывод, что:

  • Добавление слоев BN приводит к более быстрой и лучшей сходимости (чем лучше, тем выше точность).

В таком большом наборе данных это улучшение гораздо значительнее, чем в небольшом наборе данных MNIST.

  • Добавление слоев BN позволяет использовать более высокие скорости обучения (LR), не влияя на конвергенцию.

Авторы успешно обучили сеть Inception-with-BN со скоростью обучения в 30 раз выше, чем у исходной сети. Обратите внимание, что скорость обучения в 5 раз больше, чем исходная сеть!

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

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

  • Модель на основе сигмоида достигает аналогичных результатов с моделью на основе ReLU.

Нам нужно сделать шаг назад и посмотреть на общую картину. Мы ясно видим, что модель на основе ReLU может обеспечить лучшую производительность по сравнению с моделью на основе Sigmoid, но это не имеет значения.

Чтобы проиллюстрировать, почему этот результат имеет смысл, позвольте мне повторить то, что сказал Ян Гудфеллоу (изобретатель GAN [6] и автор знаменитого Руководства по глубокому обучению):

До BN мы думали, что практически невозможно эффективно обучать глубокие модели, используя сигмоид в скрытых слоях.Мы рассмотрели несколько подходов к решению проблемы нестабильности обучения, например поиск лучших методов инициализации.Эти части решения были сильно эвристическими и слишком хрупким, чтобы быть удовлетворительным. Пакетная нормализация делает эти нестабильные сети обучаемыми; это то, что показывает этот пример. — Ян Гудфеллоу (перефразировано из:source)

Теперь мы понимаем, почему BN оказывает такое важное влияние на область глубокого обучения.

Эти результаты показывают преимущества BN в производительности сети. Однако, чтобы получить максимальную отдачу от BN, следует учитывать некоторые побочные эффекты.

C.2.2 Регуляризация, побочный эффект BN

BN полагается на первый и второй статистические моменты (среднее значение и дисперсию) для нормализации активаций скрытых слоев. Затем выходное значение тесно привязывается к текущей статистике партии. В зависимости от входного примера, используемого в текущем пакете, это преобразование добавляет некоторый шум.

Добавьте немного шума, чтобы избежать переобучения... звучит как процесс регуляризации, не так ли? ;)

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

Тем не менее, интересно понять эффект регуляризации, так как он может объяснить некоторое неожиданное поведение в сети, особенно во время проверок работоспособности.

Примечание. Чем больше размер партии, тем меньше регуляризация (поскольку она уменьшает шумовые эффекты).

Что, если мы захотим развернуть модель BN на такой потрясающей встроенной системе? | Кредит:Marília Castelli on Unsplash

C.2.3 Нормализация во время оценки

Есть две ситуации, в которых модель может быть вызвана в режиме оценки:

  • Во время обучения и разработки модели при перекрестной проверке или тестировании

  • При развертывании модели

В первом случае для удобства мы можем применить батч-нормализации, используя текущую батч-статистику. Во втором случае нет смысла использовать тот же метод, так как нам не обязательно предсказывать всю партию.

Давайте рассмотрим пример робота со встроенной камерой. У нас может быть модель, которая использует текущую структуру для прогнозирования местоположения любых предстоящих препятствий. Поэтому мы хотим вычислять выводы для одного кадра (т. е. изображения RGB) за итерацию. Если размер обучающей партии равен N, что мы должны выбрать для (N-1) других входных данных для прямого распространения, которое ожидает модель?

Помните, что для каждого слоя BN (β\beta,γ\gamma) обучаются с использованием нормализованных сигналов. Значит надо определить(μ\mu,о\sigma) для значимых результатов.

Одним из решений является выбор произвольных значений для завершения пакета. Добавив в модель 1-ю партию, мы получим определенные результаты для интересующих нас изображений. Если мы создадим вторую партию с другими случайными значениями, для одного и того же изображения будут разные прогнозы. Для одного входа два разных выхода не являются идеальным поведением модели.

Эта техника определяется(μpop,оpop)(\mu_{pop}, \sigma_{pop}), являются предполагаемым средним значением и дисперсией целевых данных соответственно. Эти параметры вычисляются во время обучения как(μbatch,оbatch)(\mu_{batch}, \sigma_{batch})среднее значение .

Вот что мы делаем!

ПРИМЕЧАНИЕ. Этот трюк может вызвать нестабильность на этапе оценки, давайте обсудим его в следующем разделе.

C.2.4 Вопросы стабильности

Несмотря на то, что BN работает хорошо, иногда могут возникать проблемы со стабильностью. В некоторых случаях слой BN заставляет активации взрываться на этапе оценки (что делает потери модели равными NaN).

мы только что упомянули(μpop,оpop)(\mu_{pop}, \sigma_{pop})определяется для использования во время оценки: мы вычисляем все(μbatch,оbatch)(\mu_{batch}, \sigma_{batch})средний из.

Рассмотрим модель, обученную только на наборе данных, содержащем кроссовки. Что, если в тестовом наборе есть туфли в стиле дерби?

Если распределение входных данных от обучения к оценке слишком сильно различается, модель может чрезмерно реагировать на определенные значения, вызывая расхождение активаций | Кредит:Grailify (left), and Jia Ye (right) on Unsplash

Мы предполагаем, что во время обучения и оценки активации скрытых слоев будут иметь существенно разные распределения — вероятно, слишком много. В этом случае оценивается(μpop,оpop)(\mu_{pop}, \sigma_{pop})不能正确估计实际的总体均值和标准差。 применение(μpop,оpop)(\mu_{pop}, \sigma_{pop})может оттолкнуть значение активации(μ=0,о=1)(\mu = 0, \sigma = 1), что приводит к завышению значения активации.

Примечание. Сдвиг распределения между обучающим набором и тестовым набором называется сдвигом ковариации. Мы еще раз обсудим этот эффект в разделе (C.3.).

Усиливает этот эффект известное свойство БН: во время тренировки активации нормализуются по своему значению. Во время вывода используйте(μpop,оpop)(\mu_{pop}, \sigma_{pop})Нормализация данных. Поэтому коэффициенты, используемые для нормализации, не учитывают сами фактические значения активации.

В общем случае тренировочный набор должен быть таким же, как и тестовый.достаточно похоже, иначе было бы невозможно правильно обучить модель для целевой задачи. Поэтому в большинстве случаев(μpop,оpop)(\mu_{pop}, \sigma_{pop})Должен хорошо подойти для тестового набора. Если нет, то можно сделать вывод, что обучающая выборка недостаточно велика, либо качество обучения недостаточно для поставленной задачи.

Но иногда,просто так получилось. У этой проблемы не всегда есть четкое решение.

Я столкнулся с этим однажды на соревнованиях Kaggle в Pulmonary Fibrosis Progression. Набор обучающих данных состоит из метаданных и 3D-сканов легких, связанных с каждым пациентом. Содержание этих сканирований было сложным и разнообразным, но у нас было всего около 100 пациентов, разделенных на обучающую и проверочную выборки. В результате сверточная сеть, которую я хотел для извлечения признаков, возвращала NaN, когда модель переключалась из режима обучения в режим оценки. Удачной отладки.

Когда у вас нет легкого доступа к другим данным для расширения вашего тренировочного набора, вы должны найти способ обойти это. В приведенном выше случае я также вручную выполнил вычисление принудительного слоя BN на проверочном наборе.(μbatch,оbatch)(\mu_{batch}, \sigma_{batch}). (Я согласен, это некрасивый способ исправить это, но у меня заканчивается игровое время ;))

Добавление слоя BN в сеть не всегда является лучшей стратегией, при условии, что это не оказывает негативного влияния на сеть!

C.2.5 Рекуррентные сети и нормализация уровня

На практике общепринято, что:

  • Для сверточных сетей (CNN) BN работает лучше
  • Для рецидивирующих сетей (RNN), нормализация слоя (LN) лучше

В то время как BN использует текущую партию для нормализации каждого отдельного значения, LN делает это, используя в настоящее время все слои. Другими словами, нормализация выполняется с использованием других функций в одном примере, а не с использованием одних и тех же функций во всех текущих пакетах. Для рекуррентных сетей это решение кажется более эффективным. Обратите внимание, что трудно определить последовательную политику для этого типа нейронов, потому что они основаны на многократном умножении одной и той же весовой матрицы. Должны ли мы нормализовать каждый шаг независимо? Или я должен вычислить среднее значение всех шагов, а затем рекурсивно применить нормализацию? (Источник аргумента интуиции:здесь)

Я не буду углубляться в этот вопрос, так как это не является целью данной статьи.

C.2.6 До или после нелинейности

Исторически слой BN располагался непосредственно перед нелинейной функцией, что соответствовало целям и предположениям авторов того времени:

В статье говорят:

«Мы хотим, чтобы при любых значениях параметров сеть всегда производила активации с желаемым распределением», — Сергей Иоффе и Кристиан Сегеди (источник: [1])

Некоторые эксперименты показывают, что лучшие результаты можно получить, используя слой BN после нелинейной функции. Ниже приведенпример.

По словам Франсуа Шолле, основателя Keras и инженера, в настоящее время работающего в Google:

"Я не возвращался, чтобы проверить, что они предлагают в своей исходной статье, но я могу гарантировать, что недавний код, написанный Кристианом [Сегеди], применяет relu до BN. Тем не менее, иногда это все еще является предметом споров", — Франсуа. Шолле (source)

Тем не менее, многие широко используемые архитектуры трансфертного обучения применяют BN (ResNet, mobilenet-v2 и т. д.) до нелинейности.

Обратите внимание, что в статье [2] оспаривается предположение, сделанное в исходной статье [1] для объяснения эффективности BN (см. C.3.3)) путем размещения слоя BN перед функцией активации, но без указания точной причины.

Насколько я знаю, этот вопрос все еще обсуждается.

Дополнительная литература: вот интересноеобсуждение на реддите, хотя некоторые доводы неубедительны, в основном после активации БН.

Почему мой грязный код все еще работает? | Кредит:Rohit Farmer on Unsplash

C.3 Почему БН работает

В большинстве случаев BN может повысить производительность моделей глубокого обучения. Очень хороший. Но мы хотим знать, что происходит внутри черного ящика.

Вот где все становится немного волосатым.

Вот в чем дело: мы еще не знаем, что заставляет BN работать так хорошо. Есть некоторые предположения, которые часто обсуждаются в сообществе глубокого обучения: мы рассмотрим их шаг за шагом.

Прежде чем углубиться в обсуждение, мы увидим следующее:

  • В оригинальной статье [1] была выдвинута гипотеза о том, что эффективность BN связана с уменьшением того, что они называют внутренним ковариатным сдвигом (ICS). Недавняя статья [2] опровергает эту гипотезу. (см. С.3.1)

  • Другое предположение, более осторожно заменяющее первое: BN смягчает взаимозависимости между слоями во время обучения. (см. С.3.2)

  • В недавней статье в Массачусетском технологическом институте [2] подчеркивается влияние BN на оптимизацию гладкости ландшафта, что упрощает обучение. (см. С.3.3)

Бьюсь об заклад, изучение этих гипотез поможет вам создать прочную интуицию о БН.

C.3.1 Первая гипотеза: путаница в отношении внутреннего ковариатного сдвига (ICS)

Хотя BN оказывает фундаментальное влияние на производительность DNN, его по-прежнему легко понять неправильно.

Путаница в отношении BN в основном связана с неправильными предположениями, поддерживаемыми оригинальной статьей [1].

Сергей Иоффе и Кристиан Сегеди представляют Б.Н. следующим образом:

«Мы называем изменение распределения внутренних узлов глубокой сети в ходе обучения внутренним ковариантным сдвигом. […] Мы предлагаем новый механизм, который мы называем пакетной нормализацией, который делает шаг к уменьшению внутреннего ковариантный сдвиг, и при этом резко ускоряет обучение глубоких нейронных сетей», — Сергей Иоффе и Кристиан Сегеди (источник: [1])

Другими словами, BN эффективен, потому что он частично решает проблему внутреннего ковариатного сдвига.

Это утверждение было серьезно оспорено более поздней работой [2].

Примечание. Отныне ICS является внутренним ковариантным сдвигом.

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

Что такое ковариативный сдвиг (представление о стабильности распределения)?

[1] Авторы определяют его явно: ковариативный сдвиг с точки зрения устойчивости распределения описывает сдвиг входного распределения модели. В более широком смысле внутренний ковариативный сдвиг описывает, как это явление происходит в скрытых слоях глубоких нейронных сетей.

Давайте рассмотрим пример, чтобы понять, почему это может быть проблемой.

Предположим, мы хотим научить классификатор отвечать на следующий вопрос: есть ли на этом изображении автомобиль? Такая модель сэкономила бы нам много времени, если бы мы захотели извлечь все изображения автомобилей из очень большого неразмеченного набора данных.

У нас будет изображение RGB в качестве входных данных, несколько сверточных слоев, а затем полносвязные слои. На выходе должно быть одно значение, которое передается в логистическую функцию таким образом, чтобы окончательное значение находилось в диапазоне от 0 до 1, описывая вероятность того, что входное изображение содержит автомобиль.

Рисунок 5: Простой классификатор CNN. | Кредит: автор - Дизайн:Lou HD

Для обучения такой модели нам потребуется большое количество размеченных изображений.

Теперь, допустим, у нас есть только обычные машины для обучения. Если бы мы попросили модель классифицировать болид Формулы-1, как бы она отреагировала?

Как упоминалось ранее, изменения в ковариатах могут привести к расхождению сетевых активаций (раздел C.2.4). Даже если это не так, это повлияет на общую производительность! | Кредит:Dhiva Krishna (left) and Ferhat Deniz Fors (right) on Unsplash

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

Если мы нанесем извлеченные функции в пространство признаков, мы получим что-то вроде этого:

Рисунок 6.a: Почему нам нужно нормализовать входные значения модели? нестандартная ситуация. Во время обучения входные значения разбросаны: там, где плотность точек высока, функция аппроксимации будет очень точной. И наоборот, при низкой плотности точек она будет неточной и будет демонстрировать случайность (например, аппроксимированная кривая может быть одной из трех нарисованных линий). | Кредит: автор - Дизайн:Lou HD

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

Чтобы эффективно обучать нашу модель, нам нужно предоставить множество изображений автомобилей во всех возможных ситуациях, которые мы можем себе представить. Даже сейчас мы по-прежнему обучаем CNN, мы хотим использовать как можно меньше образцов, чтобы обеспечить хорошее обобщение модели.

Проблема может быть обобщена следующим образом:

From the model point-of-view, training images are - statistically - too different from testing images. There is a covariate shift.

Мы можем решить эту проблему с помощью более простой модели. Хорошо известно, что при нормировании входных значений (даже если их распределение близко к(μ=0,о=1)(\mu=0, \sigma=1)), модели линейной регрессии легче оптимизировать: именно поэтому мы обычно нормализуем входные значения модели.

Рисунок 6.b: Почему нам нужно нормализовать входные значения модели? нормализованная ситуация. Во время обучения нормализация входных данных может приблизить точки в пространстве признаков друг к другу: теперь легче найти хорошую функцию обобщения. | Кредит: автор — Дизайн:Lou HD

Это решение было хорошо известно до публикации статьи BN. Авторы [1] надеются распространить этот подход на скрытые слои с помощью BN, чтобы помочь в обучении.

Гипотеза исходной статьи: обучение переносу внутренней ковариации приводит к ухудшению обучения

Диаграмма 7: Принцип внутреннего ковариатного переноса с точки зрения стабильности распределения. | Кредит: автор - Дизайн:Lou HD

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

Если во входном сигнале есть огромный ковариатный сдвиг, оптимизатору будет трудно сделать хорошее обобщение. И наоборот, если входной сигнал всегда следует стандартному нормальному распределению, оптимизатору будет легче обобщать. Имея это в виду, авторы [1] приняли стратегию нормализации сигнала в скрытом слое. Они считают, что принуждение(μ=0,о=1)(\mu=0, \sigma=1)Распределение сигналов промежуточных звеньев поможет сети обобщить на концептуальном уровне.

Однако нам не всегда нужны скрытые единицы стандартного нормального распределения. Это уменьшает представление модели (репрезентативность):

Рисунок 8: Почему бы нам не всегда надеяться, что в скрытом блоке есть стандартное нормальное распределение. Здесь сигмовидная функция работает только в своей линейной области. . | Кредит: автор - Дизайн:Lou HD

В исходном тексте сигмовидная функция используется в качестве примера, чтобы проиллюстрировать, почему нормализация сама по себе является проблемой. Если значение входного сигнала находится между 0 и 1, нелинейная функция будет работать только в пределах своего линейного диапазона. Звучит как проблема.

Чтобы решить эту проблему, они добавили два обучаемых параметра.β\betaиγ\gamma, позволяя оптимизатору определить оптимальное среднее значение для конкретной задачи (используяβ\beta) и стандартное отклонение (с использованиемγ\gamma).

⚠ Предупреждение. Следующие допущения устарели. Многие важные материалы о BN все еще думают, что это причина для этого метода на практике. Однако недавняя работа ставит перед ним серьезную задачу.

Спустя годы после публикации [1] сообщество глубокого обучения объяснило эффективность BN следующим образом:

Предположение 1

BN ➜ Нормализация входного сигнала в скрытом блоке ➜ Добавление двух обучаемых параметров для настройки распределения и максимизации нелинейности ➜ Легче обучать

Здесь нормировано на(μ=0,о=1)(\mu=0, \sigma=1)является основной причиной, объясняющей эффективность БН. Это предположение было оспорено (см. Раздел C.3.3) и заменено другим предположением:

Предположение 2

BN ➜ Нормализация входного сигнала внутри скрытого модуля ➜ Уменьшение взаимозависимости между скрытыми слоями (с точки зрения стабильности распределения) ➜ Легче обучать

Есть тонкая, но очень важная разница. Здесь целью нормализации является уменьшение взаимозависимости между слоями (с точки зрения стабильности распределения), поэтому оптимизатор может выбрать наилучшее распределение, настроив только два параметра! Давайте исследуем эту гипотезу дальше.

Какая связь между BN и этим графом? | Источник:Danilo Alvesd on Unsplash

C.3.2 Второе допущение: уменьшение взаимозависимости между распределениями

Об этой части: я не могу найти убедительных доказательств предположений, обсуждаемых в этой части. Поэтому я решил полагаться главным образом на объяснение этого вопроса Яна Гудфеллоу (особенно в этом абзаце).отличное видеосередина).

Рассмотрим следующий пример:

Рисунок 9: Простая DNN, состоящая из линейных преобразований. | Вдохновленный Яном Гудфеллоу

где (a), (b), (c), (d) и (e) — смежные слои сети. Это очень простой пример, все слои связаны линейным преобразованием. Предположим, мы хотим обучить такую ​​модель с помощью SGD.

Чтобы обновить веса слоя (a), нам нужно вычислить градиенты на основе выходных данных сети:

grad(a)=grad(b)*grad(c)*grad(d)*grad(e)grad(a) = grad(b) * grad(c) * grad(d) * grad(e)

Сначала рассмотрим сеть без слоев BN. Из приведенного выше уравнения мы заключаем, что если все градиенты большие, градиент (а) будет очень большим. И наоборот, если все градиенты малы, градиентом (а) можно пренебречь.

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

Однако SGD рассматривает отношения первого порядка между слоями. Таким образом, они не принимают во внимание отношения более высокого уровня, упомянутые выше!

Рисунок 10: Принцип предположения 2. Слой BN работает путем нормализации сигнала в каждом скрытом блоке и позволяет использоватьβ\betaиγ\gammaВнесите коррективы в распределение, чтобы упростить преобразование сигнала. BN действует как клапан, упрощая управление потоком в определенных точках без снижения сложности сети! | Кредит: автор - Дизайн: Лу HD

Во время обучения добавление слоев BN значительно снижает взаимозависимость между слоями (с точки зрения стабильности распределения). BN действует как клапан, который блокирует поток и позволяет использоватьβ\betaиγ\gammaОтрегулируйте это. Это устраняет необходимость учитывать все параметры, чтобы получить представление о распределении внутри скрытого блока.

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

Этот пример отбрасывает предположение о том, что эффективность БН обусловлена ​​нормализацией распределения промежуточных сигналов(μ=0,о=1)(\mu=0, \sigma=1). Здесь цель BN состоит в том, чтобы упростить работу оптимизатора по настройке распределения скрытого слоя, используя только два параметра одновременно.

⚠ Однако имейте в виду, что это в основномпредполагать. Эти обсуждения следует использовать как идеи для построения интуитивных представлений о BN. Мы до сих пор не знаем, почему БН работает на практике!

В 2019 году исследовательская группа Массачусетского технологического института провела несколько интересных экспериментов с BN [2]. Их результаты серьезно бросают вызов гипотезе 1 (все еще есть много серьезных сообщений в блогах и муоков, которыми можно поделиться).

Если мы хотим избежать влияния БН на обучениегипотеза локального минимума, мы должны взглянуть на эту бумагу... ;)

Хорошо… вам лучше хорошо инициализировать. | Кредит:Tracy Zhang on Unsplash

C.3.3 Третье предположение: сделать оптимизированный ландшафт более плавным

Об этой части: я обобщил результаты [2], которые помогают нам лучше понять BN. Я не могу быть исчерпывающим, статья плотная, и я рекомендую внимательно прочитать ее, если вас интересуют концепции.

Перейдем непосредственно ко второму эксперименту [2]. Их целью было изучить корреляцию между ICS и BN на улучшение результатов обучения (гипотеза 1).

Примечание: теперь мы используемICSdistribICS_{distrib}для обозначения этого ковариантного сдвига.

С этой целью исследователи обучили три сети VGG на CIFAR-10:

  • Первый не имеет слоя BN

  • Второй имеет слой BN

  • Третий метод аналогичен второму, за исключением того, что они явно добавляют некоторые внутри скрытого блока перед активацией.ICSdistribICS_{distrib}распределение (путем добавления случайного смещения и дисперсии).

Они измерили точность, достигнутую каждой моделью, и то, как значения распределения изменились с количеством итераций. Вот что они получили:

Diagram 6 : ICSdistribICS_{distrib}Сети с BN на BN обучаются быстрее, чем стандартные сети; явным образом добавить контролируемые сетиICSdistribICS_{distrib}Не уменьшит преимущества БН. Источник: [2]

Мы видим, что, как и ожидалось, третья сеть имеет очень высокий ICS. Однако зашумленная сеть по-прежнему обучается быстрее, чем стандартная сеть. Его производительность сравнима со стандартными сетями BN. Этот результат предполагает, что эффективность BN не зависит от распределения ICS. Ой!

Мы не должны слишком рано отказываться от теории ICS: если валидность BN не исходит из распределения ICS, она может быть связана с другим определением ICS. В конце концов, интуиция, стоящая за предположением 1, имеет смысл, не так ли?

ICSdistribICS_{distrib}Основная проблема заключается в том, что его определение связано с входным распределением скрытых единиц. Поэтому к самой задаче оптимизации прямого отношения не имеет.

В [2] авторы предлагают другое определение ИКС:

Рассмотрим фиксированный вход X.

С точки зрения оптимизации, мы определяем внутренний ковариатный сдвиг как ошибку обратного распространенияL(X)itL(X)_{it}Тогда градиент, рассчитанный на скрытом слое k, и потери отL(X)it+1L(X)_{it+1}Обновляется разница между градиентами, вычисленными на одном и том же слое k, и его веса, вычисленные после итераций.

Цель этого определения состоит в том, чтобы сосредоточиться на градиенте, а не на входном распределении скрытых слоев, предполагая, что это может дать нам лучшее представление о том, как ICS влияет на основную проблему оптимизации.

Примечание:ICSoptiICS_{opti}Теперь ссылаясь на ICS, как это определено с точки зрения оптимизации.

В следующих экспериментах авторы оценилиICSoptiICS_{opti}влияние на результаты обучения. С этой целью они измерили изменение ICS во время обучения DNN со слоями BN и без них. Для количественной оценкиICSoptiICS_{opti}Изменение градиента, упомянутое в определении, они рассчитывают:

  • Разница L2: имеет ли градиент до и после обновления веса близкую норму? В идеале: 0

  • Угол косинуса: имеет ли градиент узкое направление до и после обновления веса? В идеале: 1

Рисунок 7: Пара BNICSoptiICS_{opti}|Влияние |Разность L2 и угла косинуса показывают, что БН не мешаетICSoptiICS_{opti}(кажется, как-то немного увеличил его). |Источник [2]

Результаты немного неожиданны: сеть, зависящая от BN, кажется, имеет более высокуюICSoptiICS_{opti}. Помните, что сеть с BN (синяя кривая) обучается быстрее, чем стандартная сеть (красная кривая)!

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

Вот последний эксперимент в этом посте:

Рисунок 11: Оптимизация исследования ландшафта в направлении градиента, эксперименты, выполненные в статье [2] | | ВдохновленоAndrew Ilyas - Design : Lou HD

Из одного градиента мы обновляем веса с помощью разных шагов оптимизации (например, скорости обучения). Интуитивно мы начинаем с точки в пространстве признаков (т. е. сетевой структуры).ю\omega), чтобы определить направление, а затем продолжить изучение и оптимизацию ландшафта в этом направлении.

На каждом шаге мы измеряем градиент и потери. Поэтому мы можем использовать отправную точку для сравнения различных точек оптимизации ландшафта. Если мы измеряем большие изменения, ландшафт очень нестабилен, а градиент неопределен: большие шаги могут ухудшить оптимизацию. И наоборот, если измеренное изменение невелико, ландшафт стабилен, а градиент заслуживает доверия: мы можем применять более крупные шаги, не влияя на оптимизацию. Другими словами, мы можем использовать более высокую скорость обучения и ускорить сходимость (хорошо известное свойство BN).

Давайте посмотрим на результаты:

Рисунок 8: Влияние BN на оптимизацию сглаживания ландшафта | Изменение градиента значительно снижается с помощью BN. |Источник: [2]

Мы можем ясно видеть, что эффект оптимизации слоя BN намного более плавный.

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

Можно сделать третью гипотезу, предложенную в [2]:

Предположение 3

BN ➜ Нормализовать входной сигнал внутри скрытого блока ➜ Сделать оптимизированный ландшафт более плавным ➜ Более быстрое и стабильное обучение

Это ставит другой вопрос: как BN делает оптимизированный пейзажнее?

[2] Авторы также исследуют эти вопросы с теоретической точки зрения. Их работа поучительна и помогает лучше понять сглаживающий эффект БН. В частности, они показывают, что BN делает оптимизированный ландшафт более гладким, сохраняя при этом все минимумы нормального ландшафта. Другими словами, BN сбрасывает основную проблему оптимизации, делая обучение быстрее и проще!

⚠ В отдельном исследовании авторы [2] заметили, что этот эффект не уникален для BN. Они получили эффективность обучения, аналогичную другим методам нормализации, таким как нормализация L1 или L2. Эти наблюдения предполагают, что эффективность BN в значительной степени обусловлена ​​​​случайностью, использующей основной механизм, который мы еще не полностью идентифицировали.

Сейчас самое время установить очень высокую скорость обучения. | Кредит:Finding Dan | Dan Grinwis on Unsplash

В заключение этого раздела, эта статья серьезно ставит под сомнение широко распространенное мнение о том, что эффективность BN в основном связана с уменьшением ICS (с точки зрения распределения стабильности обучения, а также с точки зрения оптимизации). Но подчеркивается влияние эффекта сглаживания BN на оптимизацию ландшафта.

В статье выдвигается гипотеза о влиянии БН на скорость обучения, но не дается ответ, почему БН помогает обобщению.

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

Их основной вклад состоит в том, чтобы бросить вызов хорошо зарекомендовавшему себя эффекту BN на ICS, что уже важно!

C.4 Резюме: что мы знаем сейчас

  • Гипотеза 1: слой BN смягчает перенос внутренней ковариации (ICS)

❌ Ошибка: [2] показывает, что на практике нет корреляции между ИКС и результатами обучения.

  • Предположение 2: Слой BN упрощает работу оптимизатора, поскольку позволяет настроить входное распределение скрытого блока только с двумя параметрами.

❓ Возможно: это предположение подчеркивает взаимозависимость между параметрами, что усложняет задачу оптимизации. Однако твердых доказательств нет.

  • Предположение 3: слой BN сбрасывает основную проблему оптимизации, делая ее более плавной и стабильной.

❓ Возможно: их результаты свежие. Насколько я знаю, до сих пор они не оспаривались. Они предоставляют эмпирические и теоретические доказательства, но некоторые фундаментальные вопросы остаются без ответа (например, «Как БН помогает обобщению?»).

обсуждать: Мне кажется, что последние два предположения совместимы. Интуитивно мы можем думать о Гипотезе 2 как о проекции проблемы с несколькими параметрами на множество проблем с несколькими параметрами; своего рода уменьшение размерности, которое поможет обобщению. Любые идеи?

Многие вопросы все еще остаются открытыми, и BN по-прежнему является актуальной темой исследований. Обсуждение этих предположений по-прежнему помогает лучше понять этот широко используемый подход и отбросить некоторые искажения, о которых мы думали годами.

Однако эти проблемы не мешают нам использовать преимущества БН на практике!

Суммировать

BN — это важный прогресс в области глубокого обучения за последние годы. Метод основан на двух последовательных линейных преобразованиях, чтобы сделать обучение глубокой нейронной сети (ГНС) более быстрым и стабильным.

Наиболее распространенная на практике гипотеза об эффективности БН — уменьшение взаимозависимости между скрытыми слоями при обучении. Однако влияние преобразования нормализации на оптимизацию гладкости ландшафта, по-видимому, является важным механизмом эффективности BN.

Многие широко используемые DNN теперь полагаются на BN (например, ResNet [4], EfficientNet [5], …).

Если вы заинтересованы в глубоком обучении, вы должны быть знакомы с этим методом!

открытый вопрос

Несмотря на то, что BN на протяжении многих лет оказывается эффективным на практике, многие вопросы о его внутреннем механизме остаются без ответа.

Ниже приводится неисчерпывающий список открытых вопросов по BN:

  • Как БН помогает в обобщении?

  • Является ли BN лучшим методом нормализации для упрощения оптимизации?

  • β\betaиγ\gammaКак это влияет на оптимизацию плавности ландшафта?

  • Эксперименты в [2], исследующие оптимизированный ландшафт, сосредоточены на краткосрочном влиянии BN на градиенты: они измеряют изменения градиента и потерь для одной итерации с несколькими значениями шага. Каков долгосрочный эффект BN на градиенты? Имеет ли взаимозависимость весов другие интересные эффекты при оптимизации ландшафта?

Спасибо

Большое спасибоLou Hacquet DelepineВсе схемы нарисованы, и ее всесторонняя помощь с вычиткой!

использованная литература

[1] Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift, arXiv preprint arXiv:1502.03167.

[2] Santurkar, S., Tsipras, D., Ilyas, A., & Madry, A. (2018). How does batch normalization help optimization?, Advances in Neural Information Processing Systems

[3] Сегеди, С., Лю, В., Цзя, Ю., Серренет, П., Рид, С., Ангаеля, Д., ... & Рабинович, А. (2015). Идущий глубже с обозреваниями, разбирательством Конференция IEEE на компьютерном видении и распознавании образца

[4] He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition

[5] Tan, M., & Le, Q. V. (2019). Efficientnet: Rethinking model scaling for convolutional neural networks, arXiv preprint arXiv:1905.11946.

[6] Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., Courville, A. Bengio, Y. (2014), Generative adversarial nets, Advances in neural information processing systems

Узнайте больше

  • Отличная речь Лана Гудфеллоу. Он рассказывает о Б.Н. в начале курса:Ссылка на сайт

  • Устное выступление одного из авторов статьи [2]. Зрители задавали острые вопросы, и развернулась большая дискуссия о Б.Н.:Ссылка на сайт

  • Должны ли мы помещать BN до или после активации в stackoverflow:Ссылка на сайт

  • Должны ли мы поставить BN до или после активации на Reddit:Ссылка на сайт

Эта статья участвует в «Весенней рекрутинговой кампании Nuggets 2021», нажмите, чтобы просмотретьподробности о мероприятии