Boostcamp AI tech 3기/개념 이해

[Week01] AI Math - 경사하강법과 알고리즘

mcdn 2022. 1. 20. 13:59
반응형

경사하강법 - 순한맛

미분이란?

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

 

sympy 의 diff 함수를 사용하면 미분을 구할 수 있다. 

미분은 함수 f의 주어진 점 (x, f(x))에서의 접선의 기울기를 구합니다.

 

경사하강법

미분값을 더하면 경사상승법(gradient ascent)이라 하며, 함수의 극대값의 위치를 구할 때 사용합니다.

미분값을 빼면 경사하강법(gradient descent)이라 하며, 함수의 극솟값의 위치를 구할 때 사용합니다.

경사상승/경사하강 방법은 극값에 도달하면 움직임을 멈춥니다.

 

따라서 미분이 가능한 함수의 x에서 접선의 기울기가 음수라면 x를 증가하면 감소한다. 

 

미분값이 음수든 양수든 더하면 상승하고 빼면 감소한다 ??

극값에 도달하면 미분값이 0이므로 업데이트가 되지 않으므로 최적화가 자동으로 끝이 난다. 

 

다만 미분값이 0이라고 해서 찾은 극소값이 꼭 함수의 최소값이 아닐 수 있다!! local minimum 

경사하강법 : 알고리즘

#gradient : 미분을 계산하는 함수 

# init : 시작점, 

# lr : 학습률 

# eps : 알고리즘 종료조건 

var = init 

grad = gradient(var)

while (abs(grad) > eps): # 정확히 0이 되는 것은 불가능하므로 > eps라는 종료조건이 필요하다. 

  var = var - lr * grad

  grad = gradient(var)

  종료조건이 성립하기 전까지 미분값을 계속 업데이트한다.

lr은 학습률로서 미분을 통해 업데이트하는 속도를 조절할 수 있다.

 

경사하강법 파트 -> var = var - lr * grad 

learning rate은 중요하다. 

 

 

각 변수별로 편미분을 계산한 그레디언트(gradient) 벡터를 이용하여 경사하강/경사상승법에 사용할 수 있다.

계산법 

f(x, y) = x^2 + 2y^2라고 한다면 

그레디언트는 2x, 4y인 셈 

각각 마다 편향 미분을 해준 셈 

 

 

경사하강법은 norm이 적용된다. 절대값 대신 놈

 

 

반응형