본문으로 건너뛰기
실습하기

학습하는 속도, 학습률(Learning Rate)

학습률(Learning Rate)은 모델이 가중치를 업데이트하는 속도를 결정하는 하이퍼파라미터입니다. 학습률이 너무 높으면 모델이 최적의 솔루션을 '넘어서서' 발산할 수 있고, 너무 낮으면 최적의 솔루션을 찾지 못하거나 시간이 너무 오래걸릴 수 있습니다.


학습률로 사용하는 값

학습률은 0에서 1 사이의 값을 사용하지만, 실제로는 0.1 이하의 매우 작은 값들이 많이 사용됩니다.

  • 0.1 (10%): 큰 학습률입니다. 빠르게 학습을 시도하지만, 발산할 위험이 큽니다.

  • 0.01 (1%): 많이 사용되는 학습률이지만, 비교적 큰 학습률입니다. 발산할 가능성이 있습니다.

  • 0.001 (0.1%): 많이 사용되는 학습률입니다. 안정적으로 학습하지만, 수렴이 다소 느릴 수 있습니다

  • 0.0001 (0.01%): 작은 학습률입니다. 안정적인 학습을 보장하지만, 학습이 더욱 느릴 수 있습니다.


학습률의 중요성 및 영향

  • 높은 학습률: 빠른 학습이 가능하지만, 너무 높으면 학습 과정에서 발생하는 오차를 줄이지 못하고 최적의 솔루션을 '넘어서서' 발산할 수 있습니다.

  • 낮은 학습률: 안정적인 학습을 제공하지만, 너무 낮으면 학습이 지나치게 느려지고 모델이 훈련 데이터에 지나치게 적응하는 과적합(Overfitting)이 발생할 수 있습니다.


학습률 최적화 전략

  1. 학습률 감소: 학습이 진행됨에 따라 학습률을 점차 줄여가는 방법입니다. 초기에는 높은 학습률로 빠르게 학습하고, 후반에는 학습률을 낮추어 더 세밀하게 학습합니다. 학습이 진행됨에 따라 학습률을 일정 비율로 감소시키는 방법(예: 매 에폭마다 1/10씩 감소)이나, 특정 지표가 향상되지 않을 때 학습률을 줄이는 방법이 있습니다.

  2. 적응적 학습률(Adaptive Learning Rate): 모델이 학습하면서 학습률을 유연하게 조정하는 방법입니다. 대표적인 알고리즘으로는 아다그라드(Adagrad), 아다델타(Adadelta), RMSprop, 아담(Adam) 등이 있습니다.

  3. 사이클릭 학습률(Cyclic Learning Rate): 학습률을 주기적으로 변동시키는 방법입니다. 학습률을 주기적으로 높이고 낮추는 패턴을 만들어서 모델이 더 넓은 영역을 탐색하게 됩니다.


실습

오른쪽 실습 화면에서 서로 다른 학습률로 학습된 파인튜닝 모델을 비교합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!