Search
Duplicate

해석학/ 미분 연산

미분은 함수의 입력 값의 변화에 대한 출력 값의 변화의 민감도를 측정하는 방법으로 그 결과는 일반적으로 기울기로 이해된다.

미분 기호

함수 ff에 대한 미분 기호는 다음과 같다.
분자에는 미분할 대상, 분모에는 그 대상 안의 실제 미분할 매개변수라고 이해하면 쉽다.
f=ddx(f)=ddxf=dfdx=ddx(y)=ddxy=dydxf' = {d \over dx}(f) = {d \over dx} f = {df \over dx} = {d \over dx}(y) = {d \over dx}y = {dy \over dx}
미분을 2번 하는 경우 다음과 같이 표시한다.
이것을 일반화 시키면 nn번에 대해 표기 가능.
f=d2dx2(f)=d2dx2f=d2fdx2=d2dx2(y)=d2dx2y=d2ydx2f'' = {d^2 \over dx^2}(f) = {d^2 \over dx^2} f = {d^2 f \over dx^2} = {d^2 \over dx^2}(y) = {d^2 \over dx^2}y = {d^2 y \over dx^2}
일반적으로 미분을 나타내는 식 dfdx{df \over dx}에서 dxdxxx로 함수 ff를 미분한다는 표기일 뿐이지만, 경우에 따라 dxdxxx에 대한 미소변화량을 나타내는 변수로 생각해도 타당하다. 이것은 다음이 성립한다는 뜻이다.
이 경우 함수 f(x)f(x)xx에 대한 미소변화량 dxdx로 나눈다는 의미가 된다. 이는 점 xx에서의 미분이 해당 점에서의 기울기를 의미한다는 점에서 타당하다.
df(x)dx=g(x)df(x)=g(x)dx{df(x) \over dx} = g(x) \Rightarrow df(x) = g(x)dx
이것은 적분에 대해서도 비슷한 개념으로 적용할 수 있다. 다시 말해 아래의 적분은 구간 [,][-\infty, \infty]에 걸쳐 함수 f(x)f(x)xx의 미소변화량 dxdx를 곱한 것을 모두 합한다는 의미로 생각할 수 있다.
이는 애초에 적분이 구간에 걸쳐 미소한 양으로 쪼갠 뒤 그것을 모두 합한다는 의미에서 볼 때 타당하다.
f(x)dx\int_{-\infty}^{\infty} f(x) dx

상수 미분

상수를 미분하면 0이 된다.
ddx(c)=0{d \over dx}(c) = 0

거듭제곱 미분

이는 역수나 제곱근에서도 동일하게 적용할 수 있다.
ddx(xn)=nxn1ddx1x2=ddxx2=2x3=2x3ddxx=ddxx12=12x12\begin{aligned} {d \over dx} (x^n) &= n x^{n-1} \\ {d \over dx} {1 \over x^2} &= {d \over dx} x^{-2} = -2x^{-3} = -{2 \over x^3} \\ {d \over dx} \sqrt{x} &= {d \over dx} x^{1 \over 2} = {1 \over 2}x^{-{1 \over 2}} \end{aligned}

지수 미분

ddxax=axlogea=axlna (a>0)ddxex=exlogee=ex\begin{aligned} {d \over dx} a^x &= a^x \log_e a = a^x \ln a \ (a > 0) \\ {d \over dx} e^x &= e^x \log_e e = e^x \end{aligned}

로그 미분

ddx(logax)=1xlogea=1xlnaddx(logex)=1xlogee=1x\begin{aligned} {d \over dx}(\log_a x) &= {1 \over x \log_e a} = {1 \over x \ln a} \\ {d \over dx} (\log_e x) &= {1 \over x \log_e e} = {1 \over x} \end{aligned}

삼각함수 미분

ddx(sinx)=cosxddx(cosx)=sinxddx(tanx)=sec2xddx(cotx)=csc2xddx(secx)=secxtanxddx(cscx)=cscxcotx\begin{aligned} {d \over dx} (\sin x) &= \cos x \\ {d \over dx} (\cos x) &= -\sin x \\ {d \over dx} (\tan x) &= \sec^2 x \\ {d \over dx} (\cot x) &= -\csc^2 x \\ {d \over dx} (\sec x) &= \sec x \cdot \tan x \\ {d \over dx} (\csc x) &= -\csc x \cdot \cot x \end{aligned}

