미분

부록편에서는 지금까지의 강의를 하면서 개념 자체를 이해하는데 큰 필요성을 느끼지 못해 설명하지 않았던 수학적인 부분에 대해 설명합니다.

참고로 그렇게 수학적으로 깊게 파고들지는 않고, 간단히 개념을 이해할 정도로만 설명합니다.

 

 

1. 극한에 관하여

 

미분에 대해 알기 위해선 극한에 대해서 알아야 합니다.

그런데 사실 극한은 매우 간단합니다.

특정한 함수 f(x)가 L에 한없이 가까워 지는 것을 f(x)가 L에 수렴한다고 하고, 

이 때 L을 함수 f(x)의 x=a에서의 극한값이라고 합니다.

이 때, 이것을 기호로 lim x->a f(x) = L 으로 표현합니다.

주의하셔야 할 점은 x=a에서의 극한값이 x=a일 때의 값을 의미하진 않습니다.

x가 a에 수렴한다는 것은 x=a라는 것이 아니라, x의 값이 a에 최대한 근접했다는 뜻입니다.

함수의 극한

위의 그래프를 보도록 합니다.

x가 a의 왼쪽 부분에서 시작해서 a에 한없이 가까워 진다고 해봅시다.

그럼 x가 a에 서서히 가까워질수록, f(x)의 값도 8로 가까워지게 됩니다.

마찬가지로 x가 a의 오른쪽 부분에서 시작해서 a에 한없이 가까워 진다고 해도,

x가 a에 서서히 가까워질수록 f(x)의 값도 8로 가까워집니다.

이 때 함수 f(x)에서 x=a에서의 극한값은 8이 됩니다.

 

 

2. 미분과 Gradient Descent

 

2-1. 평균 변화율이란?

 

함수에서 평균 변화율은 다음과 같이 정의합니다.

함수 y=f(x)에서 x의 값이 a에서 b까지 변할 때, 평균 변화율은

(f(x)의 변화량) / (x의 변화량) = (f(b) - f(a))/ (b-a) = (f(a) + x의 변화량) - f(a) / x의 변화량

으로 정의됩니다.

그리고, f(x)의 변화량과 x의 변화량은 기호로 각각 Δf(x), Δx라는 기호로도 나타낼 수 있는데, 그렇게 위 식을 쓰면

Δf(x) / Δx  =  (f(b) - f(a))/ (b-a)  =  (f(a) + Δx) - f(a) / Δx

라고도 쓸 수 있습니다.

 

막 어렵게 써놨지만, 간단히 말해서 함수 f(x)에서 a에서 b까지의 기울기를 의미합니다.

 

간단한 exercise로 y=x^2그래프에서 x의 값이 1에서 2까지 변할 때 평균 변화율을 생각해 보면,

Δf(x) = 2^2 - 1^2 = 4 - 1 = 3

Δx = 2 - 1 = 1

즉, 평균 변화율 Δf(x) / Δx = 3/1 = 3 이 됩니다.

그리고, 이는 (1,f(1))과 (2,f(2))를 잇는 직선의 기울기가 됩니다.

 

평균 변화율

위 그래프에서 x가 x에서 x+h로 변할 때의 평균 변화율은 저 보라색 직선입니다.

공식으로 이해하지 말고, 그냥 간단히 직관으로 이해합시다.

 

 

2-2. 순간 변화율이란?

 

순간 변화율이란, 평균 변화율에서 x의 변화량이 0에 수렴할 때의 값을 의미합니다.

