Yolo 비전 선전
선전
지금 참여하기
용어집

배치 정규화 (Batch Normalization)

배치 정규화가 딥러닝 모델을 안정화하는 방식을 살펴보세요. Ultralytics BatchNorm을 활용해 훈련 속도를 높이고 AI 정확도를 향상시키는 방법을 알아보세요.

배치 정규화(Batch Normalization, 흔히 BatchNorm이라 함)는 딥 러닝(DL) 에서 인공 신경망의 훈련을 안정화하고 가속화하기 위해 사용되는 기법이다. 이전 계층의 매개변수 업데이트에 따라 계층 입력의 분포가 지속적으로 변화하는 내부 공변량 이동(internal covariate shift) 문제를 해결하기 위해 도입된 BatchNorm은 각 미니배치에 대해 계층 입력값을 표준화한다. 레이어 입력값을 평균 0, 표준편차 1로 정규화한 후 학습 가능한 매개변수로 스케일링 및 시프트함으로써, 이 방법은 네트워크가 더 높은 학습률을 사용할 수 있게 하고 초기화에 대한 민감도를 감소시킵니다.

배치 정규화 작동 방식

표준 컨볼루션 신경망(CNN)에서는 데이터가 각 층에서 변환을 수행하는 층들을 통과합니다. 정규화 없이 출력 값의 규모는 크게 달라질 수 있어 최적화 알고리즘이 최적의 가중치를 찾기 어렵게 만듭니다. 배치 정규화는 일반적으로 활성화 함수 (ReLU나 SiLU 등) 바로 직전에 적용됩니다.

훈련 과정에는 두 가지 주요 단계가 포함됩니다:

  1. 정규화: 레이어는 현재 배치 크기 내 활성화 값의 평균과 분산을 계산합니다. 그런 다음 배치 평균을 빼고 배치 표준 편차로 나눕니다.
  2. 스케일링과 시프트: 네트워크가 여전히 복잡한 함수를 표현할 수 있도록 하기 위해, 두 개의 학습 가능한 매개변수(감마와 베타)가 도입됩니다. 이를 통해 최적의 데이터 분포가 표준 정규 분포가 아닐 경우 네트워크가 정규화를 되돌릴 수 있게 합니다.

이 메커니즘은 정규화 기법의 일종으로 작용하여, 훈련 중 활성화 값에 소량의 노이즈를 추가함으로써 드롭아웃 레이어와 같은 다른 기법의 필요성을 약간 줄여줍니다.

AI 훈련의 주요 이점

배치 정규화를 ResNet이나 현대적 객체 탐지기와 같은 아키텍처에 통합하면 여러 가지 뚜렷한 장점을 제공합니다:

  • 더 빠른 수렴: 정규화가 기울기가 너무 작아지거나 커지는 것을 방지하여 소멸하는 기울기 문제를 효과적으로 해결하므로 모델 훈련 속도가 현저히 빨라집니다.
  • 안정성: 이는 네트워크가 초기 가중치 선택과 하이퍼파라미터 조정에 덜 민감하게 만들어 모델 훈련 과정을 더욱 견고하게 합니다.
  • 개선된 일반화 능력: 최적화 경사도를 평탄화함으로써 배치 정규화는 모델이 미확인 테스트 데이터에 대해 더 나은 일반화 능력을 발휘하도록 돕습니다.

실제 애플리케이션

배치 정규화는 거의 모든 현대적인 컴퓨터 비전(CV) 시스템의 핵심 요소입니다.

  1. 자율 주행: 자율 주행 차량 시스템에서 Ultralytics 같은 모델은 영상 프레임을 처리하여 보행자, 차량 및 표지판을 detect . BatchNorm은 조명 강도나 기상 조건의 변화와 무관하게 객체 탐지 레이어가 안정적으로 유지되도록 하여 높은 평균 정밀도(mAP)를 유지합니다.
  2. 의료 영상: 의료 영상에서 종양 검출을 수행할 때, 스캔 데이터는 서로 다른 MRI 또는 CT 장비 간에 크게 다를 수 있습니다. BatchNorm은 이러한 특징들을 내부적으로 정규화하여 AI가 픽셀 강도 차이보다는 구조적 이상에 집중할 수 있게 함으로써, 의료 AI 솔루션의 진단 정확도를 향상시킵니다.

배치 정규화 vs. 데이터 정규화

배치 정규화를 표준 데이터 정규화와 구분하는 것이 유용합니다.

  • 데이터 정규화는 훈련 시작 전에 원시 입력 데이터셋에 적용되는 전처리 단계입니다(예: 이미지 크기 조정 및 픽셀 값을 0-1로 스케일링). 이 단계에는 Albumentations와 같은 도구가 흔히 사용됩니다.
  • 배치 정규화는 훈련 과정 자체에서 신경망 레이어 내부에서 발생합니다. 데이터가 네트워크를 통과할 때 네트워크의 내부 값을 동적으로 조정합니다.

구현 예시

딥 러닝 프레임워크들처럼 PyTorch 에는 배치 정규화(Batch Normalization)의 최적화된 구현체가 포함됩니다.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 활용해 사용자 지정 데이터셋에서 모델을 미세 조정할 때 도움이 되며, 제한된 데이터로도 훈련 과정이 안정적으로 유지되도록 보장합니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기