https://twojun-space.tistory.com/124

 

 

경사하강법이란?



최적의 해를 도출하기 위하여 사용된 예측함수의 최솟값을 찾는 기법입니다.  가장 기본적인 형태의 경사하강법은 다음과 같이 표현될 수 있습니다:

\[ \theta = \theta - \alpha \cdot \nabla J(\theta) \]

여기서:
- \( \theta \)는 업데이트할 모델의 파라미터 벡터입니다.
- \( \alpha \)는 학습률(learning rate)이라고 불리는 스칼라 값입니다. 이 값은 경사하강법이 얼마나 큰 단계로 이동해야 하는지를 결정합니다.
- \( J(\theta) \)는 비용 함수(cost function)이며, 모델의 파라미터 \( \theta \)에 대한 손실(또는 비용)을 측정합니다.
- \( \nabla J(\theta) \)는 비용 함수 \( J(\theta) \)에 대한 기울기(gradient) 벡터입니다. 이는 모델 파라미터의 각 차원에 대한 손실 함수의 변화율을 나타냅니다.

이 수식은 다음과 같이 해석됩니다:
- 현재 모델의 파라미터 \( \theta \)에서 시작하여,
- 손실 함수의 기울기(gradient) 방향으로 학습률 \( \alpha \)의 크기로 이동하여,
- 새로운 모델 파라미터 \( \theta \)를 업데이트합니다.

이러한 단계를 반복하여 손실 함수가 최소가 되는 모델 파라미터를 찾습니다.

이 수식은 경사하강법 알고리즘의 핵심을 나타내며, 학습률과 손실 함수의 기울기를 이용하여 모델 파라미터를 업데이트합니다. 이러한 과정을 통해 모델은 데이터에 더 잘 적합되는 방향으로 조정됩니다.

 

경사하강법의 문제

이러한 경사하강 법에도 여러가지 문제 점들이 존재합니다.

  • Step Size가 너무 큰 경우: 극소점을 찾아갈 수 없게 됩니다.

  • Step SIze가 너무 작은 경우: 너무 많은 학습이 필요하게 될 수 있습니다.

  • Global Maximum이 아니라 Local Maximum에 빠지는 경우: 최적화된 지점을 찾아가지 못합니다. 

경사하강법의 종류

 

1. SDG(Stochastic Gradient Descent, SGD)

 

확률적 경사하강법(Stochastic Gradient Descent, SGD)은 경사하강법의 한 변종으로, 매 반복마다 무작위로 선택된 하나의 훈련 예제에 대해 기울기를 계산하고 파라미터를 업데이트합니다. 이는 전체 데이터 세트를 사용하는 것보다 훨씬 더 빠르게 수렴할 수 있습니다. 

SGD의 갱신 규칙은 다음과 같습니다:

\[ \theta = \theta - \alpha \cdot \nabla J_i(\theta) \]

여기서:
- \( \theta \)는 업데이트할 모델의 파라미터 벡터입니다.
- \( \alpha \)는 학습률(learning rate)입니다.
- \( J_i(\theta) \)는 \( i \)번째 훈련 예제에 대한 손실 함수입니다.
- \( \nabla J_i(\theta) \)는 \( i \)번째 훈련 예제에 대한 손실 함수의 기울기(gradient) 벡터입니다.

SGD는 전체 데이터 세트를 사용하지 않고 단일 데이터 포인트 또는 미니 배치에 대한 손실 함수의 기울기를 계산합니다. 이렇게 함으로써 계산 비용을 줄이고, 지역 최소값(local minima)에 빠지는 것을 피할 수 있습니다. 하지만 SGD는 노이즈가 많은 학습 과정을 가질 수 있고, 수렴이 불안정할 수 있습니다.

SGD의 장단점은 다음과 같습니다:
- 장점:
  - 계산 비용이 낮습니다. 전체 데이터 세트를 사용하지 않고 각 반복에서 단일 데이터 포인트 또는 미니 배치만 사용하기 때문에 더 빠릅니다.
  - 지역 최소값(local minima)에 빠질 가능성이 낮습니다. 무작위한 선택으로 인해 더 다양한 영역을 탐색할 수 있습니다.
