본문 바로가기

Computer Science/Machine Learning4

Autodiff with Julia 예~~전에 짜둔 코드인데, 친구가 안 예쁘다고 해서 조금 코드를 손봤다. 손 보고 나니 전체적으로 깔끔해서 매우 마음에 들었다. Autodiff 에 대한 전반적인 내용은 이전 글 (https://calofmijuck.tistory.com/28) 을 참고하면 될 것이다. 바로 구현으로 들어가자! 객체 정의 우선 DiffObject struct 를 정의해야 한다. Julia 문법이지만 대충 무슨 말인지 이해는 되니 너무 신경쓰지는 않아도 괜찮을 듯 하다. struct DiffObject 2021. 3. 22.
Autodiff 직접 구현하기 원래 Julia 로 구현해둔 것이 있었는데, 친구가 코드가 안예쁘다고 해서 파이썬으로 다시 짰다. Julia 구현은 calofmijuck.tistory.com/30 참고! Disclaimer. 저는 torch, tf 등의 라이브러리에서 autodiff 를 어떻게 하는지 모릅니다. Autodiff Autodiff (Automatic Differentiation) 는 주어진 함수의 미분계수를 자동으로 계산하는 방법이다. 예를 들어, 함수 \(f(x) = x^2\) 에 입력 \(x = 2\) 를 주면 미분계수 \(f'(2) = 4\) 를 출력한다. 주로 ML 에서 역전파(backpropagation) 할 때 사용한다고 들었다. Forward 한 번 할 때 미분계수가 자동으로 계산돼서 좋을 것 같다. (잘 모른.. 2021. 3. 21.
Derivative of log determinant 이 포스트에서 증명하려는 등식은 Bishop의 PRML 책의 부록 C에서 발견한 다음 등식이다. \[\DeclareMathOperator{\tr}{tr}\newcommand{\inv}{^{-1}}\newcommand{\A}{\mathbf{A}} \frac{\partial}{\partial x} \log (\det \A) = \tr \left(\A \inv \frac{\partial \A}{\partial x}\right)\] 본문에서는 책에 주어진 명제 몇 가지를 이용하여 해당 등식을 증명하라고 했다. 저자의 의도대로 증명을 했으나, 증명에 약간 부족한 부분이 있다고 판단하여 추가로 증명을 했고, 결과를 정리하여 남긴다. 당연히, LaTeX 이다. 파일과 함께 이미지도 첨부한다. 2020. 8. 9.
Back-propagation on Affine Layers 딥러닝을 하다 보면 affine layer를 반드시(!) 만나게 된다. Vectorized input/output에 대해 back-propagation을 처음으로 적용하게 되는 대상이기도 하다. 이 글은 딥러닝이나 affine layer의 역할을 설명하려는 것이 아니고, affine layer에서 gradient 구하는 과정을 헷갈려한 나 자신을 돌아보기 위함이 주목적이다. 두 번째 목적은 복잡한 notation을 정리하며, affine layer에서 gradient를 구하는 모든 과정을 분명하게 밝히는 것에 있다.\(\newcommand{\X}{\mathbf{X}}\newcommand{\Y}{\mathbf{Y}}\newcommand{\W}{\mathbf{W}}\newcommand{\x}{\mathbf{.. 2020. 4. 20.