Понимать общую технику преобразования, используемую в глубоких нейронных сетях.

Вступление

Пакетная нормализация (BN) - это метод, с которым столкнулись бы многие специалисты по машинному обучению. Если вы когда-либо использовали сверточные нейронные сети, такие как Xception, ResNet50 и Inception V3, то вы использовали пакетную нормализацию.

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

Определение

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

Операция стандартизирует и нормализует входные значения. Затем входные значения преобразуются посредством операций масштабирования и сдвига.

Если это сбивает с толку, следующий раздел ниже пояснит эту технику.

Объяснение

Методика пакетной нормализации была представлена ​​в 2015 году Кристианом Сегеди и Сергеем Иоффе в этой опубликованной статье.

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

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

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

Нормализация обычно выполняется для входных данных, но имеет смысл, чтобы поток внутренних данных в сети оставался нормализованным.

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

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

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

  1. Стандартизация входных данных
  2. Нормализация и изменение масштаба входных данных.
  3. Смещение входных данных.

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

Давайте разберем математические обозначения алгоритма и объясним процесс.

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

m’ обозначает количество входов в мини-пакете.

«µ» относится к среднему значению.

«B» - это нижний индекс, относящийся к текущей партии.

xi’ - это экземпляр входных данных.

Среднее значение ('µ') пакета ('B') вычисляется как сумма нескольких входных экземпляров пакета и деление его на общее количество входы ('m').

В описанной выше операции отклонение входных данных (σ²) вычисляется путем возведения в квадрат стандартных отклонений входных данных. Чтобы вычислить стандартные отклонения, мы берем каждый входной экземпляр (Xi) в пределах текущего мини-пакета и вычитаем среднее значение (µB) мини-пакета, которое было вычислено в предыдущую операцию и возведите результат в квадрат.

Затем это значение возводится в квадрат для получения дисперсии (σ).

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

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

Член сглаживания (ε) обеспечивает численную стабильность внутри операции, останавливая деление на нулевое значение. Срок сглаживания обычно составляет 0,00005.

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

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

Трансформация BN - эффективный метод повышения производительности глубоких нейронных сетей.

Преимущества пакетной нормализации

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

Заключение

Алгоритм BN не так сложен, как может показаться.

Сложность реализации BN в нейронной сети абстрагируется за счет внедрения современных библиотек машинного обучения, таких как TensorFlow и PyTorch. Это делает реализацию BN в нейронной сети тривиальной задачей.

Понять, как работает алгоритм пакетной нормализации, по-прежнему стоит.