Узнайте, как пакетная нормализация стабилизирует модели глубокого обучения. Узнайте, как Ultralytics использует BatchNorm для ускорения обучения и повышения точности ИИ.
Пакетная нормализация, часто называемая BatchNorm, — это метод, используемый в глубоком обучении (DL) для стабилизации и ускорения обучения искусственных нейронных сетей. Введенный для решения проблемы внутреннего сдвига ковариат — когда распределение входов в слой непрерывно меняется по мере обновления параметров предыдущих слоев — BatchNorm стандартизирует входы в слой для каждого мини-пакета. Нормализуя входы слоя так, чтобы их среднее значение было равно нулю, а стандартное отклонение — единице, а затем масштабируя и сдвигая их с помощью обучаемых параметров, этот метод позволяет сетям использовать более высокие скорости обучения и снижает чувствительность к инициализации.
В стандартной сверточной нейронной сети (CNN) данные проходят через слои, каждый из которых выполняет преобразование. Без нормализации масштаб выходных значений может сильно варьироваться, что затрудняет алгоритму оптимизации поиск оптимальных весов. Нормализация партий обычно применяется непосредственно перед функцией активации (такой как ReLU или SiLU).
Процесс включает в себя два основных этапа во время обучения:
Этот механизм действует как форма регуляризации, слегка снижая необходимость в других техниках, таких как слои Dropout, путем добавления небольшого количества шума к активациям во время обучения.
Интеграция пакетной нормализации в архитектуры, такие как ResNet или современные детекторы объектов, дает несколько явных преимуществ:
Пакетная нормализация является основным элементом практически каждой современной системы компьютерного зрения (CV).
Полезно отличать пакетную нормализацию от стандартной нормализации данных.
Фреймворки глубокого обучения, такие как PyTorch включают оптимизированные реализации пакетной нормализации. ВYOLO Ultralytics YOLO эти слои автоматически интегрируются в блоки свертки.
Следующие Python Фрагмент кода демонстрирует, как проверить модель, чтобы увидеть,
где BatchNorm2d слои расположены внутри архитектуры.
from ultralytics import YOLO
# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")
# Print the model structure to view layers
# You will see 'BatchNorm2d' listed after 'Conv2d' layers
print(model.model)
Понимание взаимодействия этих слоев помогает разработчикам при использовании Ultralytics для тонкой настройки моделей на пользовательских наборах данных, обеспечивая стабильность обучения даже при ограниченном объеме данных.