-
전미분 total derivative | 패스트캠퍼스 챌린지 15일차딥러닝 2022. 2. 7. 21:53
하나의 (벡터)함수에 대해서, 이 함수를 쪼개어 변수가 여러개의 경우를 가진다고 생각할 수 있다. 가령, 간단한 예시로 y=x^2 - sin(x)라는 함수를 보자. 이 경우, 각 항을 하나의 함수로 보아 u_1 = x^2, u_2 = sin(x)로 나눈 다음, u_1, u_2에 대한 함수 y = u1 - u2가 있다라고 생각할 수 있다. 이 경우 입력 x는 u_1이나 u_2 둘 중 하나를 거쳐 y가 된다. 즉, 이 함수에서 입력값이 취할 수 있는 경로는 여러개이며, 이런 경우를 강의에서는 multipath로 표현한다.
Multipath인 경우, 그 미분을 각 path에 대한 미분의 합으로 생각할 수 있다. 가령, 위의 예시의 경우 dy/du_1 = 1, dy/du_2 = -1이며[여기서 편미분 기호 대신에 d를 쓰기로 한다. 빨리 여기에 수식을 간단히 입력하는 방법을 찾아 봐야지...], du_1/d_x = 2x, du_2/d_x = cos(x)이다. 그렇다면 dy/dx는 u_1 -> y의 경로의 편미분의 곱(chain rule에 의해) 2에 u_2 -> y의 경로의 편미분의 곱 -sin을 더한 2x-sin(x)가 된다. 이 결과는 y=x^2 - sin(x)를 그냥 미분한 결과와 결과적으로 같음을 볼 수 있다.
이처럼 미분은 각 path의 편미분계수의 합이라 볼 수 있으며, 이러한 미분은 모든 변수에 대한 미분이므로 편미분에 대비하여 전미분total derivative라고 표현하는 듯 하다. 사실 위의 예시처럼 간단한 함수의 경우 굳이 이렇게 Path까지 생각하며 미분하지 않아도 무리가 없다. 하지만 노트 첫 장에도 나와 있는 tanh(x)의 미분 같은 경우, path를 거쳐 생각하면 계산이 더 직관적이 된다.
사실 지금까지의 연산에 전미분은 필요가 없다. 왜냐하면 입력 변수가 여러개, 즉 벡터일 때, 그리고 함수가 벡터 함수일 때의 미분을 Jacobian matrix를 통해 모두 진행했기 떄문이다. 실제로 노트 두 번째 장 Linear Regression 함수의 미분 결과에서 볼 수 있듯, 전미분 결과나 벡터 함수를 거친 결과나 같은 것을 볼 수 있다. 그럼에도 전미분이 필요한 가장 큰 이유는 바로 입력으로 텐서를 받는다는 점이다. 지금까지의 연산은 입력 변수가 각각 0차원, 1차원 텐서인 스칼라와 벡터로 제한되어 있었다. 그래서 종종 행렬이 변수나 함수가 될 경우 아직 정의하지 않았다고 적은 기억도 난다. 하지만 전미분개념을 도입하면 이러한 제약이 사라져 행렬, 더 나아가 3차원, 4차원, 그 이상의 텐서까지도 연산이 가능해 진다는 장점이 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXi
'딥러닝' 카테고리의 다른 글
딥러닝에서의 Extended Jacobian의 활용 (1) | 패스트캠퍼스 챌린지 17일차 (0) 2022.02.09 Extended Jacobians | 패스트캠퍼스 챌린지 16일차 (0) 2022.02.08 Linear and Logistic Regression with Minibatching | 패스트캠퍼스 챌린지 14일차 (0) 2022.02.06 Element-wise Operations | 패스트캠퍼스 챌린지 13일차 (0) 2022.02.05 벡터 함수 | 패스트캠퍼스 챌린지 12일차 (0) 2022.02.04