모델

경사 하강법

Gradient Descent

경사 하강법은 모델이 틀린 정도(손실)가 줄어드는 방향, 즉 기울기의 반대 방향으로 파라미터를 조금씩 고쳐 가는 최적화 방법이다. 딥러닝 모델을 학습하거나 파인튜닝할 때 거의 항상 이 방법이 돌아간다.

방식한 걸음에 쓰는 데이터특징
배치 경사 하강법전체 데이터안정적이지만 느리고 메모리를 많이 쓴다
확률적 경사 하강법(SGD)샘플 1개빠르지만 움직임이 들쭉날쭉하다
미니배치 SGD작은 묶음실무 표준, GPU와 잘 맞는다

눈을 감고 산을 내려갈 때 발밑 경사를 느끼며 낮은 쪽으로 한 걸음씩 옮기는 것과 같다.

보폭(학습률)이 성패를 가른다

학습률(learning rate)은 한 번에 움직이는 보폭이다. 경사 하강법에서 가장 먼저, 가장 자주 손보는 설정이다. 손실 그래프 모양을 보면 어느 쪽이 문제인지 알 수 있다.

학습률손실 그래프 모습대처
너무 크다출렁이거나 발산(NaN)낮춘다
적당하다꾸준히 내려가다 평평해진다유지한다
너무 작다아주 천천히 내려간다높이거나 스케줄을 바꾼다

실무에서는 처음에 학습률을 서서히 올리고(warmup) 뒤로 갈수록 줄이는 학습률 스케줄러를 함께 쓰는 경우가 많다.

코드에서는 다섯 단계가 한 걸음

PyTorch에서는 미니배치마다 같은 순서를 반복한다. 기울기 초기화(optimizer.zero_grad()) → 예측 → 손실 계산 → 기울기 계산(loss.backward()) → 파라미터 갱신(optimizer.step()). 실제로 한 걸음 내려가는 것은 마지막 step()이다.

초기화를 빼먹으면 이전 배치의 기울기가 계속 쌓여 엉뚱하게 학습된다. scikit-learn에서는 SGDClassifier, SGDRegressor로 같은 원리를 쓸 수 있다. 다만 입력 특성의 크기가 제각각이면 잘 수렴하지 않으므로 StandardScaler로 먼저 표준화하는 것이 좋다.

옵티마이저는 경사 하강법의 개량판

Adam, AdamW, Lion 같은 옵티마이저도 뿌리는 경사 하강법이다. 지난 기울기를 기억해 방향을 부드럽게 잡고(모멘텀), 파라미터마다 보폭을 알아서 조절해 더 빨리 수렴한다.

옵티마이저이럴 때 쓴다
SGD + 모멘텀이미지 분류처럼 오래 검증된 학습 설정을 그대로 따를 때
Adam처음 만져 보는 모델에서 빠르게 결과를 보고 싶을 때
AdamW트랜스포머·LLM 학습과 파인튜닝 (사실상 표준)

가장 낮은 곳에 못 갈 수도 있다

경사 하강법은 발밑만 보고 움직이기 때문에 진짜 최솟값이 아니라 근처의 움푹한 곳에서 멈출 수 있다. 다만 큰 신경망에서는 미니배치에서 생기는 잡음이 이런 곳을 빠져나오게 도와줘서, 실제로 큰 문제가 되는 경우는 적다고 알려져 있다. 손실이 내려가지 않으면 알고리즘을 바꾸기 전에 학습률, 데이터 전처리, 코드 순서 실수부터 확인하는 편이 빠르다.

모델을 학습시키는 곳이면 어디서나 돈다

사람들이 직접 경사 하강법을 고르는 일은 드물다. 옵티마이저와 학습률을 정하는 일이 곧 경사 하강법을 쓰는 방법이다.

어디서어떻게 쓰나
LLM 파인튜닝AdamW에 작은 학습률과 warmup 스케줄을 두고 미니배치로 돌린다
이미지 분류 모델 학습검증된 설정대로 SGD + 모멘텀을 쓰고, 학습이 진행될수록 학습률을 줄인다
표 데이터 머신러닝데이터가 커서 한 번에 다루기 어려우면 표준화한 뒤 SGDClassifier로 학습한다
학습이 안 될 때 점검손실 그래프를 보고 학습률부터 올리거나 내려 본다
#최적화#학습알고리즘#SGD
참고 자료
관련 영상
← AI Wiki에서 더 보기
updated at 2026-10-20