본문 바로가기
Research/Machine Learning

미분의 체인 룰, 합성 함수 미분

by IMCOMKING 2015. 10. 11.

# 체인룰
체인 룰이라 불리는 법칙은
사실은 합성 함수 미분의 원리를 말하는 것이다.


즉 f(g(x))를 미분하면, f'(g(x)) * g'(x)이 되는데, 이것이 바로 체인룰이다. 그냥 겉미분*속미분 같은 공식으로는 설명이 불충분하고 비직관적이다.

보다 직관적으로 설명하자면, g(x)=u 라고 먼저 정의를 하고, f(u)를 u로 미분한다음, u를 다시 x로 미분하게되면 



f'(u) = df/du * du/dx = df/dx 


f'(u) = df/du = f'(u) * u'    (단,  u' = g'(x))


이 되고, 이는 마치 곱셈과 나눗셈으로 du 를 약분하듯이 계산된다. 이것이 체인룰이다.

(물론 df/dx가 
정확히 분수는 아니나, 아래의 합성 함수 미분의 증명을 보면 의미적으로는 충분히 약분이 가능한 형태임을 알 수 있다.)



# 신경망에서의 체인룰

뉴럴 넷을 예로 들면, 에러함수 E(t,y) = f(t,y)를 파라미터 w로 미분을 하게 되면서 체인 룰이 사용된다.

에러함수는 E(t,y) = f(t,y)에서 y는 주어진 데이터의 레이블이고, t는 뉴럴 넷 모델이 예측한 값이다. 즉 t=g(w,h)으로 모델함수 g가 내놓은 결과값이다.( t = g(W^tH) )

즉 이 에러 함수를 w로 미분하려면 사실 먼저 E(t,y) = f( g(w,h) , y ) 의 형태로 t=g(w,h)를 대입해서 w에 대한 합성함수 형태로 바꾼 다음, 이것을 w로 미분하는 것이다.



즉 df/dx = df/du * du/dx 이렇게 체인룰을 쓴다는 것은 사실은 함수 f를 미분하고자 하는 변수 w가 포함된 함수로 풀어서 쓴 다음 합성함수 미분을 하는 것이다.

이때 만약 우리가 미분하고자하는 변수 w가 f에 대한 합성함수 꼴로 풀어써지지 않으면 절대 미분을 할 수가 없다. (즉 함수 f의 input으로 w가 들어있지 않은 경우는 당연히 w로 미분을 할수가 없다는 이야기. 해봤자 f가 상수 취급되어 0이 나온다.)


한가지 첨언을 더하자면, f(t)를 x로 미분하기 위해서는, t가 x에 의한 어떤 함수의 결과로 연관되어 있어야만 하는 것이다. (만약 이 연관성이 없으면 당연히 체인룰을 적용할 수 없고, 이 말은 그냥 함수 f(t)는 x라는 변수에 영향을 받지 않는 상수라는 이야기가 된다.)


결론 : 뉴럴넷의 체인룰은 함수 f(t)에서, t를 파라미터 w가 포함된 합성함수 t=g(w)로 대입시킨다음, w로 그냥 미분한 것이다.(즉 걍 t를 g(w)로 바꾼다음 합성 함수 미분을 한것이다.)

그래서 이를 그냥 아주 심플하게 df/dw = df/dt * dt/dw 이런식으로 간단히 정리가 가능하고, 이것이 가능하려면 당연히 함수 f를 w에 대한 합성함수로 풀어서 쓸 수 있어야한다.

이말은 함수 f(t)를 w로 미분하려면, 함수에서의 t가 사실은 w에 의한 함수( t=g(w) )일 때만 가능하다.


그런데 일반적으로 뉴럴 넷의 모델이 내는 결과는 모든 파라미터들이 input으로 들어간 함수의 최종 결과이기 때문에 모든 파라미터에 대해 체인룰이 가능하다.


http://blog.naver.com/PostView.nhn?blogId=alwaysneoi&logNo=100171733834

https://en.wikipedia.org/wiki/Chain_rule


'Research > Machine Learning' 카테고리의 다른 글

Bagging, Boosting, Bootstrapping  (0) 2016.12.29
Maximum Likelihood Estimation의 의미  (0) 2016.09.02
여러 Classifier 간의 특성  (0) 2015.09.14
Bayesian Optimization, Active learning  (0) 2015.08.13
Conventional AI  (0) 2015.08.11

댓글