- 단점:
  - 노이즈가 많을 수 있습니다. 각 반복에서 단일 데이터 포인트만 사용하기 때문에 최적화된 방향이 실제로는 아닐 수 있습니다.
  - 수렴이 불안정할 수 있습니다. 무작위한 선택으로 인해 수렴 속도가 느려질 수 있습니다.

 

2. Momentum

 

SGD는 머신러닝에서 널리 사용되며, 딥러닝에서도 많이 사용됩니다. 또한 SGD를 개선한 많은 변종이 있으며, 이들은 SGD의 단점을 보완하기 위해 설계되었습니다.

모멘텀(Momentum)은 경사 하강법의 변형 중 하나로, 이전 그래디언트의 방향을 고려하여 최적화 알고리즘의 속도를 조절하는 방법입니다. 이전의 그래디언트를 사용하여 현재의 그래디언트를 업데이트하므로써 진행 방향을 보다 일관되게 유지하는 데 도움이 됩니다.

모멘텀은 다음과 같이 수식으로 표현됩니다.

\[ v_{t+1} = \beta v_t + (1 - \beta) \nabla J(\theta_t) \]
\[ \theta_{t+1} = \theta_t - \eta v_{t+1} \]

여기서:
- \( \theta_t \)는 현재의 매개 변수 벡터입니다.
- \( \eta \)는 학습률(learning rate)로, 각각의 단계에서 얼마나 많이 업데이트할지를 결정합니다.
- \( \nabla J(\theta_t) \)는 손실 함수 \( J \)에 대한 매개 변수 \( \theta \)의 그래디언트(경사)입니다.
- \( v_t \)는 이전 단계에서의 모멘텀 벡터입니다.
- \( \beta \)는 모멘텀 상수로, 일반적으로 0.9와 같은 값으로 설정됩니다.

모멘텀은 경사 하강 과정에서 공을 내리는 것으로 비유될 수 있습니다. 초기에는 조금씩 내려가다가 언덕을 만나면 관성에 의해 공이 계속 내려갑니다. 이는 모멘텀이 이전 그래디언트의 방향을 고려하여 현재의 업데이트 방향을 결정하기 때문입니다.

모멘텀의 장점은 다음과 같습니다.
1. 지역 최솟값에서 빠져나오는 데 도움을 줍니다.
2. 발산하지 않고 빠르게 수렴할 수 있습니다.
3. 진동을 줄여줍니다.

모멘텀은 SGD와 같이 사용될 수 있으며, 일반적으로 SGD에 모멘텀을 적용한 SGD+Momentum이 널리 사용됩니다.

 

3. AdaGrad

물론입니다. Adagrad는 각 매개 변수마다 학습률을 조정하여 학습 과정을 안정화하는 최적화 알고리즘입니다. 이전에 많은 변화가 있었던 매개 변수는 작은 학습률을 갖게 되고, 드문 변화가 있었던 매개 변수는 큰 학습률을 갖게 됩니다.

Adagrad의 핵심 아이디어는 매개 변수마다 학습률을 조정하는 방식입니다. 이를 위해 각 매개 변수에 대한 그래디언트 제곱의 누적값을 저장하며, 이 값은 매개 변수마다 서로 다른 학습률을 만들어냅니다.

수식을 하나씩 살펴보겠습니다.

1. 누적 제곱 그래디언트:

\[ G_{t+1} = G_t + (\nabla J(\theta_t))^2 \]

여기서 \( G_{t+1} \)은 \( t+1 \) 시점에서의 매개 변수에 대한 그래디언트 제곱의 누적값입니다. \( \nabla J(\theta_t) \)는 손실 함수 \( J \)에 대한 \( \theta \)의 그래디언트(gradient)이며, \( \theta_t \)는 현재의 매개 변수 값입니다. 이전에 누적된 제곱 그래디언트와 현재의 그래디언트 제곱을 더하여 새로운 누적값을 계산합니다.

2. 매개 변수 업데이트:

\[ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_{t+1} + \epsilon}} \cdot \nabla J(\theta_t) \]

여기서 \( \eta \)는 학습률(learning rate)이며, \( \epsilon \)은 0으로 나누는 것을 방지하기 위한 작은 상수입니다. 새로운 매개 변수 값은 현재 매개 변수에서 학습률을 조정한 값으로 업데이트됩니다. 학습률은 각 매개 변수의 누적 제곱 그래디언트에 대해 제곱근을 취하여 조정됩니다.