lim(b-a -> 0) (f(b) - f(a)) / (b-a) = lim (Δx->0 Δf(x) / Δx = lim(Δx -> 0)  (Δ(x) + Δf(x)) / Δ(x) 

순간 변화율

위의 그래프를 보며 이해해봅시다.

위의 그래프에서 왼쪽의 파란 점을 x, 오른쪽의 파란 점을 x+Δx라고 해봅시다.

이 때, Δx의 값을 대략 한 10에서 0으로 쭉 쭉 줄여보면,

Δx (x의 변화량)의 값도 0으로 쭉쭉 줄어들게 됩니다.

 

그리고, Δx를 계속해서 줄이면 x가 x에서 Δx까지 변할 때의 평균 변화율도 계속해서 변화합니다.

그러다가, Δx를 0에 수렴하게 줄이게 되면 저 두 점이 거의 만나게 될 것입니다.

(실제로 만나는 것은 아닙니다!! 극한값으로 가는것 뿐입니당)

 

이때 나오는 순간 변화율의 값을 미분계수라고 합니다.

그리고, 이 미분계수를 찾는 과정을 바로 미분이라고 합니다.

 

그런데 저 그래프를 잘 봐주시기 바랍니다.

순간 변화율은 Δx가 0으로 수렴할 때의 평균 변화율이라고 했으므로,

Δx가 0으로 수렴할 때, 파란 직선은 그래프의 접선으로 바뀌게 됩니다!

 

 

3. Gradient Descent

이를 토대로 Gradient descent를 이해해 봅시다.

Gradient Descent

Gradient Descent에서 우리가 하고 싶었던 것은 무엇인가 하면, 어떤 함수 f(x)가 최소가 되는 x를 찾는 것이었습니다!

위의 경우에는 x축에 w, y축에 J(w)로 적혀 있으므로 이를 따라 J(w)가 최소가 되는 w의 값을 찾아봅시다.

 

만약 처음 w값이 위의 그래프처럼 오른쪽 위쯤에 있다고 해봅시다.

그러면 그 W값을 미분하면, 위처럼 양수의 미분계수가 나오게 됩니다.

그런데 잘 생각해 봅시다.

미분계수가 양수라면, 즉 접선의 기울기가 왼쪽 아래와 오른쪽 위를 향하고 있다면 어떤 부분의 함숫값이 더 작을까요?

접선이 왼쪽 아래와 오른쪽 위를 향하고 있으므로, 당연히 아래를 향하는 왼쪽 부분의 함숫값이 더 작을 것입니다.

그리고 Gradient Descent의 목표는 J(w)가 최소가 되는 w의 값을 찾는 것이므로,

w를 함숫값이 더 작은 왼쪽 부분으로 넘겨 주어야 합니다.

즉, w값을 줄여야 한다는 것이죠.

즉, 어떤 함수에서 w값에 대한 미분계수가 양수라면, w의 값을 줄여주어야 합니다!

 

 

그렇다면 반대로 처음 w값이 왼쪽에 있었다면 어땠을까요?

그럼 x=w에서의 미분계수는 음수가 되었을 것입니다.

그리고 이 때는 접선의 기울기가 왼쪽 위와 오른쪽 아래를 향하고 있으므로,

함숫값은 왼쪽보다 오른쪽이 더 낮을 것입니다.

그리고 우리의 목적은 함숫값 J(w)를 최소로 하는 w의 값을 찾는 것이므로,

w를 함숫값이 더 작은 오른쪽 부분으로 넘겨 주어야 합니다.

즉, w의 값을 더 늘려야 하는 것이죠.

즉, 어떤 함수에서 w값에 대한 미분계수가 음수라면, w의 값을 늘려주어야 합니다!

 

그리고! 위에서 정리한 두개의 사실들을 하나로 합치자면,

"w의 값을 미분계수의 부호의 반대쪽으로 옮겨야 한다"입니다!

즉, 미분계수가 양수라면 w 줄여야하고, 미분계수가 음수라면 w를 늘려야한다는 것이죠!

 

Gradient Descent의 Formal definition

그러니, Gradient Descent에서 나오는 공식인

W := W - α * ∂/W cost(W)에서 α를 뺀 부분만큼은 이해가 되셨을 것 같습니다. (∂/W cost(W)는 cost(W)를 W에 대해 미분한다는 뜻입니다.)

양수를 빼면 줄어들고, 음수를 빼면 늘어나기 때문에, 저 미분계수에다가 α를 곱한 값을 w에서 빼주면 된다는 것입니다!

그런데, 왜 α를 곱해줘야 할까요?

 

α를 곱하는 이유

미분계수에다가 α를 곱하지 않으면 w의 값을 한 번에 너무 멀리 보내버리게 되기 때문입니다.

그러면 위의 그림에서 왼쪽의 그래프마냥, J(w)값이 줄어들기는 커녕 늘어나는 방향으로 w가 바뀔 수도 있습니다.

그리고 마냥 미분계수만큼만 빼버리면 웬만하면 저런 식으로 w값이 날라가게 되므로,

α값을 곱해주어 너무 멀리 가는 것을 방지해 주는 것입니다.

(그러니까 일반적으로 α는 1보다는 작고 0보다는 큰 값이겠지요. 참고로, α는 learning rate라고 불립니다.)

 

이러한 이유에서, Gradient Descent를 반복하면, 즉!

W := W - α * ∂/W * cost(W)를 반복하면, 결국 w의 값이 J(w)가 최소가 되는 값으로 수렴하게 된다는 것을 알 수 있습니다!

 

 

이렇게 미분의 기본적 개념과 함께 Gradient Descent가 무엇인지 알아보았습니다.

혹시 이해가 덜 되었거나 더 알고싶은 점이 있다면 댓글로 물어보세요!!

+ Recent posts