본문 바로가기
머신러닝, 딥러닝

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

by Deeppago 2022. 2. 4.
-목차-

1. 경사 하강법(Gradient Descent) 이란?

2. 미분 값(Derivative Term)

3. 학습률(Learning Rate)

4. local minima 문제

1. 경사 하강법(Gradient Descent) 이란?

경사 하강법은 함수 값이 낮아지는 방향으로 독립 변수 값을 변형시켜가면서 최종적으로는 최소 함수 값을 갖도록 하는 독립 변수 값을 찾는 방법이다.

경사 하강법은 머신러닝에서 비용함수(Cost function)를 최소화하는 파라미터 \(\theta \)를 구하는 알고리즘으로 폭넓게 쓰이고 있다.

참고 : 비용 함수(Cost function)

 

 

위 그림은 독립변수 \(\theta_{0}\), \(\theta_{1}\)을 가지는 임의의 함수 \(J\)가 있을 때, \(J\)의 값을 최소로 하는 돌립 변수 \(\theta_{0}\), \(\theta_{1}\)을 찾는 경사 하강법의 작동 원리를 표현한 것이다. 방법은 단순하다.

  • \(\theta_{0}\), \(\theta_{1}\)의 임의의 초기값을 정한다.
  • 임의의 함수 \(J\)가 최소가 되는 \(\theta_{0}\), \(\theta_{1}\)를 찾기 위해 \(\theta\)를 갱신한다.

그렇다면 \(\theta\)는 어떻게 갱신되는 것일까?

 

경사 하강법을 조금 더 자세히 들여다보면 위와 같다.

  • 임의의 함수 \(J\)에 대한 미분 값을 구한다.
  • \(\alpha \)는 Learning rate를 의미한다.
  • \(J\)의 미분 값에 Learning rate인 \(\alpha \)를 곱해 \(\theta\)에 빼줌으로써 \(\theta\)를 갱신한다.

위 수식에서 함수 \(J\)에 대한 미분 값인\(\frac{\partial}{\partial\theta_{j}}J(\theta_0,\theta_1)\)의 의미와 Leaning rate \(\alpha \)에 대한 의미를 알아자.


2. 미분 값(Derivative Term)

\(\theta_{0}\)를 상수라고 가정하고 \(\theta_{1}\)하나의 독립변수를 갖는 \(J(\theta_1)\)의 그래프 개형이 아래와 같다고 가정해보자.

 

여기서 함수 \(J\)에 대한 미분 값인 \(\frac{\partial}{\partial\theta_{1}}J(\theta_1)\)는 현재 \(\theta\)값에 대한 \(J\)함수에서의 기울기를 의미한다. 함수는 극점에서 기울기가 0이 된다.

위와 같은 함수에서 기울기가 0이라는 의미는 \(\theta_{1}\)에 대한 \(J(\theta_1)\)의 결괏값이 최소가 되었다는 의미가 된다.

그렇다면 위 그림에서 \(\theta_{1}\)을 어떻게 갱신해야 \(J(\theta_1)\)의 값이 최소가 되는 것일까?

위 그림에서 기울기 값은 양수일 것이다. 그리고 \(\theta_{1}\)값이 감소함에 따라 기울기도 작아질 것이다.

만약 \(\theta_{1}\)에 현재 기울기만큼을 계속 빼준다면 \(\theta_{1}\)은 계속 작아지다가 기울기가 0인 지점(\(J(\theta_1)\)의 값이 최소가 되는 지점)에 도달했을 때 \(\theta_{1}\)의 갱신은 멈출 것이다.

 

위 그림에서는 기울기 값이 음수일 것이다. 그리고 \(\theta_{1}\)값이 커짐에 따라 기울기는 작아질 것이다.

만약 \(\theta_{1}\)에 현재 기울기만큼을 계속 빼준다면 기울기가 음수이기 때문에 \(\theta_{1}\)은 계속 커지다가 기울기가 0인 지점(\(J(\theta_1)\)의 값이 최소가 되는 지점)에 도달했을 때 \(\theta_{1}\)의 갱신은 멈출 것이다.

 

이제 다시 아래 식을 보자. 이 식에서 \(\theta_{j}\)에 함수 \(J\)에 대한 미분 값을 빼준다는 것이 \(J\)의 결괏값을 최소로 하는 \(\theta_{j}\)를 찾기 위함임을 이해할 수 있을 것이다.

\[\theta_j := \theta_j - \alpha \frac{\partial}{\partial\theta_j}J(\theta_0, \theta_1)\]

 


3. 학습률(Learning Rate)

이제 Leaning rate \(\alpha \)에 대한 의미를 알아자.

Leaning rate는 \(\theta_{j}\)에 얼마나 갱신할지에 대한 정도를 의미한다.

 

만약 Leaning rate가 지나치게 작다면 최솟값에 도달하기 위해 굉장히 많은 연산이 요구될 것이다.

반대로 Leaning rate가 지나치게 크다면 \(\theta\)가 반대쪽을 오가며 매우 큰 거리를 이동하게 되어 최솟값에서 점점 멀어지게 된다.

그렇기 때문에 적절한 Leaning rate를 설정하는 것은 매우 중요하다.

 


4. local minima 문제

경사 하강법에도 약점이 있다. 경사 하강법은 현재 위치에서의 기울기를 사용하기 때문에 지역 최솟값에 빠질 수 있다. 또한 무작위 초기화(Random initialization)로 인해 알고리즘이 전역 최솟값이 아닌 지역 최솟값에 수렴할 수 있다.  실제로 우리가 찾고 싶은 것은 아래의 그림에서 볼 수 있는 빨간 점이 표시하는 Global minimum이지만,

Gradient descent 알고리즘을 시작하는 위치는 매번 랜덤 하기 때문에 어떤 경우에는 Local minima에 빠져 계속 헤어 나오지 못하는 경우도 생긴다. 이러한 문제를 해결하기 위해 여러 Optimizer가 제안되었다. 

참고 : Optimizer

그러나 선형 회귀(Linear Regression)의 경우엔 위 그림처럼 Bowl-Shaped Function의 형태 만을 가지기 때문에 Global minimum밖에 존재하지 않는다. 그러므로 Linear Regression으로 필연적으로 Global minimum으로 수렴한다.

 

 

 


참고 자료

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

https://box-world.tistory.com/7

https://brunch.co.kr/@linecard/446

댓글