적응 모멘트 추정(Adaptive Moment Estimation)은 일반적으로 Adam으로 알려져 있으며, 머신 러닝 모델을 훈련시키기 위한 최적화 알고리즘이다. 이는 일반적으로 손실 함수인 목적 함수를 반복적으로 모델 매개변수를 업데이트하여 최소화하도록 설계되었다. Adam은 확률적 경사 하강법(SGD)의 두 가지 다른 확장의 장점을 결합한다: 과거 기울기를 축적하여 수렴을 가속화하는 모멘텀(momentum)과 최근 기울기의 크기에 따라 매개변수별 학습률을 적응시키는 RMSprop이다. 이러한 이중 메커니즘을 통해 Adam은 희소 기울기와 잡음이 많은 데이터를 효과적으로 처리할 수 있어 딥 러닝 및 신경망 훈련에서 널리 사용되는 선택지가 되었다.
Adam은 2014년 Diederik P. Kingma와 Jimmy Ba가 작성한 논문 "Adam: A Method for Stochastic Optimization"에서 소개되었다. 이후 이 알고리즘은 특히 대규모 언어 모델 및 기타 복잡한 트랜스포머 기반 아키텍처를 훈련시키는 많은 머신 러닝 작업에서 기본 최적화 도구가 되었다. 그 인기는 효율성과 전체 행렬 적응 방법에 비해 상대적으로 낮은 메모리 요구 사항에서 비롯된다.
알고리즘 개요
Adam은 각 매개변수에 대해 두 가지 이동 평균을 유지한다: 기울기의 첫 번째 모멘트(평균)와 두 번째 모멘트(비중심 분산)이다. 이러한 평균은 각 반복에서 업데이트되며, 매개변수 업데이트는 편향 보정된 추정치를 사용하여 계산된다. 이 방법은 희소 기울기에서 잘 작동하는 AdaGrad와 비정적 목적을 처리하는 RMSprop의 장점을 결합한다. 알고리즘은 일반적으로 beta1과 beta2로 표시되는 두 개의 하이퍼파라미터를 사용하며, 이는 모멘트 추정치의 지수 감쇠율을 제어한다. 실제로는 beta1에 대해 0.9, beta2에 대해 0.999의 기본값과 수치적 안정성을 위한 작은 엡실론이 일반적으로 사용된다.
Adam의 업데이트 규칙은 편향된 첫 번째 및 두 번째 모멘트 추정치를 계산한 다음, 매개변수 업데이트를 수행하기 전에 초기화 편향을 보정하는 것을 포함한다. 각 매개변수의 단계 크기는 두 번째 모멘트 추정치의 제곱근의 역수로 조정되어, 큰 기울기를 가진 매개변수는 더 작은 단계를, 작은 기울기를 가진 매개변수는 더 큰 단계를 취할 수 있게 한다. 이러한 매개변수별 적응 학습률은 표준 확률적 경사 하강법에 비해 더 빠르고 안정적인 수렴을 종종 이끈다.
확률적 경사 하강법과의 관계
Adam은 머신 러닝의 기초 최적화 방법인 확률적 경사 하강법(SGD)의 변형이다. SGD는 소규모 훈련 데이터 배치에서 계산된 목적 함수의 기울기와 반대 방향으로 모델 매개변수를 이동시켜 업데이트한다. 효과적이지만 SGD는 학습률 선택에 민감할 수 있으며 희소하거나 잡음이 많은 기울기에서 어려움을 겪을 수 있다. Adam은 기울기의 첫 번째 모멘트(평균)와 두 번째 모멘트(비중심 분산)라는 두 가지 추가 추정치를 유지하여 이러한 문제를 해결한다. 이러한 추정치는 매개변수 업데이트를 조정하는 데 사용되어 매개변수별 적응 학습률을 제공한다.
알고리즘 개요
Adam은 기울기의 첫 번째 및 두 번째 모멘트 추정치에서 각 매개변수에 대한 적응 학습률을 계산한다. 각 반복에서 기울기에 대한 하나와 제곱 기울기에 대한 하나의 두 가지 지수 감쇠 이동 평균을 유지한다. 이들은 종종 m과 v로 불린다. 초기 단계에서 0으로의 편향을 보정하기 위해 알고리즘은 편향 보정 항을 포함한다.
일반적인 업데이트 단계는 다음과 같이 진행된다: 손실의 기울기를 매개변수에 대해 계산하고, 편향된 첫 번째 및 두 번째 모멘트 추정치를 업데이트하고, 편향을 보정한 다음, 보정된 모멘트를 사용하여 매개변수를 업데이트한다. 알고리즘에는 세 가지 주요 하이퍼파라미터가 있다: 학습률과 모멘트 추정치에 대한 두 가지 감쇠율(일반적으로 beta1과 beta2로 표시). Adam을 소개한 논문은 beta1에 대해 0.9, beta2에 대해 0.999, 그리고 0으로 나누기를 피하기 위한 작은 엡실론의 기본값을 권장했다.
딥 러닝에서의 응용
Adam은 견고성과 사용 용이성 덕분에 딥 러닝에서 표준 최적화 도구가 되었다. 특히 대규모 언어 모델 및 생성형 AI 시스템에 사용되는 트랜스포머 모델을 훈련시키는 데 효과적이다. 텐서플로 및 파이토치와 같은 많은 프레임워크와 플랫폼에는 Adam 구현이 포함되어 있어 많은 실무자에게 기본 선택지가 되었다. 희소 기울기를 처리하는 능력과 상대적으로 빠른 수렴은 광범위한 채택에 기여했다.
변형 및 확장
특정 한계를 해결하기 위해 여러 Adam 변형이 개발되었다. 예를 들어, AdamW는 가중치 감쇠를 최적화 단계에서 분리하며, 이는 일부 딥 러닝 작업에서 일반화를 개선하는 것으로 나타났다. AMSGrad는 학습률이 증가하지 않도록 두 번째 모멘트 업데이트를 수정하며, 이는 일부 설정에서 발생할 수 있다. 이러한 변형은 핵심 적응 모멘트 메커니즘을 유지하면서 특정 동작을 조정한다.
응용 및 영향
Adam은 현대 생성형 AI 시스템과 대규모 언어 모델을 구동하는 트랜스포머 기반 모델을 훈련시키는 데 널리 사용된다. 하이퍼파라미터 선택에 대한 견고성과 대규모 문제를 처리하는 능력은 많은 딥 러닝 프레임워크에서 기본 선택지가 되게 했다. 이 알고리즘의 효율성은 NVIDIA GPU나 AWS Trainium 칩과 같은 하드웨어에서 훈련할 때 특히 가치가 있으며, 여기서 계산 리소스는 상당하지만 여전히 유한하다. 스탠포드 AI 연구소, 버클리 AI 연구, 토론토 대학교와 같은 기관의 연구 그룹은 이론적 이해와 실용적 개선에 기여했다.