머신러닝, 딥러닝에 필요한 기초 수학 4장 - 변화율과 도함수
학습모델의 에러가 2차 함수 형태일 경우, 도함수를 통해 최솟값을 구하는 과정에 적용할 수 있다.
에러를 줄인다.
에 미분을 배우는 목적이 있다.
1. 변화율과 도함수의 개념
(1) 변화율
변화율 : 입력x의 변화를 Δx라 하면 그에 따른 출력의 변화를 Δy라 한다
이 때, 출력의 변화를 입력의 변화로 나눈 것을 ΔxΔy로 표현하고 이를 '평균변화율'이라 한다.
예를 들어,
ΔxΔy=0.01f(x+0.01)−f(x)
라는 함수가 있을 때,x를 0.01만큼 늘렸을때 y가 얼마나 변화느냐를 표현한 것.
그러나, 평균 변화율은 정확한 정보를 주지 못하므로, Δx의 변화를 0.01, 아니 0.00001, 아니 아예 0에 무한히 가까운 변화가 일어날 경우의 변화율은 얼마인지를 알아야 할 것이다.
이를 "순간 변화율", "미분계수"이라 한다. x→0limf(x)=L로 표현한다.
위에서 봤던 식 ΔxΔy=0.01f(x+0.01)−f(x)$의 0.01을 변수 h로 치환할 경우 이렇게 표현할 수 있다.
x→0limhf(x+h)−f(x)
h가 0으로 다가갈 때 수렴하는 값이 순간변화율, 미분계수이다.
(물론 위 식이 미분가능하여야 한다(0에서 극한값을 가져야 함). 그러나 이 책에서는 대부분의 머신러닝에서 사용하는 함수는 미분가능한 형태라 가정하고 미분가능을 별도로 증명하지 않는다)
(2) 도함수
함수로 표현되는 순간변화율을 "도함수" 라 한다.
함수 f(x)의 정의역 x의 원소에 대한 순간변화율을 대응시키는 함수인데, 이를 도함수(derivative)라 하고, f′(x)로 표기한다.
f′(x)=dxdy=x→0limhf(x+h)−f(x)
이러한 도함수의 정의에 극한을 적용하는 절차를 통해 도함수를 구하는 행위를 '미분(differentiation)'이라 한다.
또한 기하학적으로 보면, 도함수는 함수의 한 점(a)에서의 접선의 기울기와도 같다.
접선의기울기=x→alimx−af(x)−f(a)
2. 기본함수 미분법
책에서는 개별 함수 미분법에 대한 공식의 증명을 포함하고 있으나, 이 글에서는 공식만 열거하도록 한다.
앵간하면 다 외운다. 직접 증명할 수 있으면 더 좋다(고 한다)
(1) 일변수 스칼라 함수
1) 상수함수
dxdc=0
상수는 입력의 변화에 따른 출력 변화가 없으므로, 미분계수가 0임
2) 다항함수의 도함수
다항함수 유형 | 함수 | 도함수 |
---|
기본 | y=xn | y′=dxdxn=nxn−1 |
제곱근 | y=x | y′=dxdx=2x1 |
지수함수 | y=ex | y′=dxdex=ex |
지수함수(밑a) | y=ax | y′=dxdax=axloga |
지수함수2 | y=e2x | y′=dxde2x=2e2x |
로그함수 | y=logx | y′=dxdlogx=x1 |
로그함수(밑a) | y=logax | y′=dxdlogax=xloga1 |
(2) 다변수 함수
1) 덧셈
"앞함수미분 + 뒷함수미분"
dxd(f(x)+g(x))=dxdf(x)+dxdg(x)
2) 곱셈
"앞함수미분 x 뒷함수 + 앞함수 x 뒷함수미분"
dxd(f(x)g(x))=(dxdf(x))g(x)+f(x)(dxdg(x))
3) 나눗셈
"(앞함수미분 x 뒷함수 - 앞함수 x 뒷함수미분) / 뒷함수 제곱"
dxd(g(x)f(x))=g2(x)(dxdf(x))g(x)−f(x)(dxdg(x))
(3) 합성함수
합성함수 미분법은 '체인룰(연쇄법칙)'을 이용하여 미분한다.
예를 들어, ax2+bx+c 꼴의 함수가 있으면
이를 z=y라는 함수와 y=ax2+bx+c라는 함수의 합성함수로 보고 미분한다.
z=f(y)=y 이고, y=g(x)=x2+3x 일때,
합성함수 f∘g(x)=x2+3x 의 순간변화율은 아래와 같이 계산한다.
ΔxΔz=ΔyΔz∗ΔxΔy
이고, 이 때 순간변화율을 계산하기 위해 극한을 취하면
x→0limΔxΔz=y→0limΔyΔz∗x→0limΔxΔy
이고, 도함수의 정의이므로, 이를 미분공식으로 표현하면
dxdz=dydz∗dxdy
이다.
1) 합성함수들 미분법
- 지수함수의 도함수
y=e3x+1
3x+1와 e^z가 합성됨 함수로 놓고 계산한다.
y′=dxde3x+1=e3x+1∗dxd(3x+1)=3e3x+1
- 로그함수 * 지수함수의 도함수
y=logx∗e3x+1
y′=dxdlogx∗e3x+1
=xe3x+1+logx∗3e3x+1