개요
딥러닝에 중요하게 사용되는 연쇄 법칙 (Chain Rule)의 개념에 대해 알아본다.
연쇄 법칙의 개념
합성 함수
연쇄 법칙에 대해서 본격적으로 알아보기 전에, 합성 함수부터 알아보자.
\[z = g(y) = g(f(x)) = (g \circ f)(x) \\ where\;y = f(x)\]어떤 함수 g(y)의 입력으로 또다른 함수 f(x)를 사용한다면, g(f(x))라고 표시할 수 있을 것이다. 이런 함수를 합성함수라고 한다.
미분 기호
앞서 우리는 미분의 개념에 대해서 알아보았다. 그에 이어서, 미분을 기호로 표시하는 방법은 아래와 같다.
\[y' = f'(x) = \frac{d}{dx}f(x) = \frac{dy}{dx}\]위 표현은 x에 대한 y의 변화량을 의미한다.
합성함수를 미분하는 방법은?
그렇다면… 합성함수의 미분은 어떻게 할까?
\[z' = g'(f(x)) =\;???\]관찰하기
천천히 생각해 보자.
\[z' = g'(y) = \frac{dz}{dy}\]우선 y에 대한 z의 변화량이 dz/dy임은 쉽게 이해할 수 있다. 그런데 헷갈리는 점은 y도 하나의 함수라서 y = f(x)라는 점이다. 우리가 최종적으로 원하는 것은 중간 함수값인 y에 대한 z의 변화량이 아니라, 첫 입력인 x에 대한 z의 변화량이다.
우선 x에 대한 y의 변화량을 한번 나타내 보자.
\[\frac{dy}{dx}\]이건 전혀 어렵지 않다! y = f(x)이기 때문에, 결국 x에 대한 함수 f의 변화량으로 손쉽게 이해할 수 있겠다.
이제 둘을 한번 곱해보자!
\[\frac{dz}{dy}\frac{dy}{dx} = \frac{dz}{dx}\]dy를 제거할 수 있기 때문에, 우리가 원하던 식인 첫 입력 x에 대한 z의 변화량을 나타낼 수 있게 되었다!
이 과정에서 알 수 있는 것은, 각 입력에 대한 함수의 변화량을 차례대로 곱해나가면, 합성함수의 미분값을 구할 수 있다는 사실이다. 이를 연쇄 법칙이라고 한다.
적용 및 의의
\[k = h(z),\; z = g(y),\; y = f(x) \\ k = h(g(f(x))) \\ k' = ???\]합성함수가 한단계 더 겹쳐졌다. 이 역시 함수의 변화량을 곱해나가서, 첫 입력에 대한 최종 출력의 변화율을 구할 수 있다.
\[k' = \frac{dk}{dx} = \frac{dk}{dz} \frac{dz}{dy} \frac{dy}{dx}\]이러한 방법으로, 여러번 중첩된 합성함수라도 첫 입력이 변화했을 때 최종 출력이 어떻게 변화할 지 그 변화율을 구해낼 수 있다.