들어가며
지난 글들에서 신경망의 훈련 속도를 높이는 방법들에 대해 알아보았다
좋은 초기화 전략, 좋은 활성화 함수, 배치 정규화가 있었다
이번 글에서는 훈련 속도를 높일 수 있는 또 다른 방법으로 표준적으로 사용되는 옵티마이저인
경사 하강법 대신 더 빠른 옵티마이저에 대해 알아볼 것이다
모멘텀 최적화, AdaGrad, RMSProp, Adam까지 총 4가지의 옵티마이저를 살펴볼 것이다
모멘텀 최적화
일반적인 경사하강법은 최적화 방식이 아래와 같다

즉 현재 기울기만을 가지고 가중치를 업데이트 하는 방식이다
이 방식은 최적점까지 가는 과정에서 진동이 많아져 수렴 속도가 느려지게 될 위험이 있다
반면 모멘텀 최적화는 현재 기울기뿐만 아니라 이전 기울기까지 고려하여 가중치에 반영한다

각 반복에서 그레디언트를 직접적으로 가중치에 적용하는 방식이 아니라
이전 업데이트 정보와 현재 그레디언트를 이용해 속도를 계산한 뒤 가중치에 적용시키는 방식이다
이때 속도(모멘텀)가 너무 커지는 것을 막기 위해 모멘텀 계수라고 불리는 하이퍼파라미터 β가 사용된다
이 값은 이전 속도를 얼마나 유지할지를 결정하는 값, 즉 관성의 크기를 나타낸다
값은 일반적으로 0.9이며 90% 이전 속도를 유지하여 현재 그레디언트와 함께 새로운 속도에 계산된다
모멘텀 최적화는 일반 경사하강법보다 더 빠르게 평탄한 지역을 탈출하게 도와준다
평탄한 지역에서는 그레디언트가 매우 작아 일반 경사하강법의 업데이트 크기도 작아져
가중치 이동 속도(업데이트 속도)가 매우 느려진다
반면 모멘텀 최적화는 이전 속도를 유지하는 관성 효과가 있어 더 빠르게 수렴할 수 있다
네스테로프 가속 경사(NAG)
만약 모멘텀 최적화가 이전 속도를 유지하는 관성 효과로 인해 최적점 근처에서
속도가 과도하게 유지될 경우 최적점을 지나쳐 버리는 overshooting 현상이 발생할 수 있으며
이로 인해 최적점 주변에서 진동이 일어날 수 있다
이 때 제안된 모델이 네스테로프 가속 경사(NAG)이다
이 알고리즘은 현재 위치를 θ가 아니라 모멘텀 방향으로 조금 앞선 θ +


이 방식을 통해 앞으로의 경사를 미리 확인하여 속도를 줄이는 브레이크 역할과 더 가속하는 엑셀 역할을 해준다
따라서 최적점을 지나치는 현상과 진동을 줄이며 더욱 효율적으로 최적점에 수렴할 수 있게된다
AdaGrad
위에서 소개한 경사하강법, 모멘텀 최적화, NAG 모두 가중치에 동일한 학습률( η )을 적용한다
이로 인해 그레디언트가 큰 가중치는 과도하게 업데이트 되어 최적점을 지나칠 수 있으며
그레디언트가 작은 가중치는 업데이트 폭이 작아 학습이 느려질 수 있다
이 때 등장한 알고리즘이 AdaGrad이며 각 가중치의 그레디언트 정보를 이용하여
학습률을 개별적으로 조절함으로써 이 문제를 해결할 수 있다
AdaGrad 알고리즘 식은 아래와 같다


첫 번째 단계는 그레디언트의 제곱을 벡터 Gt에 누적한다
두 번째 단계는 경사하강법 가중치 업데이트 식과 거의 유사한데
차이점은 그레디언트 벡터를 √(Gₜ + ε)로 나누어 스케일을 조정한다는 점이다
이 알고리즘은 그레디언트가 크게 누적된 가중치는 Gt가 커져
실제 학습률이 감소하므로 과도한 업데이트를 방지할 수 있다
반대로 그레디언트가 적게 누적된 가중치는 Gt가 상대적으로 작아
실제 학습률이 증가하므로 충분한 업데이트가 이루어질 수 있게된다
이처럼 가중치마다 학습률을 자동으로 조절해주는 방식을 적응적 학습률이라고 하며
보다 효율적으로 최적점에 수렴할 수 있도록 도와준다
AdaGrad는 장기간 학습이 될 경우 Gt가 계속 누적됐기에 학습률이 지나치게 감소되어
업데이트가 거의 일어나지 않아 학습이 정체되는 문제가 있어서
장기간 학습이 필요하지 않은 간단한 작업에 효과적이다
RMSProp
위에서 설명한 AdaGrad의 문제를 해결하기 위해 소개된 모델이 RMSProp이다
이 알고리즘은 훈련 시작부터의 모든 그레디언트를 동일하게 기억하는 AdaGrad와 달리
최근 그레디언트에 더 큰 비중을 두고, 오래된 그레디언트는 작은 비중으로 반영한다
RMSProp 알고리즘 식은 아래와 같다