이러한 방식으로 Adagrad는 매개 변수마다 적절한 학습률을 조절하여 학습 과정을 안정화시키고 빠른 수렴을 도모합니다.

 

4. RMSprop

RMSprop(Root Mean Square Propagation)는 Adagrad의 한계를 극복하기 위해 제안된 최적화 알고리즘 중 하나입니다. Adagrad는 그래디언트 제곱의 누적값을 이용하여 학습률을 조절하는데, 이로 인해 학습이 진행될수록 학습률이 너무 작아져서 일찍부터 더 이상의 학습이 이루어지지 않을 수 있습니다. RMSprop는 이러한 문제를 해결하기 위해 그래디언트 제곱의 누적값을 지수 이동 평균(Exponential Moving Average, EMA)으로 업데이트하여 학습률을 조절합니다.

수식은 다음과 같습니다.

\[ E[g^2]_t = \beta E[g^2]_{t-1} + (1 - \beta) (\nabla J(\theta_t))^2 \]

\[ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot \nabla J(\theta_t) \]

여기서:
- \( E[g^2]_t \)는 \( t \) 시점에서의 그래디언트 제곱의 지수 이동 평균입니다.
- \( \beta \)는 이동 평균의 가중치를 제어하는 하이퍼파라미터입니다. 보통 0.9 정도로 설정됩니다.
- \( \eta \)는 학습률(learning rate)입니다.
- \( \epsilon \)은 0으로 나누는 것을 방지하기 위한 작은 상수입니다.
- \( \nabla J(\theta_t) \)는 손실 함수 \( J \)에 대한 \( \theta \)의 그래디언트(gradient)입니다.

RMSprop는 Adagrad와 비슷하지만, 그래디언트 제곱의 누적값을 이동 평균으로 업데이트하여 학습률이 너무 빨리 감소하는 문제를 완화합니다. 따라서 RMSprop는 더 안정적인 학습을 가능하게 하며, 많은 경우에서 Adagrad보다 더 효과적으로 작동할 수 있습니다.

 

5. Adam

 

Adam(Adaptive Moment Estimation)은 RMSprop과 모멘텀 최적화를 결합한 최적화 알고리즘으로, 그래디언트의 지수 이동 평균과 모멘텀의 개념을 활용하여 각 매개 변수마다 적응적인 학습률을 제공합니다. Adam은 다양한 하이퍼파라미터를 사용하여 학습률을 조정하고 최적화 과정을 안정화시키는 효과적인 방법을 제공합니다.

수식은 다음과 같습니다.

\[ m_t = \beta_1 m_{t-1} + (1 - \beta_1) \nabla J(\theta_t) \]
\[ v_t = \beta_2 v_{t-1} + (1 - \beta_2) (\nabla J(\theta_t))^2 \]
\[ \hat{m}_t = \frac{m_t}{1 - \beta_1^t} \]
\[ \hat{v}_t = \frac{v_t}{1 - \beta_2^t} \]
\[ \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t \]

여기서:
- \( m_t \)는 그래디언트의 지수 이동 평균입니다.
- \( v_t \)는 그래디언트 제곱의 지수 이동 평균입니다.
- \( \hat{m}_t \)와 \( \hat{v}_t \)는 편향 보정을 적용한 이동 평균입니다.
- \( \beta_1 \)와 \( \beta_2 \)는 이동 평균의 가중치를 제어하는 하이퍼파라미터입니다. 보통 \( \beta_1 = 0.9 \)와 \( \beta_2 = 0.999 \)로 설정됩니다.
- \( \eta \)는 학습률(learning rate)입니다.
- \( \epsilon \)은 0으로 나누는 것을 방지하기 위한 작은 상수입니다.
- \( \theta_t \)는 현재의 매개 변수 값입니다.
- \( \nabla J(\theta_t) \)는 손실 함수 \( J \)에 대한 \( \theta \)의 그래디언트(gradient)입니다.
- \( t \)는 현재의 반복 횟수를 나타냅니다.

Adam은 RMSprop과 모멘텀 최적화의 아이디어를 결합하여 학습률을 자동으로 조정하고 최적화 과정을 안정화시킵니다. 이를 통해 다양한 문제에 대해 빠르고 안정적으로 수렴할 수 있습니다.

+ Recent posts