미분함수 연산

두 함수 f,gf, g와 상수 cc에 대해 다음의 미분 연산이 성립한다.
ddx(cf+g)=cdfdx+dgdxddx(fg)=fdgdx+gdfdxddx(fg)=f(x)g(x)f(x)g(x)g(x)2\begin{aligned} & {d \over dx}(c f + g) = c {df \over dx} + {dg \over dx} \\ & {d \over dx}(f \cdot g) = f \cdot {dg \over dx} + g \cdot {df \over dx} \\ &{d \over dx} \left( { f\over g} \right) = {f'(x)g(x) - f(x)g'(x) \over g(x)^2}\end{aligned}

편미분(Partial Derivative)

2개의 매개변수를 받는 함수 f(x,y)f(x, y) 에 대해 편미분은 다음과 같이 표기한다.
fx(x,y)=fxfy(x,y)=fy\begin{aligned} f_x(x, y) &= {\partial f \over \partial x} \\ f_y(x, y) &= {\partial f \over \partial y} \end{aligned}
편미분을 2번 할 때는 편미분하는 순서에 따라 다음과 같이 표기한다.
함수 아래첨자는 왼쪽이 먼저하는 것이고, 미분 표기법에서는 오른쪽이 먼저 하는 것이다.
이것을 일반화 시키면 nn번 편미분하는 것에 대해 표기 가능
fxx(x,y)=2fx2fyy(x,y)=2fy2fxy(x,y)=2fyxfyx(x,y)=2fxy\begin{aligned} f_{xx}(x, y) &= {\partial^2 f \over \partial x^2} \\ f_{yy}(x, y) &= {\partial^2 f \over \partial y^2} \\ f_{xy}(x, y) &= {\partial^2 f \over \partial y \partial x} \\ f_{yx}(x, y) &= {\partial^2 f \over \partial x \partial y} \end{aligned}
참고로 편미분을 각각 다른 매개변수로 할 때, 그 순서와 관계 없이 결과가 같아지는데, —위의 예시에서 xx를 먼저하고 yy를 다음에 하는 것이나, yy를 먼저하고 xx를 다음에 하는 것이나 결과가 같다— 이를 슈와르츠 정리(Schwarz’s theorem)라고 한다.
편미분을 하면 다른 매개변수는 상수 취급이 되서 다 날아가기 때문에 어느 것을 먼저하든 상관 없다.

전미분(Total Derivative)

전미분은 각 매개변수의 미소변화량에 따라 함수가 어떻게 변하는지를 나타내는 개념으로, 다른 매개변수를 상수로 취급하는 편미분과 달리 각 매개변수에 대해 개별적으로 편미분을 하고 하나의 함수로 나타낸다. 예컨대 2개의 매개변수를 받는 함수 f(x,y)f(x, y) 에 대해 전미분은 다음과 같이 표기한다.
각각의 매개변수에 대해 미소 변화량이 곱해지는 것에 유의
df=fxdx+fydydf = {\partial f \over \partial x}dx + {\partial f \over \partial y}dy
함수 f(x,y)=x2+y2f(x, y) = x^2 + y^2에 대한 전미분은 다음과 같이 계산된다.
dx,dydx, dy가 각각 곱해지는 것에 주의
df=2xdx+2ydydf = 2xdx + 2ydy

연쇄 법칙(Chain Rule)

