지난 시간에 이어 옵티마이저의 종류들과 성능들에 대해서 조금 더 딥하게 들어가보려고 한다.

대표 기법들인 Momentum, Adagrad, RMSProp, Adam, NAG 까지만 정리하려고 한다.
기존 GD, SGD의 문제점

- 수렴 속도 문제
- 두 방법 모두 수렴 속도가 느리거나 극단적으로 빠르지만, 안정성을 가지지 못하는 경우가 많습니다.
- `GD`는 전체 데이터셋에 대해 매 번 계산을 하여 파라미터를 업데이트를 하여 안정성을 가지지만 학습 속도가 매우 느린 단점이 있고, `SGD`는 한 개 밑 하위의 최소 단위의 데이터만을 이용해 파라미터를 업데이트를 하기에 속도는 빠르지만 학습 안정성이 좋지 않은 단점이 있습니다.
- 학습률 설정 문제
- `GD`, `SGD` 두 방법 모두 극단적인 학습 방법으로 인해 학습률 지정이 매우 어려운 문제가 있음, 최적의 값을 찾기에 학습률 선정은 매우 중요한 부분
- 기울기 소실 위험
- 특히 신경망 학습에서 기울기 소실 문제가 발생할 수 있습니다. 기울기 값을 조정하는 과정이 두 방법 모두 극단적이기에 학습 도중 기울기 값이 지나치게 커지거나 0에 가깝게 조정되어 더 이상의 기울기 값을 조정하지 못하는 상황이 발생하게 됩니다.
- 병렬화의 어려움
- 두 개의 방법 모두 데이터셋 전체 또는 개별 샘플을 선택하여 파라미터 업데이트를 하기에, 분산처리가 어려운 한계점에 봉착합니다.
이러한 문제를 해결하기 위해 여러 가지 방법들이 제안되었는데 대표적으로 모멘텀을 정리하려고 한다.
모멘텀 (Momentum)

모멘텀의 사전적 정의는 외부에서 힘을 받지 않는 한 정지해 있거나 운동 상태를 지속하려는 성질인데, 쉽게 생각해서 인위적으로 운동을 지속하는 것이 아닌 돌맹이를 경사에 굴리면 자연스레 굴러가는 것 처럼 자연스러운 움직임을 유도하려는 모습을 그리며 고안해낸 방법 입니다.
기본 메커니즘
- 이전의 기울기 변화를 고려하여 기울기 업데이트에 영향을 줌
- 수식 → \(\theta_{t+1} = \theta_t - \eta \nabla_{\theta} J(\theta_t)\)
- 수식 설명
- \(\theta_t\): 파라미터
- \(\eta\): 학습률
- \(\nabla_{\theta} J(\theta_t)\) : 현재 기울기
- 수식 설명
- 기울기의 하강법 → \(v_{t+1} = \beta v_t + (1 - \beta) \nabla_{\theta} J(\theta_t)\)
- \(\theta_{t+1} = \theta_t - \eta v_{t+1}\)
- 수식 설명
- \(v_t\) : 속도(모멘텀)
- \(\beta\) : 모멘텀 파라미터
- \(\eta\) : 학습률
- 수식 설명
- \(\theta_{t+1} = \theta_t - \eta v_{t+1}\)
Global 최적화와 Local 최적화
Global 최적화
- 함수의 전체 범위에서 가장 낮은 값을 찾는 최적화
- 목표 : 최적화가 제대로 진행되면, 전체 함수에서 가장 낮은 값을 찾게되는데, 비선형 함수에서는 국소 최소값이 존재할 수 있음
- 문제 : 다차원 함수에서 여러 국소 최소값이 존재하는 경우, 기울기 하강법이 글로벌 최소값을 찾지 못하고 국소 최소값에 갇히는 문제가 생길 수 있음
Local 최적화
- 함수의 일부 구간에서 가장 낮은 값을 찾는 최적화 구간
- 목표 : 수렴을 통해 지역적으로 가장 낮은 값을 찾으려 하며, 전역적으로 최적의 해가 아닐 수 있음
- 문제 : 비선형 함수에서 많은 안장점이나 국소 최소값이 존재할 수 있음. 이러한 지점에 빠져서 최적화가 끝나게 된다면, 더 이상 개선할 수 없는 상황이 벌어지기도 함
모멘텀의 역할 : 글로벌 vs 로컬 최적화
- 모멘텀을 사용하는 이유는 국소 최소값이나 안장점에서 빠져나오기 위해서다.
- 최적화 과정에서 모멘텀은 이전 기울기를 반영하여 가속도를 제공하고 더 빠르고, 안정적으로 글로벌 최소값에 도달할 수 있도록 돕습니다.
국소 최소값에서 빠져나오기
모멘텀은 기울기 하강법의 관성을 통해, 국소 최솟값에서 최적화가 멈추지 않도록 돕습니다. 모멘텀은 이전 단계에서의 기울기를 반영하기 때문에, 최적화가 진동하거나 지역적으로 수렴하는 경우, 더 멀리 밀고 나가는 효과를 낳을 수 있습니다.
- 예시: 함수에 여러 개의 국소 최소값이 있을 때, 모멘텀을 사용하면 기울기의 관성 덕분에 특정 지역에서 벗어날 수 있습니다. 기울기가 평평한 구간을 지나갈 때, 모멘텀이 큰 영향을 주어 가속을 할 수 있기 때문에 국소 최소값에서 빠져나와 새로운 경로를 따라갈 수 있습니다.
글로벌 최솟값으로의 수렴
모멘텀은 안정성을 부여하고, 글로벌 최솟값으로의 수렴 속도를 높일 수 있습니다. 특히, 함수가 평평하거나 느리게 변할 때, 기울기만으로는 빨리 수렴하지 않지만, 모멘텀을 사용하면 보다 빠르고 효율적인 경로로 글로벌 최소값에 도달할 수 있습니다.
- 예시: 함수의 계곡처럼 기울기가 작고 평평한 영역에서는 기울기만으로는 수렴 속도가 느리지만, 모멘텀을 사용하면 이전 기울기의 영향을 받아 더 빠르게 내려갑니다.
Nesterov Accelerated Gradient (NAG)
기존 모멘텀의 문제점을 개선하기 위해 제안된 기법
글로벌 최적화 내에서 좋은 성능을 발휘함, 모멘텀을 미리 반영하여 기울기를 계산하는 방식. 이렇게 되면 더 정확한 기울기를 반영하여 수렴 속도를 빠르게 할 수 있습니다.
수식
\(v_{t+1} = \beta v_t + \eta \nabla_{\theta} J(\theta_t - \beta v_t)\)
수식 설명
- \(\theta_t - \beta v_t\) : 예측된 위치
- \(\nabla_{\theta} J(\theta_t - \beta v_t)\) : 예측된 위치에서 계산된 기울기
모멘텀의 역할: 글로벌 vs 로컬 최적화
모멘텀의 역할은 국소 최소값(local minima)에서 탈출하고, 글로벌 최소값(global minimum)으로 수렴하는 데 도움을 줍니다. 기울기 하강법에서 모멘텀의 효과는 다음과 같은 방식으로 작용합니다:
- 국소 최솟값에서 빠져나오기 : 기울기의 변화에 관성을 부여하여 국소 최솟값에서 빠져나갈 수 있도록 돕습니다.
- 글로벌 최솟값으로의 수렴: 모멘텀을 사용하면 글로벌 최솟값으로 빠르고 안정적으로 수렴할 수 있습니다.
에이다그래드(Adagrad)
- 각 파라미터에 대해 학습률을 적응적으로 조정하는 방법
- 기울기의 제곱 합을 각 파라미터에 누적하여, 자주 업데이트 되는 파라미터의 학습률을 줄이고, 자주 업데이트 되지 않는 파라미터의 학습률을 키움

