머신러닝을 깊이 공부하다 보면, 이론보다 실전이 더 중요한 순간들이 있다. 특히 '그라디언트 디센트 (Gradient Descent)'라는 최적화 방법을 배울 때는 그 종류와 특징을 이해하는 것이 모델 학습의 성패를 좌우한다.
배치란 단순히 '데이터 묶음'이 아니다. 파라미터 업데이트 한 번에 사용되는 데이터셋을 의미한다. 이는 마치 한 번에 얼마나 많은 경험을 바탕으로 의사결정을 내리느냐와 비슷하다. 전체 경험을 다 고려할 것인가, 아니면 가장 최근 경험 하나만 볼 것인가? 아니면 그 중간쯤?
딥러닝에서 파라미터 업데이트는 '포워드 패스(Forward pass) → 코스트(Cost) 계산 → 백프로파게이션(Backpropagation) → 파라미터(Parameter) 업데이트'라는 사이클을 거친다. 이 과정에서 '얼마나 많은 데이터'로 코스트를 계산하느냐가 배치 크기(batch size)를 결정한다.
그라디언트 디센트는 크게 세 가지 방식으로 나뉜다:
1. 배치 그라디언트 디센트(Batch Gradient Descent)
전체 데이터셋을 한 번에 사용
장점: 정확한 방향으로 움직이며, 노이즈에 강함
단점: 메모리 소모가 크고 속도가 느림, 온라인 학습 불가능
2. 스토캐스틱 그라디언트 디센트(Stochastic Gradient Descent)
데이터 하나씩 파라미터 업데이트
장점: 속도가 빠르고 온라인 학습 가능
단점: 방향이 불안정하고 노이즈에 취약함
3. 미니배치 그라디언트 디센트(Mini-batch Gradient Descent)
적당한 크기(예: 100개)의 데이터로 파라미터 업데이트
장점: 두 방법의 장점을 결합(속도 빠름, 방향 안정적)
단점: 배치 크기라는 하이퍼파라미터 조정 필요
미니배치 방식을 사용할 때는 데이터를 랜덤하게 섞는 것이 필수다. 순차적으로 가져오면 학습에 편향이 생긴다. 예를 들어, 꽃 이미지 데이터가 종류별로 정렬되어 있다면, 순차적 학습은 그때그때 '모든 꽃은 장미다', '모든 꽃은 튤립이다'와 같은 극단적 결론으로 이어진다.
대신 각 미니배치에 다양한 클래스의 데이터가 골고루 포함되도록 랜덤 샘플링을 해야 한다.
학습 과정을 이해할 때 두 가지 단위가 중요하다:
에폭(Epoch): 전체 데이터셋을 한 번 모두 학습한 단위
이터레이션(Iteration): 파라미터 업데이트 한 번을 의미
만약 100만 개의 데이터를 배치 크기 100으로 학습한다면, 1 에폭은 10,000 이터레이션이 된다. 이 과정을 여러 번(여러 에폭) 반복하며 모델을 정교화한다.
현실적으로 딥러닝에서는 미니배치 그라디언트 디센트가 표준이 되었다. 이 방법은 종종 '스토캐스틱 그라디언트 디센트'라는 이름으로 불리기도 하지만, 엄밀히 말하면 배치 크기가 1보다 큰 미니배치 방식이다.
배치 크기 선택은 GPU 메모리, 모델 크기, 데이터 특성을 고려하여 결정한다. 너무 작으면 훈련이 불안정하고, 너무 크면 일반화 성능이 떨어지는 경향이 있다. 일반적으로 16, 32, 64, 128, 256 등의 2의 제곱수를 많이 사용한다.
실험 결과, 같은 에폭 수로 비교할 때 미니배치 방식이 가장 효율적으로 학습 목표에 접근한다. 배치 방식은 정확하지만 느리고, 스토캐스틱 방식은 빠르지만 불안정한 반면, 미니배치는 이 두 접근법의 균형점을 찾는다.
딥러닝의 성공 비결은 결국 '많은 데이터'와 '효율적인 학습 방법'의 조합이다. 그리고 그 중심에 미니배치 그라디언트 디센트가 있다.