비즈니스 문제를 해결하고 예측하는 데이터 사이언티스트가 되고 싶다면?
#인공지능 

경사하강법에서 Learning Rate 의 중요성과 적절한 학습률을 찾는 방법

경사하강법에서 learning rate의 중요성과 함께 적절한 learning rate를 찾는 방법을 소개합니다. Learning Rate Decay , Cyclical learning rates 등이 있습니다.

2024-05-04 | 허남철

“3e-4 is the best learning rate for Adam, hands down.”

“Adam에게는 3e-4가 최고의 학습률임이 분명하다.”라고 안드레아 카피시가 농담을 했다는데, 저만 이 농담을 이해 못 했나요? 잘은 몰라도 최적의 학습률을 찾는 것은 쉽지 않다는 말일듯 합니다. 이번 글에서는 경사하강법과 학습률에 대해 이야기하고 적절한 학습률을 찾는 방법을 소개해 보겠습니다.

1. 경사하강법과 Learning Rate

경사하강법은 머신러닝에서 모델의 파라미터를 최적화하는 사용되는 알고리즘입니다. 모델의 예측 값과 실제 값 간의 차이를 나타내는 손실 함수(loss function)의 기울기(gradient)를 이용하여 파라미터를 업데이트합니다. 이때 파라미터를 얼마나 업데이트할 것인지를 결정하는 것이 바로 learning rate(학습률, step size)입니다. Learning rate는 각 업데이트 단계에서 기울기에 곱해지는 스칼라 값으로, 파라미터 업데이트의 크기를 조절합니다.

경사하강법에서 파라미터 업데이트는 다음 수식으로 표현됩니다.

    $$ \theta_{t+1} = \theta_t - \eta \cdot \nabla J(\theta_t) $$

여기서,

  • $\theta_t$는 현재 파라미터 값을 나타내는 벡터입니다.
  • $\theta_{t+1}$는 업데이트된 파라미터 값을 나타내는 벡터입니다.
  • $\eta$는 learning rate를 나타내는 스칼라 값입니다.
  • $\nabla J(\theta_t)$는 현재 파라미터에서의 손실 함수의 기울기(gradient)를 나타내는 벡터입니다.

2. Learning rate의 중요성

이미지출처-공돌이의 수학정리노트

Learning rate는 모델 학습에 큰 영향을 미칩니다. Learning rate가 너무 크면 모델이 최적점을 지나칠 수 있고, 너무 작으면 학습 속도가 느려질 수 있습니다. 따라서 적절한 learning rate를 선택하는 것이 중요합니다. 최적의 learning rate는 모델의 수렴 속도와 안정성을 결정짓는 핵심 요소입니다.

Learning rate가 너무 클 때의 문제점

Learning rate가 너무 크면 overshooting 현상이 발생할 수 있습니다. 이는 모델이 최적점을 향해 이동하다가 지나치게 큰 업데이트로 인해 최적점을 벗어나는 것을 의미합니다. 이런 경우 모델은 최적점 주변을 진동하게 되며, 수렴하지 못하고 발산할 가능성이 있습니다.

Learning rate가 너무 작을 때의 문제점

반대로 learning rate가 너무 작으면 학습 시간이 오래 걸립니다. 작은 업데이트 크기로 인해 모델이 최적점에 도달하는 데 많은 반복이 필요하기 때문입니다. 또한, 작은 learning rate는 모델이 local minimum에 빠질 위험이 있습니다. Local minimum은 전역적인 최적점은 아니지만, 주변보다는 낮은 손실 함숫값을 가지는 지점입니다. 작은 learning rate로 인해 모델이 local minimum에서 벗어나지 못하고 갇힐 수 있습니다.

3. Learning rate 설정을 위한 일반적인 접근법

different-learning-rates-curves

적절한 learning rate를 찾기 위해서는 다양한 값을 시도해 보는 것이 좋습니다. 일반적으로 learning rate를 0.1, 0.01, 0.001로 변화시키며 실험합니다. 이때 learning rate를 큰 값에서 작은 값으로 감소하며 실험하는 것이 좋습니다. 각 learning rate에 대해 모델을 학습시키고, 손실 함수의 값(또는 다른 평가지표)을 모니터링합니다. 값이 안정적으로 감소하면서 수렴하는 learning rate를 선택하는 것이 좋습니다.

4. 학습률 조정 방법 : Learning Rate Scheduling (스케줄링)

일반적인 접근법처럼 몇 가지 고정된 값으로 실험하여 최적의 학습률을 찾는 것이 아닌, 특정 규칙에 따라 학습률을 적용하는 방법입니다.

Learning Rate Decay (학습률 감소)

compare-learning-rate-curves

학습이 진행됨에 따라 학습률을 점진적으로 감소시킵니다. 초기에는 큰 학습률로 빠르게 학습하고, 후반부에는 작은 학습률로 미세 조정을 합니다. 이를 통해 모델이 최적점에 가까워질수록 보폭을 줄여 정교하게 조정합니다. 방식에 따라 특정한 epoch에 따라 감소하는 Step Decay, 코사인함수를 따라 연속적으로 감소하는 Cosine Decay, 단순 감소하는 Linear Dacay, 제곱근의 역수로 감소하는 Inverse Sqrt Decay 등 다양하게 있습니다.

Cyclical learning rates (순환학습률, CLR)

cyclical-learning-rate

Cyclical Learning Rates for Training Neural Networks 라는 논문에서 소개된 내용입니다. 최대 학습률(max_lr)과 최저 학습률(lr) 사이 값을 순환하게 하는 방법입니다. 여기서 step size는 학습률을 의미하지 않습니다. step size는 최저 지점과 최고 지점 사이 길이입니다. 일반적으로 mini-batch의 2-10배를 정합니다. 학습률을 높이면 단기적으로는 부정적인 효과를 가져올 수 있습니다. 하지만 장기적으로는 긍정적인 효과를 가져올 수 있습니다. 또한, 학습률을 높여 안장점(saddle point)를 더 빠르게 탐색할 수 있습니다. 실제로 수백만 개의 파라미터를 갖는 모델에서 모든 차원이 로컬 최솟값인 지점을 찾을 가능성은 거의 없습니다. 오히려 로컬 최솟값과 로컬 최댓값이 차원 축에 따라 모두 존재하는 안장점의 발생 가능성이 더욱 많습니다.

정리

경사하강법에서 learning rate는 모델의 학습 속도와 성능에 큰 영향을 미치는 중요한 하이퍼파라미터입니다. 적절한 learning rate를 설정하는 것은 모델이 효과적으로 학습할 수 있게 하는 데 필수적입니다. Learning rate가 너무 크면 모델이 최적점을 지나칠 수 있고, 너무 작으면 학습 속도가 느려지고 local minimum에 빠질 수 있습니다. 따라서 다양한 learning rate를 시도하고 손실 함숫값을 모니터링하여 최적의 값을 찾는 것이 중요합니다. 또한 학습률 스케줄링(Learning Rate Decay , Cyclical learning rates) 등의 방법을 활용하여 학습 과정을 최적화할 수 있습니다.

참고자료