복잡한 함수의 Analytic gradient을 쉽게 계산하기 위해서 computation graph을 그린다.
함수를 computational graph를 표현하면 input값과 local gradient값을 쉽게 파악 할 수 있다.
이때 Chain rule을 사용하여 backpropagation 구할 수 있다.
Backpropagation은 Local gradient을 상위 노드 방향으로 전달하여 가중치를 업데이트 시키는 방법이다. 각 Local gradient을 구한 뒤 Chain rule을 사용하게 된다면 상위 노드의 gradient을 쉽게 구할 수 있다.
Add gate : gradient distributor – gradient을 나눠준다. Ex) x + y
Max gate : gradient router – gradient들 중 최대값만 남긴다.
Mul gate : gradient switcher – 다른 branch값으로 scaling을 한다. Ex) xy
Gradients도 여러 변수들이 포함된 vector dataset에서 사용해 볼 수 있다.(Jacobian matrix)
gradient나 Jacobian이나 모두 함수에 대한 일차 미분(first derivative)을 나타낸다.
다만, 기존 그레디언트는 다변수 스칼라 함수(scalar-valued function of multiple variables)에 대한 일차 1미분이다. 반면, Jacobian(야코비언)은 다변수 벡터 함수(vector-valued function of multiple variables)에 대한 일차미분이다.
summation 기호를 이용한 풀이와 수식 이해는 나게 다소 어려운 감이 있어서 직접 풀어보았다.
기존에는 선형 레이어를 하나만 쌓아서 빨간 자동차만을 찾았다면 위 사진은 기존 선형 레이어에 비선형 레이어를 추가하여 빨간 자동차, 노란 자동차를 찾을 수 있는 모델을 구축하였다.
레이어를 쌓아가면서 여러 특징을 추출 할 수 있다는 것을 확인할 수 있다.
Neural networks는 뉴런의 구조와 Computation graph의 구조의 유사성을 따온 구조이다. (실제 구조와 똑같이 생각하는 것은 오산이다.)