-
딥러닝에서의 Extended Jacobian의 활용 (1) | 패스트캠퍼스 챌린지 17일차딥러닝 2022. 2. 9. 21:58
해당 내용은 일반적 수학 원리가 아닌 강의자가 개인적으로 일반화한 내용임.
이번 강의에서는 extended Jacobian을 실질적으로 딥러닝에서 적용해 본다. 지난 강의와 마찬가지로 이 강의 내용은 일반적인 수학 내용은 아니며, 이러한 과정을 거치지 않고 전미분을 통해 텐서 입력에 대한 미분계수를 구할 수 있다. 다만 이 강의 방법을 통해 두 가지 이점을 취할 수 있는데, 첫 번째는 수학적으로 이해하기가 더 직관적이며 쉽다는 것이고, 두 번쨰는 실제로 구현할 떄 for 루프를 덜 써도 된다는 것이다. For loop가 줄어든다는 점은 그 만큼 복잡도가 낮아진다는 뜻이 되기 때문에 효율적 연산에 도움이 된다.
Extended Jacobian을 구하는 과정은 크게 두 단계로 이루어졌다. 첫 번째는 텐서에서 일반적인 경우를 뽑아 이에 대한 편미분을 구하는 것이고, 두 번째는 이 편미분을 일반화하여 텐서로 확장시키는 것이다. 다시말해 귀납적 추론을 통해, 즉 '1, 2, ..., i번째 요소의 편미분이 이러하니 전체 요소의 편미분은 이러할 것이다'라는 전제를 통해 계산하는 것이다. 이러한 방법이 타당한지는 논의의 여지가 있을 듯 하다. 다만 이러한 방법으로 손실함수의 행렬 입력에 대한 미분을 구한 결과는 매우 단순한 형태를 띄게 된다.
이 떄 눈에 띄는 점은 행렬의 크기이다. Y행렬이나 Y_hat 행렬, dY_hat 행렬 등이 크기가 다르지 않다. 따라서, 별다른 크기 조작 없이 numpy 연산으로 미분행렬 연산이 가능하다.
Softmax의 경우 세 개의 손실함수와는 다른 계산과정을 가진다. 이는 Softmax라는 함수의 편미분의 특징 때문인데, Softmax의 Jacobian을 구한 결과를 보면 i==j 여부에 따라 Jacobian의 결과가 바뀌는 것을 볼 수가 있다. 그렇기 떄문에 Softmax에서 dl^[i]_j는 이를 감안하여 연산이 된다. 이 때, loss function으로 CCEE가 사용됨을 참고하면 보기보다 쉽게 연산이 된다. 이를 확장하여 J의 L에 대한 extended Jacobian을 구할 수 있다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. https://bit.ly/37BpXi
'딥러닝' 카테고리의 다른 글
ML 기초 (1) | 패스트캠퍼스 챌린지 19일차 (0) 2022.02.11 딥러닝에서의 Extended Jacobian의 활용 (2) | 패스트캠퍼스 챌린지 18일차 (0) 2022.02.10 Extended Jacobians | 패스트캠퍼스 챌린지 16일차 (0) 2022.02.08 전미분 total derivative | 패스트캠퍼스 챌린지 15일차 (0) 2022.02.07 Linear and Logistic Regression with Minibatching | 패스트캠퍼스 챌린지 14일차 (0) 2022.02.06