欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World

DS | Data Science/ML | Machine Learning

[Gradient Descent & Gradient ascent] 경사상승법 & 경사하강법

_껀이_ 2022. 9. 21. 00:39
728x90
반응형

1. 미분이란?

       : 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구

       : 함수의 특정 위치에서의 변화량, 기울기

미분 계산식

 

  • 주어진 점 (x,f(x))에서 미분값을 알면 어느 방향으로 움직여야 함수값이 증가/감소하는지 알수 있다.
  • 미분값 < 0 일때,

       : x + f`(x) <  < x - f`(x)

  • 미분값 > 0 일때, 

       : x - f`(x) <  x  < x + f`(x)

 

  • 미분값을 더하면 경사상승법(gradient ascent) : 함수의 극대값의 위치를 구할 때 사용
  • 미분값을 빼면면 경사하강법(gradient descent) : 함수의 극소값의 위치를 구할 때 사용

 

 

2. 편미분

 변수가 벡터인 경우 다변수 함수가 된다. 각각의 변수에 따라 기울기가 발생하기 때문에 함수의 최적화를 위해서는 각각의 변수마다 미분값을 계산하게 되는데 이를 편미분(Partial Differentiation)이라고 한다.

편미분 예시

이렇게 각 변수마다 편미분을 계산한 gradient vector를 이용하여 경사하강법/경사상승법에 적용할 수 있다.

gradient vector

gradient vector의 각 요소들은 각각의 변수에 대한 편미분 값이다.

 

 

3. 경사하강법 / 경사상승법

 함수의 극대값 / 극소값을 계산하기 위해서는 기울기, 특정한 지점에서의 미분값이 필요하고 그에따라 예측된 결과값이 필요하다. 또, 이렇게 예측된 결과값과 주어진 결과값의 차이인 오차가 계산된다. 

 

Machine Learning 모델에서 사용하는 함수의 최적화도 마찬가지이므로,

 

이를 수식화 하면 다음과 같다.

일반적인 비용함수 수식

위의 그림에서 H(x)는 예측된 결과값이다. 비용함수 cost(W,b)는 1~i개의 데이터에 대해 예측된 결과값과 주어진 결과값(lavel : y)의 차이에 대한 평균제곱오차(MSE)이다.

W, b에 대한 gradient 코드 예시 (1)
W, b에 대한 gradient 코드 예시 (2)

이렇게 계산된 비용함수를 변수 W, b에 대한 편미분값을 원래의 W, b에서 빼줌으로써 각각 gradient를 계산할 수 있고, learning rate를 사용하여 gradient의 변화량을 얼만큼 적용할 지를 정하게 된다.

 

이를 통해 비용함수의 값을 최소화하는 것이 경사하강법이며, 이때 원래의 W, b에 gradient를 더하게 되면 경사상승법이 된다. 

 

 

4. 확률적 경사하강법

 일반적인 경사하강법에서의 문제점은 볼록(convex)한 함수에 대해서만 수렴이 보장되어있다는 점이다. 그렇다면 볼록하지 않은(non-convex) 함수에 대해서는 어떻게 최적의 해를 도출해 낼 수 있을까?

 

 확률적 경사하강법(Stochastic Gradient Descent : SGD)은 모든 데이터를 사용해서 gradient를 업데이트하는 것이 아니라 데이터의 일부를 통해서 업데이트하는 방식이다. 랜덤하게 선택한 데이터를 사용하기 때문에 non-convex한 함수에 대해서 비용함수를 일반화할 수 있다는 장점이 있다.

 

SGD 예시 코드

위의 코드에서 볼 수 있듯이 원래의 데이터에서 랜덤하게 10개를 뽑아 mini_batch를 만든다. 이를 사용하여 비용함수를 계산하여 업데이트하게 되면 mini_batch의 10개에 대한 변화량만큼 업데이트가 된다. 이를 반복하게 되면 원천데이터 전체에 대한 값에 수렴하게 되면서 non-convex한 함수에 대해서도 경사하강법을 적용할 수 있게 된다.

 

 

 

참고자료 : 네이버부스트캠프 AI Tech 강의자료

728x90
반응형