합성함수에 대해 미분할 때 Chain Rule이 적용된다.
f(x)=h(g(x))dfdx=dhdgdgdx\begin{aligned} f(x) &= h(g(x)) \\ {df \over dx} &= {dh \over dg} \cdot {dg \over dx} \end{aligned}
일반적으로 log 함수가 내부에 식을 갖고 있다면 내부의 식을 치환한 후 합성 함수로 풀어야 한다.
f(x)=ln(ax+b)f(x) = \ln (ax + b)를 미분할 때, g(x)=ax+bg(x) = ax + b로 치환하여 h(x)=lng(x)h(x) = \ln g(x)로 놓고 연쇄법칙으로 계산한다.
ddxln(ax+b)=ddgh(x)ddxg(x)=ddgln(ax+b)ddx(ax+b)=1ax+ba\begin{aligned} {d \over dx} \ln(ax+b) &= {d \over dg} h(x) \cdot {d \over dx}g(x) \\&= {d \over dg} \ln (ax+b) \cdot {d \over dx} (ax+b) \\&= {1 \over ax+b} \cdot a \end{aligned}
결론적으로 이런 형식이 된다.
ddxlnf(x)=1f(x)f(x)=f(x)f(x){d\over dx} \ln f(x) = {1\over f(x)} \cdot f'(x) = {f'(x) \over f(x)}
이건 지수 함수에 대해서도 마찬가지로 적용한다.
f(x)=eax+bf(x) = e^{ax + b}를 미분할 때, g(x)=ax+bg(x) = ax + b로 치환하여 h(x)=eg(x)h(x) = e^{g(x)}로 놓고 연쇄법칙으로 계산한다.
일반적으로 지수로 올리면 표기가 잘 안보이기 때문에 eax+b=exp(ax+b)e^{ax+b} = \exp(ax+b)로 표기한다.
ddxeax+b=ddgh(x)ddxg(x)=ddgexp(ax+b)ddx(ax+b)=exp(ax+b)a\begin{aligned} {d \over dx} e^{ax+b} &= {d \over dg} h(x) \cdot {d \over dx}g(x) \\&= {d \over dg} \exp (ax+b) \cdot {d \over dx} (ax+b) \\&= \exp(ax+b) \cdot a \end{aligned}
결론적으로 이런 형식이 된다.
ddxef(x)=ef(x)f(x){d\over dx}e^{f(x)} = e^{f(x)} \cdot f'(x)

다변수함수와 연쇄법칙

다변수함수의 미분을 구할 때도 함수가 연결되어 있으면 연쇄법칙이 적용된다. 예컨대 변수 xx를 입력으로 가지는 함수가 f1,f2,...,fnf_1, f_2, ... , f_n과 같이 nn개가 있고 각각의 출력을 y1,y2,...,yny_1, y_2, ... , y_n이라고 하자.
y1=f1(x)y2=f2(x)...yn=fn(x)\begin{aligned} y_1 &= f_1(x) \\ y_2 &= f_2(x) \\ ... \\ y_n &= f_n(x) \end{aligned}
그리고 이 y1,y2,...,yny_1, y_2, ... , y_n 값에 의존하는 다른 함수 gg가 있다고 하자. gg의 출력은 zz라고 한다.
z=g(y1,y2,...,yn)z = g(y_1, y_2, ... , y_n)
이때 변수 xx값의 변화에 따른 zz값의 변화는 다음처럼 계산한다.
dzdx=zy1dy1dx+zy2dy2dx+...+zyndyndx{dz \over dx} = {\partial z \over \partial y_1} {d y_1 \over dx} + {\partial z \over \partial y_2} {d y_2 \over dx} + ... + {\partial z \over \partial y_n} {d y_n \over dx}
이번에는 함수 f1,f2,...,fnf_1, f_2, ... , f_nx1,x2,...,xmx_1, x_2, ... , x_m을 입력으로 가지는 다변수함수라고 하자.
y1=f1(x1,x2,...,xm)y2=f2(x1,x2,...,xm)...yn=fn(x1,x2,...,xm)\begin{aligned} y_1 &= f_1(x_1, x_2, ... , x_m) \\ y_2 &= f_2(x_1, x_2, ... , x_m) \\ ... \\ y_n &= f_n(x_1, x_2, ... , x_m)\end{aligned}
이때의 변수 xx 값의 변화에 따른 xx값의 변화도 마찬가지로 계산할 수 있다.
dzdx1=zy1dy1dx1+zy2dy2dx1+...+zyndyndx1dzdx2=zy1dy1dx2+zy2dy2dx2+...+zyndyndx2...dzdxm=zy1dy1dxm+zy2dy2dxm+...+zyndyndxm\begin{aligned} {dz \over dx_1} &= {\partial z \over \partial y_1} {d y_1 \over dx_1} + {\partial z \over \partial y_2} {d y_2 \over dx_1} + ... + {\partial z \over \partial y_n} {d y_n \over dx_1} \\ {dz \over dx_2} &= {\partial z \over \partial y_1} {d y_1 \over dx_2} + {\partial z \over \partial y_2} {d y_2 \over dx_2} + ... + {\partial z \over \partial y_n} {d y_n \over dx_2} \\ ... \\ {dz \over dx_m} &= {\partial z \over \partial y_1} {d y_1 \over dx_m} + {\partial z \over \partial y_2} {d y_2 \over dx_m} + ... + {\partial z \over \partial y_n} {d y_n \over dx_m} \end{aligned}

