본문 바로가기

Computer Science/Machine Learning5

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.
Using different instances of activation layers in a neural network 심심할 때 딥러닝 공부를 하고자 Deep Learning from Scratch 책을 보며 틈틈이 공부하고 있다. 이번에 multi-layer로 이루어진 신경망을 구현하여 학습을 시키고 overfitting을 관측하고자 했는데, 책에 있는 결과를 재현하지 못해 엄청 애먹었다. Overfitting을 일부러 일으키고자, 데이터의 개수를 300개로 줄이고 훈련을 시켰다. 그에 비해 신경망의 층수는 6층이니, overfitting이 일어나고, 그래프의 마지막 부분에서도 알 수 있듯이 실제로 overfitting이 일어났다. 그런데 이제 문제가 되는 부분은, 150~200 epoch 사이, 그리고 250~275 epoch 부근에서 정확도가 요동치는 부분이었다. 이게 왜 그런 걸까 싶어서 한참을 고민하다가, 일단.. 2020. 4. 18.