1. Batch

- 배치 정규화를 설명하기에 앞서서 gradient descent 방법에 대하여 한번 생각해 보도록 하겠습니다.
- 먼저 위와 같이 일반적인 gradient descent에서는 gradient를 한번 업데이트 하기 위하여 모든 학습 데이터를 사용합니다.
- 즉, 학습 데이터 전부를 넣어서 gradient를 다 구하고 그 모든 gradient를 평균해서 한번에 모델 업데이트를 합니다.
- 이런 방식으로 하면 대용량의 데이터를 한번에 처리하지 못하기 때문에 데이터를
batch
단위로 나눠서 학습을 하는 방법을 사용하는 것이 일반적입니다.

- 그래서 사용하는 것이 stochastic gradient descent 방법입니다.
- SGD에서는 gradient를 한번 업데이트 하기 위하여
일부의 데이터
만을 사용합니다. 즉, batch
size 만큼만 사용하는 것이지요.
- 위 gradient descent의 식을 보면 ∑ 에 j = Bi가 있는데 B 가
batch
의 크기가 됩니다.
- 한 번 업데이트 하는 데 B 개의 데이터를 사용하였기 때문에 평균을 낼 때에도 B 로 나누어 주고 있습니다.

- 용어를 살펴보면 학습 데이터 전체를 한번 학습하는 것을
Epoch
라고 하고 Gradient를 구하는 단위를 Batch
라고 합니다.
2. Internal Covariant Shift

Batch
단위로 학습을 하게 되면 Internal Covariant Shift 문제 가 발생합니다.
- 먼저 Internal Covariant Shift 의미를 알아보면 위 그림과 같이 학습 과정에서 계층 별로 입력의 데이터 분포가 달라지는 현상을 말합니다.
- 각 계층에서 입력으로 feature를 받게 되고 그 feature는 convolution이나 위와 같이 fully connected 연산을 거친 뒤 activation function을 적용하게 됩니다.
- 그러면 연산 전/후에 데이터 간 분포가 달라질 수가 있습니다.