벡터와 행렬의 미분

벡터와 행렬에 대한 미분에 대해서는 벡터와 행렬의 각 항목에 대해 편미분을 수행하고 그 결과를 다시 벡터나 행렬 형태로 표현하는 식으로 한다. 예컨대 다음과 같은 벡터와 행렬이 있다고 하면
v=[xy],A=[abcd]\bold{v} = \begin{bmatrix} x \\ y\end{bmatrix}, \bold{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}
f(v)=vAvf(\bold{v}) = \bold{v}^\top \bold{A} \bold{v}v\bold{v}에 대한 미분 ddvvAv{d \over d \bold{v}} \bold{v}^\top \bold{A} \bold{v}은 다음처럼 한다.
1.
우선 벡터와 행렬의 곱셈을 계산
vAv=[xy][abcd][xy]=ax2+(b+c)xy+dy2\bold{v}^\top \bold{Av} = \begin{bmatrix} x & y\end{bmatrix} \begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x \\ y\end{bmatrix}= ax^2 + (b+c)xy + dy^2
2.
구해진 식에 대해 v\bold{v}의 요소별로 편미분
fx=2ax+(b+c)yfy=(b+c)x+2dy\begin{aligned} {\partial f \over \partial x} &= 2ax + (b+c)y \\ {\partial f \over \partial y} &= (b+c)x + 2dy \end{aligned}
3.
각각의 결과를 벡터 형태로 표현
f(v)=[2ax+(b+c)y(b+c)x+2dy]=[2ab+cb+c2d][xy]=(A+A)v\nabla f(\bold{v}) = \begin{bmatrix} 2ax + (b+c)y \\ (b+c)x + 2dy \end{bmatrix} = \begin{bmatrix} 2a & b + c \\ b + c & 2d \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = (\bold{A} + \bold{A}^\top)\bold{v}
vAv\bold{v}^\top \bold{A} \bold{v}을 이차 형식(quadratic form)이라고 하며, 이차 형식의 미분 결과는 (A+A)v(\bold{A} + \bold{A}^\top) \bold{v}가 된다.
만일 A\bold{A}이 대칭행렬이었다면 —b=cb = c— 위 결과는 2Av2\bold{A} \bold{v}가 된다.
같은 방식으로 vAAv\bold{v}^\top \bold{A}^\top \bold{A} \bold{v}을 미분하면 다음과 같다.
여기서 AA\bold{A}^\top \bold{A}이 대칭행렬이 되기 때문에 이 둘을 하나로 합칠 수 있다.
(AA+AA)v=(AA+(AA))v=2AAv(\bold{A}^\top \bold{A} + \bold{AA}^\top) \bold{v} = (\bold{A}^\top \bold{A} + (\bold{A}^\top \bold{A})^\top) \bold{v} = 2\bold{A}^\top \bold{Av}
전치한 것 vA\bold{v}^\top \bold{A} 에 대한 미분은 곱해지는 변수의 전치된 결과가 나온다.
vA=[xy][abcd]=[ax+cybx+dy]fx=[ab],fy=[cd][acbd]=A\bold{v}^\top \bold{A} = \begin{bmatrix} x & y\end{bmatrix} \begin{bmatrix} a & b \\ c & d \end{bmatrix} = \begin{bmatrix} ax + cy & bx + dy \end{bmatrix} \\ {\partial f\over \partial x} = \begin{bmatrix} a \\ b \end{bmatrix}, {\partial f\over \partial y} = \begin{bmatrix} c \\ d \end{bmatrix} \Rightarrow \begin{bmatrix} a & c \\ b & d\end{bmatrix} = \bold{A}^\top
같은 식으로 vAb\bold{v}^\top \bold{Ab}를 미분하면 (Ab)=bA(\bold{Ab})^\top = \bold{b}^\top \bold{A}^\top이 된다.
vAb=[xy][abcd][ef]=[xy][ae+bfce+df]=(ae+bf)x+(ce+df)yfx=ae+bf,fy=ce+df[ae+bfce+df]=(Ab)=bA\bold{v}^\top \bold{Ab} = \begin{bmatrix} x & y\end{bmatrix} \begin{bmatrix} a & b \\ c & d \end{bmatrix}\begin{bmatrix} e \\ f\end{bmatrix} = \begin{bmatrix} x & y\end{bmatrix} \begin{bmatrix} ae + bf \\ ce + df \end{bmatrix} = (ae+bf)x + (ce+df)y \\ {\partial f \over \partial x} = ae + bf, {\partial f \over \partial y} = ce + df \Rightarrow \begin{bmatrix} ae + bf & ce + df \end{bmatrix} = (\bold{Ab})^\top = \bold{b}^\top \bold{A}^\top

