코딩 다이어리

경사하강법 본문

머신러닝/딥러닝

경사하강법

yc7764 2022. 12. 22. 15:59

경사하강법이란?

  • 1차 근삿값 발견용 최적화 알고리즘으로 주로 딥러닝에서 최적의 가중치를 구하기위해 사용
  • 함수의 기울기(경사)를 구하고 경사의 절댓값이 낮은 쪽으로 계속 이동시켜 극값에 이를 때까지 반복
  • 보통 함수의 최솟값을 찾기 위해 미분계수를 구하지만 머신러닝에서는 거의 사용하지 않음
    • 실제 데이터를 사용한 분석에서 함수들의 형태가 복잡해 미분계수와 근을 계산하기 어려움
    • 데이터의 양이 많아질 수록 미분계수 계산 과정보다 경사하강법이 효율적

수식 유도 과정

  • 함수의 기울기(즉, gradient)를 이용해 x의 값을 어디로 옮겼을 때 함수가 최소값을 찾는지 알아보는 방법

  • 기울기가 양수이면 x값이 커질 수록 함수값이 커지고, 기울기가 음수이면 x값이 커질 수록 함수값이 작아짐
  • 기울기의 절대값이 크면 가파르며 현재 함수값이 함수의 최솟값이나 최대값으로부터 멀리 떨어져 있음
  • 즉, 기울기가 양수이면 음의 방향으로 x를 옮기고, 기울기가 음수이면 양의 방향으로 x를 옮기면 극값을 향하게 됨
  • 이를 수식으로 나타내면 아래와 같음
    1. $ x_{i+1} = x_{i} - 이동거리 \times 기울기의 부호 $
    2. $ x_{i+1} = x_{i} - \alpha\frac{\text{d}f}{\text{d}x}(x_{i}) $

경사하강법의 한계

1. Local Minima 문제

  • 함수의 최솟값을 Global Maximum이라고 하며, 경사하강법은 global maximum를 찾아 이때의 x값을 구하고 가중치 값을 업데이트함
  • 하지만 왼쪽의 그림처럼 파라미터 공간에 수많은 지역적인 홀이 존재하고 Local Minima를 Global maximum으로 착각하여 잘못된 최적해를 찾게 됨
  • 경사하강법의 시작 지점에 따라 다른 최적의 값이 구해지기 때문에 반드시 최적해를 구한다는 보장이 없음

2. Saddle Point 문제

Saddle Point

  • 기울기가 0이지만 극값이 아닌 지점을 안장점(Saddle Point)라고 함
  • 위의 그림을 살펴보면, 검은색 점은 A~B 사이에서는 최솟값(minima)이지만 C~D 사이에서는 최댓값
  • 경사하강법은 기울기가 0일 경우 더이상 파라미터를 업데이트하지 않기 때문에 안장점을 벗어나지 못함

3. Step size 문제

  • Step size가 클 경우 한번에 이동하는 거리가 크므로 최솟값에 빠르게 수렴할 수 있지만 오히려 함수값이 커지는 방향으로 최적화가 진행되어 발산하는 경우가 생김
  • Step size가 작은 경우 발산할 위험이 적어지지만 최솟값을 구하기 위해 더 많은 시간이 소요됨
  • 수렴하지 않거나 발산하지 않도록 적절한 Step size를 조절해야 함

참고사이트

https://angeloyeo.github.io/2020/08/16/gradient_descent.html

 

경사하강법(gradient descent) - 공돌이의 수학정리노트

 

angeloyeo.github.io

https://velog.io/@sasganamabeer/AI-Gradient-Descent%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95

 

[AI] Gradient Descent(경사하강법)

경사하강법(Gradient Descent)은 1차 근삿값 발견용 최적화 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하고 경사의 절댓값이 낮은 쪽으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것

velog.io

'머신러닝 > 딥러닝' 카테고리의 다른 글

RNN(Recurrent Neural Network, 순환 신경망)  (2) 2023.01.19
CNN  (1) 2022.12.23
순전파(Foward Propagation)와 역전파(Back Propagation)  (0) 2022.12.18
활성화 함수(Activation Function)  (0) 2022.12.08
퍼셉트론(Perceptron)  (0) 2022.12.07
Comments