AdaGrad 식에서 그레디언트 누적 방식을 지수이동평균으로 변경한 알고리즘으로
하이퍼파라미터 β가 추가되었고 일반적으로 0.9로 설정된다
시간이 지날수록 오래된 그레디언트의 영향은 지수적으로 감소하고,
최근 그레디언트의 영향은 상대적으로 크게 반영되는 구조이다
이 방식이 간단한 작업을 제외하고는 AdaGrad보다 훨씬 더 좋은 성능을 나타내어
Adam 방식이 나오기 전까진 연구자들이 가장 선호하는 최적화 알고리즘이었다
Adam
AdaGrad나 RMSProp 방식은 모멘텀 최적화나 NAG의 관성 기능이 없다
그래서 Adam이라는 최적화 방식이 소개되었다
이 방식은 모멘텀 최적화의 관성효과와 RMSProp의 적응적 학습률 아이디어를 합친 개념이다
알고리즘 식은 아래와 같다

1,2,4 단계가 모멘텀 최적화, RMSProp 방식과 아주 유사한 것을 알 수 있다
1단계에서는 그레디언트의 지수이동평균을 계산하여 이동 방향을 추정하고 관성 효과를 얻는다
2단계에서는 그레디언트 제곱의 지수이동평균을 계산하여 그레디언트 크기 정보를 추정하고 학습률을 조정한다
3단계에서는 m과 v의 초기값을 0으로 설정하면서 발생하는 편향을 보정하는 단계이다
(3단계는 아래에서 추가로 설명하겠다)
마지막으로 4단계에서는 최종적으로 가중치를 업데이트 하는 단계로
1단계에서 얻은 모멘트로 이동 방향을 결정하고
2단계에서 얻은 모멘트로 크기를 조절하여 안정적으로 최적점에 수렴하도록 한다
3단계에 대한 추가 설명을 이어나가자면,
훈련 초기에 m과 v는 값이 0으로 초기화되는데 그렇게되면 그레디언트 방향 정보와 크기 정보가
실제보다 작게 추정되는 편향 문제가 발생한다
그래서 3단계의 편향 보정 식을 통해 보다 정확한 1차 모멘트와 2차 모멘트를 얻는다
정리해서 다시 설명하자면
Adam은 그레디언트의 방향 정보를 나타내는 1차 모멘트와 크기 정보를 나타내는 2차 모멘트를 계산하고,
편향 정보를 저장한 뒤 두 정보를 결합하여 가중치를 업데이트하는 알고리즘이다
마치며
이번 글에서는 다양한 최적화 알고리즘에 대해 알아보았다
너무 많은 알고리즘들이 있어 언제 어떤 알고리즘을 사용해야 효율적인지 판단하는 과정이 쉽지 않을 거라 생각했다
또한 이번 내용에서는 수학적인 개념이 어느정도 들어가 수식을 이해하는 과정에서 시간이 꽤나 걸렸다
또한 모멘텀과 모멘트가 차이가 있는지 모르고 개념을 혼용해서 이해하고 있었다
어떤 최적화 알고리즘의 개념을 보고 "이러이러한 단점이 있을거같은데?" 라고 생각하고
뒤에 나온 알고리즘이 그 단점을 해결하기 위해 나온 것이라는 걸 알았을 때
뭔가 뿌듯하고 그래도 잘 이해하고 있구나라는 생각이 들어 내심 기분이 좋았다
'AI > Deep Learning' 카테고리의 다른 글
| [DL] 신경망 규제 (1) | 2026.07.14 |
|---|---|
| [DL] 학습률 스케줄링 (0) | 2026.07.13 |
| [DL] 배치 정규화(batch normalization) (0) | 2026.07.11 |
| [DL] 그레디언트 소실 문제 해결을 위한 가중치 초기화 방식들과 여러 활성화 함수 (0) | 2026.07.09 |
| [DL] 퍼셉트론과 역전파 알고리즘 (0) | 2026.06.20 |