sub-gradient, super-gradient

subgradient는 볼록 함수(convex)에서 미분 불가능한 점 —연속인데 뾰족하거나 연속이 아닌 점— 에 대한 미분값을 정의하는 개념으로 다음과 같이 정의된다.
아래는 실수에 대해 설명하지만 벡터에 대해서도 동일하게 확장 가능하다.
함수 f:RRf : \mathbb{R} \to \mathbb{R}의 모든 점 xRx \in \mathbb{R} 대해, 아래 부등식을 만족하면 gRg \in \mathbb{R}를 점 x0x_0에서 ff의 subgradient라고 한다.
f(x)f(x0)+g(xx0)f(x) \ge f(x_0) + g \cdot (x-x_0)
이 식을 gg에 대해 정리하면 익숙한 모양을 얻을 수 있다.
이러면 gg가 점 x0x_0의 미분값에 대해 하한(lower bound)함을 알 수 있다.
gf(x)f(x0)xx0g \le {f(x) - f(x_0) \over x-x_0}
이 부등식은 기본적으로 ggff의 그래프 아래에 있는 모든 점에 대해 x0x_0에서의 선형 근사보다 항상 낮거나 같다는 것을 의미한다. 이는 ggff의 그래프를 x0x_0에서 지지(support)한다는 개념이다.
미분이 가능한 점에 대해 subgradient는 일반적인 미분값과 동일하다.
예컨대 f(x)=x1f(x) = |x-1|의 함수는 x=1x = 1인 지점에서 미분이 불가능하다. 따라서 x=1x = 1인 지점을 기준으로 함수를 다음과 같이 두 부분으로 나눌 수 있다.
f(x)={1xx<1x1x>1f(x) = \begin{cases} 1 - x & x < 1 \\ x - 1 & x > 1 \end{cases}
두 부분에 대해 각각 미분값을 구하면 다음과 같다.
f(x)={1x<1+1x>1f(x)' = \begin{cases} -1 & x < 1 \\ +1 & x > 1 \end{cases}
이를 이용해서 다음과 같이 함수에 대해 subgradient를 정의할 수 있다.
x=1x = 1인 점에서는 x<1x < 1의 값과 x>1x > 1의 값 사이의 값을 구간으로 갖는다.
f(x)={{1}x<1[1,1]x=1{+1}x>1f(x)' = \begin{cases} \{ -1\} & x < 1 \\ [-1, 1] & x = 1 \\ \{+1\} & x > 1 \end{cases}
sub-gradient가 볼록 함수에서 하한인 점을 찾는 것에 반해, 이와 반대로 오목(concave) 함수에서는 상한인 점을 찾는 super-gradient가 존재한다. 상한이므로 subgradient와는 부등식 방향이 반대이다.
f(x)f(x0)+g(xx0)f(x) \le f(x_0) + g \cdot (x-x_0)
이 식을 gg에 대해 정리하면 익숙한 모양을 얻을 수 있다.
이 경우 gg가 점 x0x_0의 미분값에 대해 상한(upper bound)임을 알 수 있다.
gf(x)f(x0)xx0g \ge {f(x) - f(x_0) \over x-x_0}