Math & Linear Algebra/Concepts

Basic Derivative - 미분 기초

metamong 2022. 4. 18.

1. intuition

[1] derivative

- 변수 x를 아주아주 조금 움직였을 때 f(x)의 기울기 (다 똑같은 말) -

 

→ 즉, x를 움직였을 때 f값이 얼마나 변하는 지 - 'x가 움직인 값 대비 변한 f값 정도'를 '기울기'라고 한다

→ 여기서, x가 매우매우 조금만 움직였을 때(즉, x의 변화량이 극한값으로 0으로 향할 때: lim(Δx→ 0))의 y변화량을 '미분값'이라 한다

 

- x에서의 'derivative of function' -

 

+ 즉 여기서 h가 0을 향해 간다면? 해당 기울기는 '미분값'!

 

[2] partial derivative - 편미분

 한 쪽 변수만 제외하고 나머지는 변하지 않는다 가정한 상태에서, 제외한 한 쪽 변수의 변화량

(이 때 변화량은 lim(Δx→ 0)과 같이 해당 변수가 극한의 형태로 거의 0에 다다랐을 때의 Δy/Δx)

 

→ 파라미터가 2개 이상인 error 함수에서 1개의 parameter에의 영향을 알아보고 싶을 때 나머지 1개의 변수인 parameter는 미분을 하지 않고 상수 취급을 하고 관심있는 parameter만 미분하여 변수의 영향 정도를 파악할 때 쓰는 게 '편미분'!

- 실생활에서 많이 쓰이며 꼭! 알아야 하는 개념

 

- y가 아니라 x에 대해서만 미분하고 싶을 때 -

[3] chain rule

 함수의 함수를 미분

 ★ chain rule은 딥러닝 핵심 개념 중 하나인 backward propagation을 이해하는 데 중요! 중요 개념 꼭 숙지 ★

 

𝐹(𝑥)=𝑓(𝑔(𝑥)) 👉 𝐹(𝑥) 𝑓((𝑔(𝑥))𝑔(𝑥)

2. 활용

 주어진 data X를 넣었을 때 model이 예측하는 값 & 실제값 간의 차이를 계산! 그리고 해당 차이(residual)를 최소화하는 모델 선택!

→ 이 때 residual을 최소화하는 모델을 구하기 위해 오차함수가 최소가 되는 a,b 회귀계수를 찾는게 machine learning의 목표

→ 미분을 통해서 해당 오차함수의 도함수가 0이 되는 부분을 찾아서 0이 될 때의 회귀계수를 찾는다.

 

- 추후 포스팅으로 미분 들어간 여러 사례 UPDATE - 🤲

3. 대표적인 미분 공식

★ scipy의 derivative method 활용! ★

https://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.derivative.html

 

scipy.misc.derivative(func, x0, dx=1.0, n=1, args=(), order=3)

 

👉 Find the nth derivative of a function at a point x0.': x0 점에서의 n번째 fucn함수의 미분 결과를 return한다

👉 'Given a function, use a central difference formula with spacing dx to compute the nth derivative at x0.'

 

1) 𝑓(𝑥) = 상수 → 𝑓′(𝑥) = 0

 

2) 𝑓(𝑥) = 𝑎𝑥^𝑛 → 𝑓′(𝑥) = 𝑎𝑛𝑥^(𝑛−1)

 

3) 𝑓(𝑥)=𝑒^𝑥  𝑓′(𝑥)=𝑒^𝑥 (지수함수는 도함수와 결과가 똑같다!)

 

4) 𝑓(𝑥)=𝑙𝑛𝑥 → 𝑓′(𝑥)=1/𝑥

- 자연로그의 미분으로 후에 배울 로지스틱 회귀 함수나 신경망의 활성 함수인 sigmoid 미분할 때 상당히 편하게 미분할 수 있게 도와줌

- 즉 ln인 자연로그를 씌우면 미분 결과 원래값에 역수만 취하면 되므로 매우 편리한 미분연산! 꼭 기억하기

 

- 예시 -

 

Q) f(x) = 3x^2에서 x=1일 때의 미분값은?

 

from scipy.misc import derivative

def f(x):
    return 3*x*x

print(derivative(f,2))
#12.0

 

Q) f(x) = e^(x^2)에서 x=3일 때의 미분값은?

 

→ 지수 e) numpy를 import해서 np.e로 써도 가능

 

from scipy.misc import derivative
from math import e

def f(x):
    return e*x*x

print(derivative(f,3))
#16.30969097075427

** 썸네일 출처) https://www.khanacademy.org/math/multivariable-calculus/multivariable-derivatives/partial-derivative-and-gradient-articles/a/introduction-to-partial-derivatives

** 그림 출처) https://slideplayer.com/slide/5381942/ 

댓글