Search
Duplicate

경사하강법3형제 비교simul

목차(클릭하세요)
경사하강법의 세 가지 방식(Batch GD / SGD / Mini-batch GD)은 “몇 개의 데이터로 기울기를 계산하느냐” 의 차이만 있을 뿐, 가중치는 항상 전부 동시에 업데이트됨.

1. 경사하강법(Gradient Descent) 기본 구조

1-1. 한 번의 업데이트 과정

경사하강법의 업데이트는 항상 아래 순서로 진행됨.
1.
데이터를 신경망에 통과시켜 오차(Loss) 계산
2.
역전파로 모든 가중치의 편미분(∂E/∂w) 동시 계산
3.
계산된 편미분으로 모든 가중치 동시 업데이트
Wnew=WoldηEWW_{new} = W_{old} - \eta \cdot \frac{\partial E}{\partial W}
가중치를 하나씩 순서대로 업데이트하면 안 되는 이유: w1을 먼저 바꾸면 오차 E가 달라지고, 달라진 E 기준으로 w2를 바꾸게 됨 → 원래 전체 오차 기준의 기울기가 아니게 됨.

1-2. 랜덤으로 선택하는 것은 “가중치”가 아니라 “데이터”

SGD에서 헷갈리기 쉬운 부분.
잘못된 이해: 수많은 가중치 중 1개를 랜덤으로 골라 업데이트
정확한 이해: 전체 데이터 중 데이터 1개를 랜덤으로 선택 → 그 데이터로 모든 가중치 동시 업데이트

2. 경사하강법의 세 가지 방식 비교

2-1. 핵심 비교표

구분
Batch GD
SGD
Mini-batch GD
한 번에 쓰는 데이터
전체
1개
일부 (batch size 단위)
Epoch당 업데이트 횟수
1번
N번
N/BS번
오차 수렴 방향
정확
지그재그 (노이즈 많음)
중간
오차 수렴 속도
중간
가장 느림
가장 빠름
실제 사용 여부
거의 안 씀
거의 안 씀
사실상 표준

2-2. 업데이트 횟수 계산 예시

데이터 100개, batch size = 10, Epoch = 5일 때:
Batch GD : 1회 × 5 Epoch = 5번 SGD : 100회 × 5 Epoch = 500번 Mini-batch : 10회 × 5 Epoch = 50번
Plain Text
복사

3. Epoch과 배치의 관계

3-1. Epoch이란

1 Epoch = 전체 데이터를 한 바퀴 도는 것.
Epoch 수는 전체 데이터를 몇 바퀴 돌리느냐의 문제
배치 방식과 독립적인 설정

3-2. Mini-batch의 전체 흐름

Mini-batch는 전체 데이터를 일정 크기의 묶음으로 나누어 순서대로 모두 사용하는 방식.
데이터 100개, BS=10 → 10묶음으로 분할 Epoch 1: 묶음1 → 묶음2 → ... → 묶음10 (업데이트 10번) Epoch 2: 묶음1 → 묶음2 → ... → 묶음10 (업데이트 10번) ... 총 업데이트: 10 × Epoch 수
Plain Text
복사
전체 데이터를 못 쓰는 상황은 학습을 중간에 강제로 끊을 때 발생함. Epoch 수가 적다고 데이터를 못 쓰는 것이 아님.

3-3. Epoch 수와 과적합

Epoch 수
문제
너무 적음
과소적합 (Underfitting)
너무 많음
과적합 (Overfitting)
→ 적절한 Epoch 수를 찾는 것도 하이퍼파라미터 튜닝의 하나.

4. 시뮬레이터 활용 포인트

4-1. 확인할 수 있는 것

세 방식에서 데이터가 어떻게 선택되는지 단계별로 시각화
슬라이더로 데이터 수 / 배치 크기 / Epoch 수를 조정하며 업데이트 횟수 변화 확인
하단 요약 카드로 세 방식의 총 업데이트 횟수 실시간 비교

4-2. 핵심 관찰 포인트

총 업데이트 횟수 비교 (N=100, BS=10, Epoch=5) - Batch GD : 5번 → 안정적이나 느림 - SGD : 500번 → 빠르나 노이즈 많음 - Mini-batch : 50번 → 균형점
Plain Text
복사
“model.fit(batch_size=32, epochs=100)”에서 batch_size=32가 Mini-batch의 묶음 크기이고, epochs=100이 전체 데이터를 100바퀴 돌리겠다는 의미임.