Уровень нормализации пакета
Уровень пакетной нормализации нормализует мини-пакет данных по всем наблюдениям для каждого канала независимо. Чтобы ускорить обучение сверточной нейронной сети и снизить чувствительность к инициализации сети, используйте уровни пакетной нормализации между сверточными слоями и нелинейностями, такими как уровни ReLU.
После нормализации уровень масштабирует входные данные с помощью обучаемого масштабного коэффициента γ и сдвигается на обучаемое смещение β.
создает слой нормализации пакета.layer = batchNormalizationLayer
создает слой нормализации пакета и задает необязательный layer = batchNormalizationLayer(Name,Value)TrainedMean, TrainedVariance, Epsilon, Параметры и инициализация, Скорость обучения и регуляризация, и Name с использованием одной или нескольких пар имя-значение. Например, batchNormalizationLayer('Name','batchnorm') создает слой нормализации пакета с именем 'batchnorm'.
Операция пакетной нормализации нормализует элементы xi входного сигнала, сначала вычисляя среднее значение мкВ и σB2 дисперсии по пространственным, временным и наблюдательным измерениям для каждого канала независимо. Затем он вычисляет нормализованные активации как
где ϵ - константа, которая улучшает числовую стабильность, когда дисперсия очень мала.
Для обеспечения возможности того, что входные данные с нулевым средним и единичной дисперсией не являются оптимальными для операций, которые следуют за пакетной нормализацией, операция пакетной нормализации дополнительно сдвигает и масштабирует активации с помощью преобразования.
i + β,
где смещение β и масштабный коэффициент γ являются обучаемыми параметрами, которые обновляются во время обучения сети.
Чтобы делать прогнозы с сетью после обучения, для нормализации партии требуется фиксированное среднее значение и отклонение для нормализации данных. Это фиксированное среднее значение и дисперсия могут быть рассчитаны на основе данных обучения после обучения или аппроксимированы во время обучения с использованием текущих статистических вычислений.
Если 'BatchNormalizationStatistics' вариант обучения - 'moving', то программное обеспечение аппроксимирует статистику нормализации пакета во время обучения с использованием текущей оценки и после обучения устанавливает TrainedMean и TrainedVariance свойства к последним значениям скользящих оценок среднего значения и дисперсии соответственно.
Если 'BatchNormalizationStatistics' вариант обучения - 'population', то после завершения обучения сети программное обеспечение проходит через данные еще раз и устанавливает TrainedMean и TrainedVariance свойства для среднего значения и дисперсии, вычисленные из всего набора обучающих данных, соответственно.
Слой использует TrainedMean и TrainedVariance нормализовать входные данные во время прогнозирования.
[1] Иоффе, Сергей и Кристиан Сегеди. «Пакетная нормализация: ускорение глубокого обучения сети путем уменьшения внутреннего ковариатного сдвига». препринт, arXiv:1502.03167 (2015).
convolution2dLayer | fullyConnectedLayer | groupNormalizationLayer | layerNormalizationLayer | reluLayer | trainingOptions | trainNetwork