딥러닝

고급 경사하강법 (BGS, SGD, MSGD)

타우루스 2026. 2. 18. 21:50

경사하강법에서 BGD(Batch Gradient Descent), SGD(Stochastic Gradient Descent), MSGD(Mini-batch Stochastic Gradient Descent)의 가장 큰 차이점은 ‘한 번의 가중치 업데이트를 위해 얼만큼의 데이터를 확인할 것인가(Batch Size)’에 있습니다.

 

이해를 돕기 위해 '100,000장의 학생 답안지를 채점하여 교육 방식을 개선(가중치 업데이트)하는 과정'에 비유하여 각 방식의 원리와 장단점을 상세히 설명하겠습니다.


1. BGD (Batch Gradient Descent, 배치 경사하강법)

전체 학습 데이터를 모두 한 번씩 확인한 후에야 가중치를 1회 업데이트하는 방식입니다. 여기서 '배치(Batch)'는 전체 데이터셋 전체를 의미합니다.

  • 비유: 100,000장의 답안지를 모두 채점하고 평균을 낸 뒤에야 교육 방식을 딱 1번 수정합니다.
  • 원리: 손실 함수 J(w)의 기울기를 계산할 때 전체 데이터 N개를 모두 사용합니다.

  • 장점:
    • 전체 데이터를 기반으로 계산하므로 기울기의 방향이 매우 정확하고, 업데이트 궤적이 부드럽고 안정적입니다.
    • 행렬 연산(Vectorization)을 최대한 활용할 수 있습니다.
  • 단점:
    • 속도 저하: 1회 업데이트를 위해 모든 데이터를 다 읽어야 하므로 학습 시간이 매우 오래 걸립니다.
    • 메모리 한계: 수백만 개의 거대한 데이터셋을 한 번에 메모리(RAM이나 GPU VRAM)에 올리는 것이 현실적으로 불가능합니다.
    • 지역 최솟값(Local Minimum): 궤적이 너무 매끄러워서 한 번 얕은 웅덩이(지역 최솟값)에 빠지면 빠져나오기 어렵습니다.

2. SGD (Stochastic Gradient Descent, 확률적 경사하강법)

전체 데이터 중 무작위로 뽑은 단 1개의 데이터만 확인하고 즉시 가중치를 업데이트하는 방식입니다.

  • 비유: 답안지 1장을 채점할 때마다 즉각적으로 교육 방식을 바꿉니다. 100,000장을 다 보기도 전에 이미 100,000번이나 방식을 바꾼 셈입니다.
  • 원리: 랜덤하게 선택된 i번째 데이터 쌍 (x^i, y^i) 하나만 사용하여 기울기를 계산합니다.

  • 장점:
    • 빠른 속도: 데이터 1개만 계산하면 되므로 1회 업데이트 속도가 매우 빠릅니다.
    • 지역 최솟값 탈출: 방향이 매번 크게 요동치기 때문에(High Variance), 얕은 지역 최솟값에 빠지더라도 튕겨져 나올 확률이 높습니다.
    • 메모리 효율: 메모리를 거의 차지하지 않습니다.
  • 단점:
    • 불안정한 수렴: 궤적이 심하게 지그재그로 진동하여 최적값을 정확히 찾지 못하고 주변을 맴돌 가능성이 큽니다.
    • 하드웨어 비효율성: GPU의 강력한 병렬 처리(행렬 연산) 능력을 제대로 활용하지 못합니다. (데이터 1개씩 연산하므로 병목 발생)

3. MSGD (Mini-batch Stochastic Gradient Descent, 미니 배치 경사하강법)

BGD의 '안정성'과 SGD의 '속도 및 지역 최솟값 탈출 능력'을 절충한 방식으로, 현재 딥러닝 실무에서 사용되는 사실상의 표준(Standard)입니다. 전체 데이터를 작은 묶음인 '미니 배치(Mini-batch)' 단위로 나누어 업데이트합니다.

  • 비유: 답안지를 64장씩 묶어서 채점한 후, 그 64장의 평균 성향을 반영해 교육 방식을 수정합니다.
  • 원리: 배치의 크기를 n (보통 32, 64, 128, 256 등 2^k 단위)으로 설정하여 기울기를 계산합니다.

  • 장점:
    • 균형 잡힌 성능: BGD보다 훨씬 빠르게 업데이트되면서도 SGD보다 궤적이 안정적입니다.
    • GPU 효율 극대화: 미니 배치 크기만큼의 데이터를 한 번에 행렬 연산으로 처리하므로 GPU의 병렬 처리 능력을 100% 활용할 수 있습니다.
  • 단점:
    • 하이퍼파라미터 튜닝: 학습률(α) 외에 배치 크기(Batch Size)라는 새로운 하이퍼파라미터를 모델과 하드웨어 스펙에 맞게 최적화해야 합니다.

핵심 요약 비교표

구분 한 번에 사용하는 데이터 양 (Batch Size) 1 Step당 연산 속도 업데이트 궤적(수렴 안정성) GPU 병렬 연산 활용도
BGD 전체 데이터 (Total N) 매우 느림 매우 안정적 (부드러움) 높음 (단, 메모리 한계 존재)
SGD 단 1개 (Size = 1) 매우 빠름 매우 불안정 (지그재그 진동) 매우 낮음
MSGD 미니 배치 단위 (Size = 32, 64 등) 빠름 적당함 (실무적 최적의 밸런스) 매우 높음 (최적화 됨)