CS/딥러닝

[딥러닝] 5. Mini batch와 Batch Normalization

CSE 2026. 4. 1. 10:35

Batch

이전 글에서 효율적인 행렬연산을 위해 여러 데이터를 붙이는 Vectorization을 얘기했었다.

좋은 방법이지만 만약 데이터의 수가 너무 많아지면 메모리가 부족해질 수 있다.

그래서 mini batch를 사용한다.

데이터의 일부만을 묶어서 사용하는 방법이다.

계산이 크게 달라지는 것 없이 그냥 mini batch를 전체 데이터라고 생각하면 된다.

 

예를 들어 500만 개의 데이터를 다룰 때 1000개씩 끊어서 이용한다면,

batch size는 1000,

mini batch 수는 5000이 된다.

 

한 세트를 처리하는 것을 1 iteration이라고 하고, 위 예시의 경우 5000번의 iteration을 수행하면 전체 데이터를 다 보게 되는데,

이를 1 epoch라고 한다.

 

미니배치 사이즈 정하기

미니배치가 무엇인지는 알았지만 이 크기를 어떻게 정할까라는 의문이 남는다.

극단적으로 생각해보면 배치 사이즈를 전체 데이터와 똑같이 한다면 처음에 얘기한 메모리 부족 등의 문제가 생길 것이다.

반대로 배치 사이즈를 1로 설정한다면 Vectorization의 이점을 사용할 수 없다.

 

적당한 크기의 배치사이즈를 정하는 것은 학습의 측면에서도 좋은 점이 있다.

아래와 같은 그림을 생각해보자.

각 타원은 등고선처럼 loss함수의 값이 같은 부분을 연결해 놓은 것이라고 생각하면 된다.

시작점에서 타원의 중심까지 일반 batch는 거의 최단거리로 잘 가는 모습을 볼 수 있다.

하지만 만약 가는 길에 local minimum을 만나게 되면 그 곳에 갇히게 된다.

그러나 mini batch는 이리저리 튀면서 움직이므로 local minimum을 만나더라도 튀어서 탈출할 수 있다.

 


Batch Normalizaiton

미니 배치 단위에서 신경망에 들어가는 데이터의 평균과 분산을 구한다.

먼저 이를 사용해 정규화한다.

이때 우리가 고등학교 때 통계에서 배운 것처럼 (0,1)의 분포를 만들기 위해 평균을 빼고 표준편차로 나눈다.

만약 분산이 0이라면 0으로 나누는 문제가 발생하므로 작은 값을 더해 나눈다.

이렇게 만든 (0,1)분포에서 특정 값($\gamma$)을 곱하고 특정 값을 더해 ($\beta$) 새로운 값을 만든다.

이 두가지 변수는 학습이 가능한 값이다.

이 값이 BN을 적용한 후의 최종 출력이다.

 

전체 흐름을 따지자면 아래와 같다.

1. $z = Wa + b$ 계산

2. $\to z_{norm}$ (0,1)로 정규화

3. $\gamma$와 $\beta$를 적용해 $\tilde{z}$ 생성 

4. $\sigma(\tilde{z})$ : 시그모이드나 ReLU같은 activation function에 통과시킴

5. 다음층의 입력으로 전달

 

이때 최종적으로 학습되는 변수는 $W,b,\gamma,\beta$라고 생각할 수 있다.

하지만 조금 생각해보면 정규화 과정에서 평균을 빼는 과정이 들어가기 때문에 $+b$가 무의미해지는 것을 알 수 있다.

따라서 BN을 쓰는 층에서는 $b$를 학습하지 않는다.

이렇게 전체 데이터를 shift하는 역할은 $\beta$가 수행하게 된다.

 

마지막으로 train이 아닌 test때는 어떨지 생각해보자.

train시에는 mini batch로 여러개의 데이터를 다루기 때문에 평균, 분산이라는 값을 구할 수 있었다.

하지만 test시에는 하나의 데이터를 받아 계산하게 된다.

 

mini batch들을 통해 학습했을 때 구해졌던 평균과 분산들을 누적해서 총 데이터의 평균, 분산을 계산해놓는다.

이를 사용해서 test를 하게 된다.

 

이 BN이 왜 필요할까?

입력을 정규화하게 되면 입력이 급격하게 바뀌어도 안정적이고 학습이 빨라진다.

BN이 없을 경우 신경망의 층이 깊을 때는 앞부분의 변화가 점차 증폭되는 문제가 생길 수 있는데 

BN을 사용하면 층이 깊어져도 더 안정적으로 유지할 수 있다.

 

예를 들어 학습이 다 검정 고양이로 이루어졌어도 BN을 적용하면 색상 변화에 강인해지므로 색이 있는 고양이도 잘 분류할 수 있게 된다.