안녕하세요!
신경망을 공부하다 보면 Batch Normalization이라는 이름을 자주 만나게 됩니다.
왜 거의 같은 층이 학습할 때와 예측할 때 다르게 동작할까요?
배치 노멀라이제이션은 계산식만 외우면 오히려 헷갈리기 쉽습니다.
무엇을 맞추는지부터 두 단계의 차이까지 차근차근 살펴보겠습니다.
배치 노멀라이제이션이란?
배치 노멀라이제이션은 신경망 중간값의 크기를 일정한 범위로 조절하는 기법입니다.
한국어로는 흔히 배치 정규화라고 부릅니다.
여기서 배치는 학습 데이터를 한꺼번에 처리하는 작은 묶음입니다.
이 작은 묶음을 정확히는 미니배치라고 합니다.
예를 들어 데이터가 10만 개여도 모두 동시에 계산하지는 않습니다.
32개나 128개처럼 작은 묶음으로 나누어 학습할 수 있습니다.
배치 노멀라이제이션은 이 묶음에서 특성별 통계를 구합니다.
핵심 통계는 평균과 분산입니다.

정규화는 무엇을 계산할까?
먼저 한 특성에 속한 값들의 평균을 계산합니다.
그다음 각 값이 평균에서 얼마나 퍼졌는지 분산으로 측정합니다.
미니배치의 값이 x₁부터 xₘ까지라면 평균은 다음과 같습니다.
μB = (x₁ + x₂ + … + xₘ) ÷ m
분산은 각 값과 평균의 차이를 제곱한 뒤 평균 낸 값입니다.
σ²B = Σ(xᵢ − μB)² ÷ m
이제 각 값에서 평균을 빼고 표준편차로 나눕니다.
x̂ᵢ = (xᵢ − μB) ÷ √(σ²B + ε)
ε은 아주 작은 양수로, 분모가 0이 되는 일을 막습니다.
정규화된 값은 평균 0, 분산 1에 가까운 분포를 갖습니다.
다만 계산은 여기서 끝나지 않습니다.
신경망은 정규화된 값의 크기와 위치를 다시 조정합니다.
yᵢ = γx̂ᵢ + β라는 변환을 마지막에 적용합니다.
γ는 크기, β는 중심을 조절하는 학습 가능한 값입니다.
따라서 최종 출력이 항상 평균 0과 분산 1인 것은 아닙니다.
모델은 필요한 분포를 γ와 β를 통해 스스로 학습합니다.
숫자로 계산해 보는 간단한 예시
한 특성의 미니배치 값이 2, 4, 6, 8이라고 가정해 보겠습니다.
네 값의 평균은 5입니다.
평균과의 차이는 각각 −3, −1, 1, 3입니다.
이를 제곱한 값은 9, 1, 1, 9입니다.
제곱한 값의 평균은 5이므로 분산은 5입니다.
표준편차는 √5로 약 2.236입니다.
ε을 잠시 무시하면 정규화 결과는 약 −1.34, −0.45, 0.45, 1.34입니다.
큰 값과 작은 값의 상대적 순서는 그대로 유지됩니다.
정규화는 모든 값을 똑같게 만드는 작업이 아닙니다.
중심과 크기를 맞춰 비교적 다루기 편한 범위로 옮기는 작업입니다.
어느 방향으로 평균과 분산을 구할까?
배치 노멀라이제이션은 샘플 하나를 따로 정규화하지 않습니다.
같은 미니배치에 들어온 여러 샘플의 통계를 함께 사용합니다.
일반적인 완전연결층에서는 각 특성마다 통계를 구합니다.
특성이 100개라면 평균과 분산도 특성별로 계산됩니다.
합성곱 신경망에서는 보통 채널별로 계산합니다.
각 채널의 배치와 공간 위치를 모아 하나의 통계를 만듭니다.
따라서 이미지 한 장만의 밝기를 보정하는 과정과는 다릅니다.
같은 채널에 담긴 여러 활성값의 규모를 조절하는 과정입니다.
학습 단계에서는 현재 배치의 통계를 쓴다
학습과 추론의 차이는 배치 노멀라이제이션의 핵심입니다.
우선 학습 중에는 현재 미니배치의 평균과 분산을 사용합니다.
같은 샘플이라도 함께 묶인 데이터가 달라질 수 있습니다.
그러면 배치 통계와 정규화 결과도 조금씩 달라집니다.
이 과정에서 γ와 β는 가중치처럼 역전파로 학습됩니다.
배치의 평균과 분산 자체는 일반적인 모델 파라미터가 아닙니다.
또한 한 샘플의 결과가 같은 배치의 다른 샘플에 영향을 받습니다.
배치 노멀라이제이션의 Batch라는 이름도 이 특성에서 나옵니다.
추론 단계에서는 이동 평균을 쓴다
서비스에서 예측할 때는 데이터가 한 개씩 들어올 수 있습니다.
한 개만으로 구한 분산은 유용하지 않으며 안정적이지도 않습니다.
예측할 때마다 함께 들어온 샘플에 따라 결과가 달라져서도 곤란합니다.
그래서 추론에서는 현재 입력의 배치 통계를 쓰지 않습니다.
대신 학습 중 누적해 둔 평균과 분산을 사용합니다.
이 누적값을 보통 이동 평균 또는 실행 통계라고 부릅니다.
새 배치 통계가 들어올 때 기존 통계와 일정 비율로 섞습니다.
최근 값은 반영하되 한 배치 때문에 크게 흔들리지 않게 만드는 방식입니다.
개념적으로는 새 누적 평균을 다음처럼 만들 수 있습니다.
새 누적값 = 기존 누적값 × 비율 + 현재 통계 × 나머지 비율
프레임워크마다 momentum이라는 인자의 정의가 다를 수 있습니다.
수식에서 어느 쪽 계수를 뜻하는지 공식 문서를 확인해야 합니다.
추론에서는 저장된 통계로 정규화한 뒤 같은 γ와 β를 적용합니다.
따라서 입력이 한 개여도 일관된 방식으로 처리할 수 있습니다.
학습 모드와 평가 모드를 구분해야 하는 이유
배치 노멀라이제이션이 있는 모델은 실행 모드가 중요합니다.
학습 모드는 현재 배치 통계를 사용하고 누적 통계도 갱신합니다.
평가 모드는 저장된 이동 평균과 이동 분산을 사용합니다.
검증과 실제 예측에서는 보통 평가 모드로 전환해야 합니다.
이를 빠뜨리면 같은 샘플도 배치 구성에 따라 결과가 달라질 수 있습니다.
검증 점수가 예상보다 낮거나 불규칙해지는 원인이 되기도 합니다.
왜 학습이 더 안정적으로 진행될까?
앞쪽 층의 가중치가 바뀌면 뒤쪽 층에 전달되는 값도 변합니다.
값의 크기가 지나치게 커지거나 작아지면 최적화가 어려워질 수 있습니다.
가령 어떤 층의 출력이 갑자기 열 배 커졌다고 생각해 보겠습니다.
다음 층이 받는 입력과 기울기의 규모도 크게 흔들릴 수 있습니다.
배치 노멀라이제이션은 중간 활성값의 규모를 계속 다시 맞춥니다.
그 결과 각 층이 극단적으로 다른 크기의 입력을 받는 일이 줄어듭니다.
시그모이드처럼 큰 절댓값에서 기울기가 작아지는 함수도 있습니다.
입력이 한쪽 극단으로 몰리는 현상을 줄이면 기울기 전달에 도움이 됩니다.
가중치 크기가 조금 변해도 정규화가 출력 규모를 어느 정도 보정합니다.
최적화가 값의 절대 크기에 지나치게 민감해지는 문제를 줄여 줍니다.
이 때문에 더 큰 학습률을 사용할 수 있는 경우가 있습니다.
다만 항상 가능하다는 뜻은 아니므로 실험으로 확인해야 합니다.
매 미니배치의 통계가 조금씩 다른 점도 영향을 줍니다.
이 작은 흔들림은 학습 중 잡음처럼 작용할 수 있습니다.
이 잡음이 약한 규제 효과를 만들어 일반화에 도움을 줄 때도 있습니다.
하지만 드롭아웃이나 가중치 감쇠를 언제나 대신하지는 못합니다.
흔한 오해 바로잡기
오해 1: 내부 공변량 변화만 줄이는 기법이다
초기 설명에서는 층별 입력 분포의 변화를 줄인다고 강조했습니다.
이를 내부 공변량 변화 감소라고 부르기도 합니다.
그러나 이것만으로 모든 효과를 설명하기는 어렵다는 연구도 있습니다.
최적화 표면을 더 다루기 쉽게 만드는 효과 등이 함께 논의됩니다.
따라서 분포를 고정해서 학습된다고 단정하는 것은 부정확합니다.
실제로 학습 중 배치 통계와 γ, β는 계속 변합니다.
오해 2: 입력 데이터를 정규화하면 필요 없다
입력 정규화는 원본 데이터의 범위를 조절합니다.
배치 노멀라이제이션은 신경망 내부의 활성값을 다룹니다.
두 방법은 적용 위치와 사용하는 통계가 다릅니다.
상황에 따라 입력 정규화와 함께 사용할 수 있습니다.
오해 3: 모든 출력을 평균 0, 분산 1로 고정한다
중간의 정규화 결과는 평균 0과 분산 1에 가까워집니다.
하지만 최종 결과에는 학습 가능한 γ와 β가 적용됩니다.
필요하다면 모델은 정규화 이전과 비슷한 변환도 표현할 수 있습니다.
정규화가 표현력을 무조건 제한하는 것은 아닙니다.
오해 4: 배치 크기가 작아도 항상 잘 작동한다
배치가 매우 작으면 평균과 분산의 추정이 쉽게 흔들립니다.
특히 데이터 구성이 불균형하면 통계가 대표성을 잃을 수 있습니다.
이때는 여러 장치의 통계를 모으는 동기화 방식이 쓰이기도 합니다.
레이어 정규화나 그룹 정규화가 더 적합할 수도 있습니다.
어디에 배치하는 것이 좋을까?
고전적인 구성은 선형 연산이나 합성곱 뒤에 배치하는 방식입니다.
그다음 ReLU 같은 활성화 함수를 적용합니다.
다만 모든 신경망이 같은 순서를 사용하지는 않습니다.
일부 구조는 활성화 전후나 잔차 블록의 다른 위치에 둡니다.
이미 검증된 모델 구조를 구현한다면 원래 순서를 따르는 편이 안전합니다.
임의로 위치를 바꾸면 학습 특성과 성능이 달라질 수 있습니다.
직접 풀어 보는 짧은 연습
한 특성의 미니배치 값이 1, 3, 5, 7이라고 가정해 보세요.
먼저 평균과 분산을 직접 계산해 보겠습니다.
평균은 4이고 평균과의 차이는 −3, −1, 1, 3입니다.
분산은 (9 + 1 + 1 + 9) ÷ 4이므로 5입니다.
표준편차 √5로 각 차이를 나누면 정규화 결과를 얻습니다.
이전 예시와 중심만 다르고 정규화 결과는 같다는 점도 확인해 보세요.
다음으로 첫 값 1을 9로 바꾸면 다른 값의 결과도 달라집니다.
하나의 샘플이 배치 전체 통계에 영향을 주기 때문입니다.
핵심 정리
배치 정규화는 미니배치의 특성별 평균과 분산을 이용합니다.
정규화한 뒤 학습 가능한 γ와 β로 크기와 중심을 조절합니다.
학습 단계에서는 현재 배치 통계를 사용합니다.
추론 단계에서는 학습 중 누적한 이동 평균과 이동 분산을 사용합니다.
중간값의 규모가 과도하게 흔들리는 현상을 줄여 최적화를 돕습니다.
배치 통계의 잡음이 약한 규제 효과를 만들기도 합니다.
하지만 모든 모델과 배치 크기에서 항상 최선인 방법은 아닙니다.
특히 작은 배치와 학습·평가 모드 전환에 주의해야 합니다.
일부 이미지는 Pexels에서 제공되었습니다.
'공부' 카테고리의 다른 글
| SSD(Single Shot Detector)란? 구조와 탐지 원리 쉽게 이해하기 (0) | 2026.09.22 |
|---|---|
| Faster R-CNN이란? R-CNN 병목부터 RPN 데이터 흐름까지 (0) | 2026.09.22 |
| R-CNN이란? 후보 영역부터 객체 분류까지 쉽게 이해하기 (0) | 2026.09.21 |
| AI 논문을 잘 읽는 방법: 연구 질문부터 Figure·Method까지 실전 순서 (0) | 2026.09.17 |
| YOLO를 공부하기 전에 알아야 할 상식과 기초 지식 2편: IoU부터 mAP와 NMS까지 (0) | 2026.09.17 |