업데이트 규칙 수식
\(G_t = G_{t-1} + \nabla_{\theta} J(\theta_t)^2\)
\(\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \nabla_{\theta} J(\theta_t)\)
수식 설명
- \(G_t\) : 파라미터 \(\theta_t\)에 대한 기울기의 제곱의 누적 합
- \(\nabla_{\theta} J(\theta_t)\) : 현재 기울기
- \(\eta\) : 학습률
- \(\epsilon\) : 수치적 안정성을 위한 작은 상수(보통 \(10^{-8}\) 정도)
에이다그래드의 특징
- 기울기 제곱의 누적: 파라미터 업데이트가 반복될 때마다 기울기의 제곱을 누적하여, 자주 업데이트되는 파라미터의 학습률을 감소시키고, 드물게 업데이트되는 파라미터는 학습률이 커지도록 함
- 적응형 학습률: 아다그래드는 각 파라미터에 대해 개별적인 학습률을 조정합니다. 이로 인해 희소한 데이터에서 잘 동작
장점
- 희소 데이터에 유리: 데이터가 희소하거나, 특징의 빈도가 다를 때 유리합니다.
- 학습률 자동 조정: 각 파라미터에 대한 학습률을 자동으로 조정하여, 매개변수별로 더 적합한 학습률을 제공합니다
단점
- 학습률의 급격한 감소: 시간이 지날수록 학습률이 급격히 줄어들어, 결국 수렴이 느려지거나 멈출 수 있습니다
- 수렴이 너무 빠르거나 불안정할 수 있음: 적응형 학습률이 지나치게 낮아지면, 최적화가 제대로 이루어지지 않을 수 있습니다.
RMSprop (Root Mean Square Propagation)
기존의 AdaGrad의 급격한 감소로 인한 단점을 보완하기 위해 제안된 방법, 기존의 AdaGrad는 기울기의 제곱을 누적하는 방식으로 학습률을 적응시키지만, 시간이 지나면서 생기는 기울기 제곱의 누적합이 커져 학습률이 급격하게 감소하는 단점이 생김
AdaGrad에서의 기울기 제곱의 누적을 일정한 평균 값으로 대체하며, 학습률의 감소를 방지하고, 더 안정적이고 지속적인 학습에 기여하는 방법
특징
- 각 파라미터에 대해 기울기 제곱의 지수적 평균을 계산함
- 그렇게 나온 평균 값을 기반으로 학습률을 적응적으로 조정하여 기존 에이다그래드에서 발생하였던 학습률 감소에 방지에 기여
- 기울기가 커지면 학습률을 줄이고, 기울기가 작으면 학습률을 키우는 방식을 사용
- 지속적으로 안정적인 학습을 유지하면서, 너무 빠르게 수렴하는 문제를 해결함
수식
\(E[\nabla_{\theta} J(\theta_t)^2] = \beta E[\nabla_{\theta} J(\theta_{t-1})^2] + (1 - \beta) \nabla_{\theta} J(\theta_t)^2\)
\(\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[\nabla_{\theta} J(\theta_t)^2] + \epsilon}} \nabla_{\theta} J(\theta_t)\)
수식 설명
- \(E[\nabla_{\theta} J(\theta_t)^2]\) : 기울기 제곱의 지수적 평균
- \(\beta\) : 지수적 평균을 계산할 때의 할인율 (일반적으로 0.8 사용)
- \(\eta\) : 학습률
- \(\epsilon\) : 수치적 안정성을 위한 작은 값 (일반적으로 \(10^{-8}\)) 사용
장점과 단점
장점
- 학습률 감소 문제 해결 : 에이다그래드의 기울기 제곱 누적 합이 계속 커지는 문제를 해결하며 안정성을 유지
- 적응형 학습률 : 각 파라미터에 대해 개별적인 학습률을 제공, 희소한 데이터에도 효과적으로 동작
단점
- 기본적인 하이퍼파라미터: \(\beta\)와 \(\eta\)의 설정에 민감할 수 있음. 일반적으로 \(\beta = 0.9\), \(\eta = 0.001\)이 자주 사용되지만, 경우에 따라 최적의 값이 달라질 수 있음
- 지속적인 학습률 감소: 기울기가 너무 작아지면, 업데이트가 느려지고 수렴 속도가 떨어질 수 있음
Adam(Adaptive Moment Estimation)
RMSProp과 모멘텀의 장점을 결합하여 적응형 학습률과 가속된 학습을 동시에 구현한 최적화 알고리즘
- 1차 모먼트 (기울기 평균) : 기울기의 이동 평균
- 2차 모먼트 (기울기 제곱 평균): 기울기의 제곱에 대한 이동 평균
1.1 1차 모멘트와 2차 모멘트 추정
\(m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla_{\theta} J(\theta_t)\)
\(v_t = \beta_2 v_{t-1} + (1 - \beta_2) \nabla_{\theta} J(\theta_t)^2\)
수식 설명
- \(m_t\) : 1차 모먼트 (기울기의 이동 평균)
- \(v_t\): 2차 모먼트 (기울기 제곱의 이동 평균)
- \(\beta_1\), \(\beta_2\) : 모멘텀 파라미터의 각각 수치적 평균을 계산하는데 사용 보통 \(\beta_1 = 0.9\), \(\beta_2 = 0.999\)가 사용됨
- \(\nabla_{\theta} J(\theta_t)\) : 파라미터에 대한 기울기
1.2 편향 보정
1차와 2차 모멘트 추정은 초기화 시 편향이 존재하기 때문에, 이를 보정해주어야 함
\(\hat{m}_t = \frac{m_t}{1 - \beta_1^t}\)
\(\hat{v}_t = \frac{v_t}{1 - \beta_2^t}\)
수식 설명
- \( \hat{m}_t \)와 \( \hat{v}_t \) : 1차 모먼트와 2차 모먼트
- \(\beta_1^t\)와 \(\beta_2^t\) : 각각의 지수적 평균이 시간에 따라 커지면서 편향이 발생하기에 이를 보정하기 위함
1.3 최종 파라미터 업데이트
Adam의 최종 파라미터 업데이트 식
\(\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t\)
수식 설명
- \(\eta\) : 학습률
- \(\epsilon\) : 수치적 안정성을 위한 작은값 (보통 \(10^{-8}\)) 사용
특징
- 적응형 학습률 : 1차 모먼트와 2차 모먼트에 대한 이동평균을 사용하여 각 파라미터에 대해 학습률을 적응 시킴
- 모멘텀과 RMSProp의 결합 : Adam은 모멘텀(기울기 평균)과 RMSProp(기울기 제곱 평균) 방법을 결합하여, 더 빠르고 안정적인 수렴을 제공함
- 편향보정 : 초기 단계에서 발생할 수 있는 편향을 보정하여 더 안정적인 최적화를 보장
장단점
장점
- 빠른 수렴
- 적응형 학습률
- 편향 보정
단점
- 높은 학습 비용
- 전역 최소값에 도달하지 못할 가능성 : 빠른 수렴을 돕지만, 가끔은 전역 최소값이 아닌 국소 최소값으로 빠지는 경우가 발생
- 하이퍼파라미터 경로 설정 :\(\beta_1\), \(\beta_2\), \(\eta\) 의 최적 경로 설정을 찾는 것이 어려울 수 있음