딥러닝을 공부하다 보면 Adam과 SGD라는 이름을 정말 자주 보게 됩니다.
모델을 만들고 학습 코드를 짤 때도 “옵티마이저를 뭘로 할까?”라는 질문에서 거의 빠지지 않습니다.
그런데 처음 배우는 입장에서는 둘 다 결국 가중치를 업데이트하는 도구라서 “정확히 뭐가 다른 거지?” 하고 헷갈리기 쉽습니다.
가장 짧게 말하면 SGD는 가장 기본적인 경사하강 업데이트 방식이고, Adam은 기울기의 평균과 제곱 평균을 함께 사용해 파라미터별 학습률을 적응적으로 조절하는 방식입니다. Keras는 Adam을 first-order와 second-order moments의 adaptive estimation에 기반한 SGD 계열 방법으로 설명하고, SGD는 learning rate와 optional momentum을 사용하는 기본 최적화기로 설명합니다.
쉽게 말하면 SGD는 같은 기준으로 한 걸음씩 내려가는 느낌이고, Adam은 각 파라미터별 상황을 보면서 조금 더 똑똑하게 보폭을 조절하는 느낌이라고 보면 됩니다.
#Adam #SGD #옵티마이저 #딥러닝학습 #머신러닝기초 #AI입문 #경사하강법
먼저 옵티마이저는 무엇을 하는 걸까
딥러닝 모델은 예측을 만든 뒤 정답과 비교해서 손실을 계산합니다. 그리고 역전파를 통해 각 가중치의 기울기를 구합니다.
여기서 옵티마이저는 그 기울기를 보고 실제로 파라미터를 어떻게 바꿀지 결정하는 역할을 합니다. PyTorch 기본 최적화 튜토리얼도 optimizer가 각 학습 단계마다 모델 파라미터를 조정해 오차를 줄인다고 설명합니다.
옵티마이저를 한 줄로 말하면
기울기를 보고 가중치를 어느 방향으로 얼마나 바꿀지 정하는 규칙입니다.
SGD는 무엇일까
SGD는 Stochastic Gradient Descent입니다. 이름 그대로 경사하강법 기반으로 파라미터를 업데이트하는 가장 대표적인 방식입니다.
Keras 문서는 SGD가 learning rate를 사용하고, 필요하면 momentum과 Nesterov 옵션을 붙일 수 있다고 설명합니다. PyTorch C++ 문서도 gradient descent optimizers를 신경망 학습의 foundation이라고 설명하며, careful hyperparameter tuning이 가능할 때 잘 작동한다고 정리합니다.
쉽게 말하면 SGD는 매 스텝마다 기울기가 가리키는 반대 방향으로 조금씩 이동하는 가장 기본형이라고 보면 됩니다.
즉 SGD는 심플하지만, learning rate 같은 하이퍼파라미터 감각이 꽤 중요해지는 방식이라고 이해하면 좋습니다.
Adam은 무엇일까
Adam은 아주 널리 쓰이는 적응형 옵티마이저입니다. Keras 문서는 Adam을 gradients의 first-order moment와 second-order moment를 adaptive estimation하는 SGD 기반 방법으로 설명합니다. 또 Kingma 등의 원문 인용을 통해 computationally efficient하고 memory requirement가 적으며, large problems에 잘 맞는다고 소개합니다.
여기서 어렵게 들릴 수 있는 부분을 쉽게 풀면 이렇습니다.
Adam은 단순히 현재 기울기만 보는 것이 아니라, 기울기의 평균 흐름과 기울기 크기의 평균 흐름을 같이 참고해서 파라미터마다 업데이트 크기를 다르게 조절합니다.
Adam을 쉽게 비유하면
그냥 현재 경사만 보고 한 걸음 가는 게 아니라, 최근까지의 이동 흐름과 흔들림 정도를 같이 보면서 보폭을 조절하는 방식입니다.
그래서 Adam은 보통 처음 학습을 시작할 때 빠르고 편하게 수렴하는 느낌을 주는 경우가 많아서 입문 예제나 기본 베이스라인으로 자주 사용됩니다.
Adam vs SGD의 가장 큰 차이
둘의 가장 큰 차이는 업데이트를 얼마나 단순하게 하느냐, 얼마나 적응적으로 하느냐에 있습니다.
| 구분 | SGD | Adam |
|---|---|---|
| 업데이트 방식 | 기본 기울기 중심 | 기울기 평균 + 제곱 평균 활용 |
| 학습률 감각 | 상대적으로 더 민감함 | 적응적으로 조절되는 편 |
| 구조 복잡도 | 단순 | 조금 더 복잡 |
| 자주 느끼는 인상 | 기본기, 조율 중요 | 편하게 시작하기 좋음 |
SGD에 momentum이 붙으면 뭐가 달라질까
SGD를 설명할 때 빠지지 않는 게 momentum입니다.
Keras 문서는 momentum이 relevant direction에서는 속도를 높이고 oscillation을 줄인다고 설명합니다. 즉 단순 SGD보다 더 부드럽고 빠르게 내려가도록 돕는 장치라고 보면 됩니다.
쉽게 말하면 SGD가 매 스텝마다 현재 기울기만 보는 기본형이라면, momentum이 붙은 SGD는 “방금까지 어느 방향으로 움직였는지”를 어느 정도 기억하는 버전입니다.
그래서 실무에서는 단순 SGD보다
SGD + momentum 조합을 함께 떠올리는 경우가 많습니다.
그럼 언제 Adam을 떠올리고, 언제 SGD를 떠올릴까
아주 단순하게 정리하면 빠르게 기본 성능을 확인하고 싶거나, 크게 튜닝하지 않고 학습을 시작하고 싶을 때는 Adam을 먼저 떠올리는 경우가 많습니다.
반대로 기본적인 경사하강 구조를 직접 조절하면서, learning rate schedule과 momentum 같은 요소를 포함해 더 세밀하게 학습 흐름을 다루고 싶다면 SGD 계열을 많이 떠올립니다.
PyTorch gradient descent optimizer 문서도 이런 옵티마이저들이 careful hyperparameter tuning이 가능할 때 잘 작동한다고 설명합니다. 또한 PyTorch 기본 최적화 튜토리얼은 SGD, Adam, RMSProp 등 여러 옵티마이저가 있고, 모델과 데이터에 따라 더 잘 맞는 것이 다를 수 있다고 설명합니다.
아주 실무적으로 단순화하면
- Adam = 빠르게 시작하고 기본 성능 보기에 편한 편
- SGD = 단순하지만 세밀한 조율이 중요함
- SGD + momentum = 기본형보다 더 실전적으로 많이 고려됨
처음 배우는 사람은 어떻게 이해하면 좋을까
옵티마이저를 처음 공부할 때는 수식부터 보는 것보다 “업데이트 감각”으로 먼저 이해하는 편이 훨씬 좋습니다.
추천 이해 순서
- 옵티마이저는 가중치 업데이트 규칙이라는 점 이해하기
- SGD는 가장 기본적인 기울기 기반 방식이라는 점 이해하기
- Adam은 기울기 평균과 제곱 평균을 함께 본다는 점 이해하기
- SGD는 단순하고, Adam은 적응적이라는 감각 잡기
- momentum과 learning rate schedule이 왜 중요한지도 이어서 보기
처음 배우는 사람은 이렇게 기억하면 쉽다
너무 어렵게 외울 필요는 없습니다. 아래 세 줄만 먼저 잡아도 꽤 많이 정리됩니다.
가장 쉬운 요약
- SGD = 가장 기본적인 경사하강 업데이트
- Adam = 기울기 흐름을 함께 보며 보폭을 적응적으로 조절
- 차이 핵심 = 단순성 vs 적응성
여기에 한 줄만 더 붙이면 거의 끝입니다.
SGD는 기본형, Adam은 더 똑똑하게 조절하는 응용형
마무리
Adam과 SGD는 둘 다 딥러닝 학습에서 매우 중요한 옵티마이저입니다. 다만 같은 기울기 기반 업데이트라도 얼마나 단순하게 갈지, 얼마나 적응적으로 조절할지가 다릅니다.
SGD는 기본 원리를 이해하기 좋고, Adam은 실전에서 빠르게 출발하기 편한 경우가 많습니다. 실제로는 모델, 데이터, 학습률 스케줄에 따라 결과가 달라질 수 있기 때문에 무조건 하나가 항상 더 좋다고 보기는 어렵습니다. PyTorch 튜토리얼도 different optimizers can work better for different models and data라고 설명합니다.
'머신러닝' 카테고리의 다른 글
| 역전파란 | 딥러닝 학습이 이루어지는 핵심 원리 (0) | 2026.05.10 |
|---|---|
| RNN LSTM GRU 차이 | 순환신경망 핵심 비교 정리 (0) | 2026.05.08 |
| CNN이란 | 이미지 처리 모델 구조 쉽게 설명 (0) | 2026.05.06 |
| 딥러닝이란 | 인공신경망 구조 쉽게 이해하기 (0) | 2026.05.04 |
| PPO 알고리즘 | policy gradient와 차이까지 정리 (0) | 2026.05.02 |