인공지능/머신러닝

[머신러닝 - 이론] 경사 하강법 (Gradient Descent)

바보1 2022. 7. 28. 20:05

 

 

1. 경사 하강법의 정의

 

 

경사 하강법(傾斜下降法, Gradient descent)은 1차 근삿값 발견용 최적화 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하고 경사의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것이다.

-위키 백과-

 

  • 만약 본인이 한 치 앞도 보이지 않는 상황에서 산을 내려가야 하거나, 올라가야 한다면 어떻게 해야할까요?
  • 시각적으로 멀리 있는 산 꼭대기가 보이지 않기 때문에 단순히 근처의 지형을 가지고 판단을 내려야 합니다.
  • 그러므로 현재 위치에서 가장 경사가 높은 곳, 그 곳으로 계속해서 움직이면 '보통'의 경우 산의 정상에 도달 할 수 있습니다.
  • 이는 경사 상승법이라고 하며, 정 반대의 방법으로 계속해서 가장 낮은 곳으로 이동하는 것이 경사 하강법이라고 할 수 있습니다.

2. 그렇다면 왜 경사 하강법을 사용할까?

 

 

  • 일반적으로 인공지능은 손실 함수를 통하여 자신의 파라미터를 검증합니다.
  • 손실 함수는 인공지능의 파라미터를 통하여 나온 예측 값과 실제 값의 차이라고 볼 수 있으며, 
  • 손실 함수 값을 가장 낮게 나오게 하는 파라미터들이 바로 최적의 파라미터라고 할 수 있습니다.

 

  • 그러면 그냥 손실함수를 미분하여 최소, 최대 값을 찾으면 되지 않을까요?
  • 하지만 미분을 이용하지 않고, 경사 하강법을 이용하여 최소의 근삿값을 찾는 이유가 있습니다.
    • 실제 우리가 마주치는 함수들은 간단한 함수가 아니라 복잡하고, 비선형적인 함수가 대부분입니다. 따라서 미분을 통하여 그 값을 계산하기 어려운 경우가 많습니다.
    • 미분을 구현하는 과정보다 경사 하강법을 구현하여 최솟값을 찾는 것이 실질적으로 더 효율적입니다.

 

  • 따라서 우리는 함수를 미분하는 대신 경사 하강법을 이용하여 함수의 최소, 최댓값을 찾습니다.

3. 경사 하강법으로 근사값을 찾는 과정

 

 

 

https://hackernoon.com/life-is-gradient-descent-880c60ac1be8

 

  • 만약 현재 위치의 기울기가 음수라면 파라미터를 증가시키면 최솟값을 찾을 수 있습니다.
  • 반대로 기울기가 양수라면 파라미터를 감소시키면 최솟값을 찾을 수 있습니다.

 

  • 따라서 해당 파라미터에서 학습률 * 기울기를 빼면 최솟값이 되는 장소를 찾을 수 있습니다.
  • 수식은 \(w \leftarrow w - \eta * \frac{\partial L}{\partial w}\)와 같습니다.
  • 이때 \(\leftarrow\)는 업데이트가 된다는 뜻입니다.
  • \(\eta\)는 학습률이고, \(\frac{\partial L}{\partial w}\)는 손실 함수 위에서의 해당 가중치의 기울기입니다.

 

  • 근데 사실은 정말로 기울기가 가리키는 곳에 최솟값이 있을지, 그쪽이 정말 나아갈 방향인지 보장할 수 없습니다.
  • 하지만 지금 당장에서는 기울기가 가리키는 방향으로 가야 손실 함수의 값을 줄일 수 있는 것은 확정적이므로, 최솟값이 되는 장소를 찾기 위해서는 기울기 정보를 단서로 나아갈 방향을 찾아야 합니다.

4. 경사 하강법의 문제점

 

 

  • 이런 경사 하강법도 몇 가지 문제점을 가지고 있습니다.
  • 대표적으로 [적절한 학습률(Learning Rate), Local Minimum]이 있습니다.

 

  • 통상적으로 학습률과 기울기 정보를 혼합하여 내가 나아갈 방향과 거리를 결정합니다.
  • 따라서 학습률이 높으면 높을수록 더욱더 많이 나아갑니다.
  • 그러므로 학습률이 높으면 한 번에 이동하는 거리가 커지므로 최적값에 빨리 수렴할 수 있다는 장점이 있습니다.
  • 하지만 너무 크게 설정하면 최적값에 수렴하지 못하고 다른 곳으로 발산하는 현상이 나타날 수 있습니다.
  • 정 반대로 학습률이 낮으면 발산하지 않는 대신 최적값에 수렴하는 시간이 오래 걸릴 수 있습니다.

그림 1은 작은 학습률, 그림 3은 너무 큰 학습률

  • 위의 그림에서 볼 수 있듯이, 학습률을 적절히 조정하는 것이 매우 중요합니다.
  • 추가적으로, 학습 시간 혹은 검증 세트의 손실 값에 따라 학습률을 조절하는 기법을 Scheduling이라고 합니다.

 

 

  • 두 번째로 Local Minimum(지역 최솟값)에 안착해버릴 수 있습니다.
  • 실제로 우리는 전역 최솟값을 찾고 싶지만, 어떤 이유로 인해 지역 최솟값에 빠지는 경우 탈출하지 못하고 해당 위치로 수렴할 가능성이 존재합니다.

  • 운이 안 좋다면 Local Minimum에 빠져 탈출하지 못하고, 해당 Local Minimum이 Global Minimum이라고 인식되어 Suboptimal 한 결과가 도출될 수 있습니다.

5. 해결법

 

 

  • 이를 위하여 다양한 경사 하강법들이 나왔습니다.
  • 학습 도중에 학습률을 지속적으로 바꾸는 Adaptive Gradient Descent가 있고,
  • Local Minimum에 빠지는 경우를 방지하기 위해 관성력을 추가한 Momentum GD가 있습니다.
  • 다른 다양한 경사 하강법은 추후에 추가하도록 하겠습니다.

 

 

지적 환영합니다.

감사합니다.