일단 경사하강법과 확률적 경사하강법에 대해서 제대로 이해해야 한다.
경사하강법(Gradient Descent)은 함수의 최솟값 (or 최댓값)을 찾기 위한 최적화 알고리즘이다. 주로 모델의 loss function을 최소화하기 위해서 사용되는데 이때 기울기를 계산해 파라미터를 조금씩 조정하면서 최적의 값을 찾는 방식으로 진행된다.
- 경사하강법의 과정
- 함수의 임의의 점 (초기값) 선택
- 기울기 계산
- 파라미터 업데이트 (기울기의 반대방향)
- 반복
- 경사하강법의 종류
- 배치 경사하강법 (Batch Gradient Descent)
- : 모든 데이터를 사용해 기울기를 계산
- 확률적 경사하강법 (Stochastic Gradient Descent, SGD)
- : 데이터 하나씩 기울기를 계산
- 미니배치 경사하강법 (Mini-batch Gradient Descent)
- : 데이터의 일부인 미니 배치를 사용해 기울기를 계산
질문에서 이야기하는 경사하강법은 배치 경사하강법을 의미한다.
배치 경사하강법은 계산이 안정적이고 업데이트 횟수가 적다는 특징이 있다. 하나의 배치가 전체 학습 데이터이기 때문에 1 Epoch 당 1회 업데이트가 이루어진다.
하지만 이처럼 모든 데이터를 사용하기 때문에 메모리가 가장 많이 필요하고 느리다는 단점이 있다.

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

SGD의 경우 위에서 설명한 바와 같이 전체 데이터 중 하나의 데이터만 사용해 경사하강법을 진행하는 방식이다.
배치 경사하강법에 비해 속도가 빠르고 1회 학습을 진행할 때 하나의 데이터만 사용하기 때문에 계산량이 줄어든다는 장점이 있으며 안정적으로 수렴되지 않는다는 특징이 있다. 이때 안정적으로 수렴되지 않는다는 게 단점으로 보일 수 있지만 단점만은 아니다. 각 데이터에 대한 loss의 기울기는 약간씩 다르기 때문에 손실값의 평균이 아닌 개별 데이터에 대해 미분을 수행하면 기울기의 방향이 매번 크게 바뀌게 된다. 이러한 것을 Noise라고 표현하는데 Noise는 Local minima에 빠질 확률을 줄여준다.
하지만 Noise가 심하다는 단점도 존재하고 이렇게 되면 Global Minimum에 수렴하기 어렵다는 단점이 있다.
그렇다면 질문에 대한 답은 뭘까?
❓ 질문: 1000개의 데이터를 이용하여 모델 학습을 1 에폭 수행할 때 경사하강법과 확률적 경사하강법의 계산 시행 횟수(iteration)는 각각 몇 회가 되는가?
바로 경사하강법은 1 Epoch에 모든 학습 데이터가 한 번에 학습되기 때문에 계산 시행 횟수가 1회가 되고, 확률적 경사하강법은 1 Epoch에 1개의 학습 데이터마다 학습되기 때문에 1000회의 학습이 진행되고 계산 시행 횟수는 1000회가 된다.
논외: 그렇다면 경사하강법, 확률적 경사하강법 보다 좋은 게 뭘까?
위에서 간단하게 언급한 미니배치 경사하강법 (Mini-batch Gradient Descent)이다.

미니배치 경사하강법은 경사하강법, 확률적 경사하강법의 절충안으로 전체 데이터를 사용자가 임의로 지정한 batch_size로 나눠 경사하강법을 진행하는 것이다.
예를 들어서 전체 데이터가 1000개, batch_size가 10일 때 1 Epoch에 10개의 학습 데이터가 하나의 배치로 100번의 학습이 일어나고 때문에 1 Epoch 당 100번 경사하강법을 진행하게 된다.
참고 사이트
'헷개정 - 헷갈리는 개념 정리' 카테고리의 다른 글
| 왜 데이터를 zero-centering하고 normalization 해야 할까? (0) | 2025.09.26 |
|---|---|
| 두 Vector 사이의 각도, 내적, 유사도? (0) | 2025.09.16 |
| dtype? type? (0) | 2025.09.16 |
| 코사인 유사도를 구할 때 왜 Tensor의 내적을 활용할까? (0) | 2025.09.03 |
| 채널은 맨 앞에? 맨 뒤에? (1) | 2025.09.02 |