Batch는 인공지능(특히 딥러닝)에서 데이터를 처리하는 단위를 의미한다. 신경망을 학습할 때 전체 데이터를 한꺼번에 처리하지 않고, 여러 개의 작은 묶음(즉, 배치)으로 나누어 처리한다. 이는 메모리 사용량을 줄이고, 병렬 처리의 효율성을 높이며, 학습 과정에서의 안전성을 높이는 등의 이점이 있다.
2. Batch의 종류
1. 배치 학습 (Batch Learning): 전체 데이터를 한 번에 학습하는 방식. 일반적으로 메모리가 많이 소모되며 큰 데이터셋에서는 비효율적이다.
2. 미니배치 학습 (Mini-Batch Learning): 전체 데이터를 작은 묶음으로 나누어 학습하는 방식. 일반적으로 많이 사용된다.
3. 확률적 경사 하강법 (Stochastic Gradient Descent, SGD): 전체 데이터셋 중 하나의 데이터 포인트를 무작위로 선택하여 매번 업데이트를 수행하는 방식. 전통적인 배치 학습과 대비된다.
3. Batch의 장점
효율적인 메모리 사용: 한 번에 처리하는 데이터의 양을 줄여 메모리 사용을 최적화할 수 있다.
속도 향상: 병렬 처리가 가능해져 학습 속도를 향상시킬 수 있다.
일반화 성능 향상: 학습 도중 여러 배치의 데이터를 이용해 모델이 더 일반화될 수 있다.
4. 연산 예제
\(z = Wx + b\)
\(y = activation(z)\)
Batch Sum
Batch Add
5. Batch Center at Zero
데이터 전처리 과정에서 흔히 사용되는 기술 중 하나로, 각 배치의 데이터 평균을 0으로 맞추는 것을 의미한다. 이는 데이터를 정규화하거나 표준화하는 과정의 일환으로, 신경망 학습의 안전성과 성능을 향상시키기 위해 사용된다.
데이터 중심화 (Centering the data)
각 특성(feature)의 평균을 0으로 조정한다. 이는 데이터를 중심화(centering)하는 과정이다.
배치 데이터를 사용하여 각 특성의 평균을 계산하고, 해당 평균을 각 데이터 포인트에서 빼준다.
목적
가속화된 학습(Accelerated Training): 데이터 중심화는 경사하강법(Gradient Descent)의 수렴 속도를 가속화할 수 있다.
숫자 안정성(Numerical Stability): 큰 숫자 범위로 인해 발생할 수 있는 수치적 불안정을 줄일 수 있다.
균형적인 업데이트(Balanced Updates): 가중치 업데이트가 보다 균형 있게 이루어질 수 있다.