1. 합성 함수
먼저 f(x) = ax^n을 어떻게 미분하는지 알아보겠습니다.
$$\begin{aligned}f\left( x\right) =ax^{n}\rightarrow f'\left( x\right) =\left( a'\right) x^{n}+a\left( x^{n}\right)' \\ =0\times x^{n}+a\times nx^{n-1}=a\cdot nx^{n-1}\end{aligned}$$
위와 같이 a를 미분하고 x^n을 미분한 후 더해주면 됩니다.
만약 f(x) = x^2y가 있다고 했을때 이를 미분해보겠습니다.
$$f'\left( x\right) =2x\cdot y+x^{2}\cdot 0=2xy$$
위 처럼 2xy가 됩니다.
합성 함수는 f(x)라는 함수를 다시한번 g(f(x))로 감싸준 형태를 띄고 있습니다.
만약 f(x) = 2x라면 g(f(x)) = g(2x)라는 함수가 됩니다.
즉, 합성함수란 여러 함수로 구성된 함수입니다.
2. 체인룰
체인룰이란 합성함수를 미분하기 위해 사용한 방식입니다.
합성함수를 미분하기 위해서는 '합성함수를 구성하는 각 함수의 미분의 곱'으로
나타내는 체인룰을 이용합니다.
만약 f(x) = e^2x란 함수가 있을 때 이를 미분하겠습니다.
e^2x는 합성함수입니다.
먼저 2x를 t로 치환해줍니다.
$$\begin{aligned}\dfrac{df\left( x\right) }{d}=\dfrac{df\left( x\right) }{dt}=\dfrac{dt}{dx}=\dfrac{d\left( e^{t}\right) }{dt}\cdot \dfrac{dt}{dx}\ =e^{t}\cdot 2=2e^{t}\end{aligned}$$
위 처럼 미분해 줄 수 있습니다.
여기서 t는 2x이므로 결국 2e^2x가 됩니다.
e^t를 미분하는 것을 겉미분이라 하고
다음 2x를 미분하는 것을 속미분이라 합니다..
a^x미분의 성질을 알아보겠습니다.
y =a^x일때
y = xlna = a^x * lna입니다.
f(x) = 3^x일때 미분을 해보겠습니다.
$$\begin{aligned}f\left( x\right) =3^{x}\rightarrow \ln f\left( x\right) =x\ln 3\ \rightarrow lnf\left( x\right) =aln3\rightarrow \left( \ln f\left( x\right) \right) ^{'}=\left( x\ln 3\right)^{'} \ \rightarrow f'\left( x\right) =3x\cdot \ln 3\end{aligned}$$
위 처럼 3x * ln^3이 됩니다. 즉 a^x미분의 성질에서 a의 3을 대입한 값이 나옵니다.
식에서 lnf(x) = xln3이 되는 이유는
lny일때 y를 t로 치환해 lny의 미분을 보면 알 수 있습니다.
$$\left( \ln y\right) ^{'}=\dfrac{d\left( lnt\right) }{dt}\cdot \dfrac{dt}{dx}=\dfrac{1}{t}\cdot \dfrac{dy}{dx}=\dfrac{1}{y}\cdot \dfrac{dy}{dx}$$
lny의 미분은 위 식과 같게 됩니다.
위 식을 토대로 e^3x^2을 미분하겠습니다.
3x^2을 t로 치환하면 다음과 같은 식으로 미분할 수 있습니다.
$$\left( e^{3x^{2}}\right) =\left( e^{t}\right) '=e^{t}\cdot 6x=6xe^{3x^{2}}$$
이를 풀어 설명하면 먼저 e^t에 대한 미분을 해줍니다.
e^t의 미분은 미분 성질에 따라 자기 자신이 그대로 나오므로 e^t입니다.
이는 겉미분입니다.
다음 속미분인 3x^2을 미분합니다.
3x^2은 2* 3x이므로 6x가 됩니다.
따라서 e^t * 6x = 6xe^t이고 t는 3x^2을 치환한 것이니 6xe^3x^2이 됩니다.
위를 식으로 풀어서 표현하면 다음과 같습니다.
$$\dfrac{dy}{dx}=\dfrac{d\left( e^{t}\right) }{dt}\cdot \dfrac{dt}{dx}=e^{t}\cdot 6x$$
이 식으로 y = e^-x를 미분하겠습니다.
-x제곱은 합성함수라고 생각하시면 됩니다.
먼저 -x를 t로 치환합니다.
$$\dfrac{dy}{dx}=\dfrac{d\left( e^{t}\right) }{dt}\cdot \dfrac{dt}{dx}=e^{t}-1=-e^{t}=-e^{-x}$$
d(e^t) / dt는 d(e^t)를 t로 미분하겠다는 뜻입니다. dt/dx는 dt를 x로 미분하겠다는 뜻입니다.
e^t는 자기자신이 그대로 나오고 -x는 1 * -1x^0 = -1입니다.
x^0은 1이고 -1 * 1 * 1은 -1입니다.
3. 수치미분
수치미분은 미분하려는 함수 f(x)정의입니다.
극한 개념을 구현하기 위해 델타 x는 작은 값으로 설정합니다.
분자와 분모 구현, 수치해석 오차를 줄이기 위해 일반적으로 분자 분모를 다음과 같이 변형합니다.
$$\dfrac{f\left( x+\Delta x\right) -f\left( x-\Delta x\right) }{2\Delta x}$$
위 식에서 델타 x는 대부분 10의 -5승입니다.
이는 지수 표현식으로 1e-5로 표현할 수 있습니다.
f(x) = x^2이고 f'(3.0)인 수치미분을 파이썬으로 구현하겠습니다.
import numpy as np
def numerical_derivative(f,x):
delta = 1e-5
diff_x = (f(x+delta)-f(x-delta))/(2*delta)
return diff_x
def func1(x):
return x**2
result = numerical_derivative(func1,3.0)
print(result)
다음 코드는 f(x) = 3xe^x이고 미분계수가 f'(2.0)입니다.
import numpy as np
def numerical_derivative(f,x):
delta = 1e-5
diff_x = (f(x+delta)-f(x-delta))/(2*delta)
return diff_x
def func2(x):
return 3*x*(np.exp(x))
result = numerical_derivative(func2,2.0)
print(result)
다음 포스트에선 다변수 함수의 수치미분과 선형 회귀를 알아보겠습니다.
'머신러닝' 카테고리의 다른 글
[파이썬] 분류 알고리즘( 로지스틱 회귀, 시그모이드) (0) | 2023.05.24 |
---|---|
[파이썬] 다변수 함수의 수치미분, 선형 회귀와 경사하강법 (0) | 2023.05.22 |
[파이썬] boston 집 값 예측 ( 결정트리 회귀, 랜덤 포레스트 회귀 ) (0) | 2023.05.16 |
[인공지능 수학] 미분 공식과 편미분 (0) | 2023.05.11 |
[인공지능 수학] 미분의 정의 (0) | 2023.05.10 |