이번 문서의 목표: 이 파일을 다 읽으면 경사하강법의 기본 아이디어를 설명하고, SGD·Momentum·RMSprop·Adam 네 최적화 알고리즘의 갱신 수식을 같은 손실 함수에 대해 2스텝씩 직접 계산해 그 차이를 비교하며, 학습률·모멘텀 같은 하이퍼파라미터가 학습에 미치는 영향을 설명할 수 있다.
왜 SGD만으로는 부족한가
07편에서 가중치를 한 번 갱신하는 데 썼던 규칙 은 경사하강법(gradient descent)의 가장 기본 형태다. 그런데 실제 학습에서는 이 단순한 규칙만으로는 학습이 느리거나, 골짜기 모양의 손실 함수 표면에서 좌우로 진동하며 시간을 낭비하는 경우가 많다. 이 편에서는 기본 경사하강법을 확장한 세 가지 대표 알고리즘 — 이전 방향을 기억하는 모멘텀(Momentum), 가중치마다 학습률을 자동 조절하는 RMSprop, 이 둘을 결합한 Adam — 의 갱신 수식을 같은 간단한 손실 함수에 대해 2스텝씩 직접 계산해 실제로 얼마나 다르게 움직이는지 비교한다.
공통 설정: 하나의 손실 함수로 네 알고리즘 비교하기
쉽게 말하면: 네 알고리즘이 얼마나 다르게 움직이는지 보려면, 같은 출발점과 같은 목표를 주고 각자 어떻게 다가가는지 나란히 계산해 보면 된다.
비교를 위해 파라미터 하나만 있는 아주 단순한 손실 함수를 쓴다.
이 함수는 일 때 최솟값 을 가지므로, 모든 최적화 알고리즘의 목표는 를 에 가깝게 이동시키는 것이다. 이 함수의 기울기(도함수)는 다음과 같다.
모든 알고리즘의 출발점을 , 학습률 로 통일한다. 먼저 첫 번째 기울기를 구해 둔다.
- : 번째 스텝에서 계산한 기울기(gradient). 아래 첨자 는 학습이 진행된 횟수(스텝)를 가리킨다.
SGD(확률적 경사하강법): 기울기만 보고 바로 이동
쉽게 말하면: 지금 이 순간의 기울기만 보고, 그 반대 방향으로 정해진 보폭만큼 한 걸음 내딛는 가장 단순한 방법이다.
SGD(Stochastic Gradient Descent, 확률적 경사하강법)는 전체 데이터가 아니라 미니배치(mini-batch, 데이터를 작게 나눈 묶음. 10편에서 자세히 다룬다) 단위로 기울기를 계산해 매번 갱신하는 경사하강법을 가리키며, 갱신 수식 자체는 07편의 기본 경사하강법과 같다.
1스텝:
2스텝: 새로운 에서 기울기를 다시 계산한다.
두 스텝 만에 가 로 목표 을 향해 꾸준히 다가갔지만, 아직 절반도 못 왔다.
Momentum: 이전 이동 방향을 기억해 가속하기
쉽게 말하면: 언덕에서 공을 굴리면 이전에 굴러가던 속도가 남아 있어 같은 방향이면 더 빨리 가속되는 것처럼, 이전 갱신 방향을 어느 정도 기억해 다음 갱신에 더해준다.
모멘텀(Momentum)은 현재 기울기만 보지 않고, 이전 스텝까지 누적된 속도(velocity) 를 함께 사용한다.
- (베타): 이전 속도를 얼마나 반영할지 정하는 하이퍼파라미터(보통 ). 가 클수록 과거 방향을 더 오래 기억한다.
- : 번째 스텝의 누적 속도. 초기값 에서 시작한다.
1스텝: 이므로 첫 스텝은 SGD와 동일하다.
2스텝: 이제부터 SGD와 달라진다. 새 기울기 을 이전 속도와 합친다.
같은 두 스텝을 거쳤는데도 모멘텀은 로, SGD의 보다 훨씬 더 멀리 이동했다. 이전 스텝의 기울기 이 속도에 남아 두 번째 스텝의 힘을 보태 주었기 때문이다. 비유로 이해하기: SGD가 매 순간 발밑의 경사만 보고 걷는 사람이라면, 모멘텀은 이미 한 방향으로 달리던 관성이 있어 같은 방향의 언덕에서는 더 빨리 가속되는 스케이트보더와 같다.
RMSprop: 가중치마다 학습률을 자동 조절하기
쉽게 말하면: 최근 기울기가 계속 컸던 방향으로는 보폭을 줄이고, 기울기가 작았던 방향으로는 보폭을 키워서 울퉁불퉁한 지형에서도 안정적으로 이동한다.
RMSprop(Root Mean Square Propagation)은 기울기의 제곱을 지수적으로 이동평균(exponential moving average, 최근 값에 더 큰 비중을 두는 평균)한 값 로 학습률을 나누어, 기울기가 컸던 파라미터는 보폭을 줄이고 작았던 파라미터는 보폭을 키운다.
- : 기울기 제곱의 이동평균. 초기값 .
- : 이동평균에서 과거 값을 얼마나 반영할지 정하는 하이퍼파라미터.
- (엡실론, 아주 작은 상수, 보통 ): 분모가 정확히 0이 되어 나눗셈이 정의되지 않는 것을 막기 위한 안전장치.
1스텝:
2스텝: 새 기울기 를 구한 뒤 이동평균을 갱신한다.
RMSprop은 으로 SGD()보다 오히려 느리게 움직였다. 이는 기울기의 절댓값이 처음부터 커서() 값이 커지고, 그만큼 분모 가 커져 보폭이 줄었기 때문이다. RMSprop의 장점은 이 예제처럼 기울기가 항상 큰 상황보다는, 파라미터마다 기울기의 크기가 서로 크게 다른 실제 신경망에서 각 파라미터에 맞는 보폭을 자동으로 찾아준다는 데 있다.
Adam: Momentum과 RMSprop의 결합
쉽게 말하면: Adam은 이전 방향을 기억하는 모멘텀의 아이디어와, 파라미터마다 보폭을 조절하는 RMSprop의 아이디어를 동시에 쓰는 알고리즘으로, 오늘날 가장 널리 쓰이는 기본 선택지다.
Adam(Adaptive Moment Estimation)은 1차 모멘트(기울기의 이동평균, 모멘텀과 동일한 개념) 과 2차 모멘트(기울기 제곱의 이동평균, RMSprop과 동일한 개념) 를 동시에 유지한다.
- , : 각각 1차·2차 모멘트의 이동평균 계수로, 관례적으로 이 값을 널리 쓴다.
에서 시작하면 초기 몇 스텝 동안 가 실제보다 0 쪽으로 치우치는 편향이 생기므로, Adam은 다음과 같은 편향 보정(bias correction)을 거친다.
- (m 햇, v 햇): 편향을 보정한 1차·2차 모멘트. 가 커질수록 가 0에 가까워져 보정 효과는 점점 사라진다.
마지막으로 이 보정된 값으로 파라미터를 갱신한다.
1스텝():
편향 보정을 적용한다. , 이다.
2스텝(): 새 기울기 을 구한다.
, 이다.
Adam은 로 이동해, 이 예제에서는 네 알고리즘 중 가장 조심스러운 보폭을 보였다. 편향 보정이 없었다면 초기 이 실제보다 작게 잡혀 첫 스텝의 보폭이 지나치게 커질 수 있는데, 편향 보정이 이를 막아 준 것이다.
네 알고리즘의 이동 궤적 비교
같은 출발점 , 같은 학습률 에서 2스텝을 진행한 결과를 한 표에 모으면 다음과 같다.
| 알고리즘 | |||
|---|---|---|---|
| SGD | |||
| Momentum | |||
| RMSprop | |||
| Adam |
같은 손실 함수, 같은 학습률인데도 두 스텝 만에 도달한 위치가 (Momentum)부터 (Adam)까지 여덟 배 가까이 차이 난다는 점이 이 표의 핵심이다. 이 차이는 알고리즘 성능의 우열이 아니라 각 알고리즘이 기울기 정보를 반영하는 방식이 다르기 때문이다. Momentum은 관성으로 가속하고, RMSprop과 Adam은 기울기 제곱의 크기로 보폭을 스스로 줄이므로, 이 예제처럼 기울기의 절댓값이 처음부터 큰 경우 더 신중하게 움직인다.
자주 틀리는 점: “Adam이 항상 SGD보다 빠르다”고 단정하기 쉽지만, 이 예제에서 보듯 Adam은 오히려 가장 보수적으로 움직였다. Adam의 강점은 특정 예제에서의 속도가 아니라, 다양한 문제와 파라미터마다 학습률을 따로 신경 쓰지 않아도 비교적 안정적으로 잘 작동한다는 범용성에 있다. 또한 학습률 는 여전히 사람이 정해야 하는 하이퍼파라미터이며, Adam이라고 해서 학습률을 아무렇게나 정해도 되는 것은 아니다.
핵심 정리
- SGD는 현재 기울기만 보고 로 갱신하는 가장 단순한 경사하강법이다.
- Momentum은 이전 속도 를 누적해 같은 방향으로는 가속하고 진동은 줄인다().
- RMSprop은 기울기 제곱의 이동평균 로 학습률을 나누어 파라미터마다 보폭을 자동 조절한다.
- Adam은 모멘텀(1차 모멘트)과 RMSprop(2차 모멘트)을 결합하고 편향 보정을 더한 알고리즘으로, 오늘날 가장 널리 쓰이는 기본 선택지다.
- 같은 손실 함수·같은 학습률에서도 네 알고리즘의 실제 이동 거리는 크게 다를 수 있으며, 이는 각 알고리즘이 과거 기울기 정보를 반영하는 방식의 차이에서 비롯된다.
마무리 복습
참고 자료
- Ian Goodfellow 외, Deep Learning — 경사하강법과 Momentum·RMSprop·Adam 등 최적화 알고리즘의 수식 근거
- 국가평생교육진흥원 독학학위제 — 독학사 3단계 딥러닝 과목 출제기준 확인