티스토리 뷰

Computational graph : 각 연산을 node로 나타내서 복잡한 연산의 모든 절차를 그래프로 표현하는 방법. -> analytic

AlexNet : Convolutional Network

chain rule : df/dy = df/dq * dq/dy로 바꿔서 계산할 수 있는 것.

앞 node의 local gradient를 현재 node의 gradient를 계산할 때 이용한다.

즉, 현재 node의 gradient는 앞 node의 연산을 미분한 식에 현재 node의 값을 넣어 계산한 값 * 앞 node의 gradient 값이다.

앞 node의 연산이 +면 앞 node의 gradient를 그대로 현재 node의 gradient 값으로 전달해준다.

물론, node들을 group 지어서 하나의 gate로 만들 수도 있다. (*-1 -> exp -> +1 -> 1/x는 sigmoid gate로 묶는다.)

ADD gate : gradient distributor (앞 node의 gradient를 그대로 전해주니까=upstream의 gradient를 똑같이 여러 개에 전달해준다.)

Q. What is max gate?

A. add 되는 두 개의 node 중 더 큰 값을 가진 node에게 원래 add gate의 gradient를 전달하고, 더 작은 값을 가진 node에게는 0을 전달한다.

MAX gate : gradient router (Max의 인자가 여러개라면 Max pooling이라고 보면 된다.)

Q. What is a mul gate?

A. Gradient를 서로 바꿔준다.

MUL gate : gradient switcher (어감상 exchanger가 더 맞음.)

X = 3, Y = 4 이고 X노드 Y노드를 multiple 할 때 X에는 4 * upstream gradient가 되고, Y에는 3 * upstream gradient가 돼서 switcher라고 한다.

Gradient는 branch에서 더해진다! (SUM UP)

여기까지 x, y (input) 는 Scalar 일 때의 gradient를 살펴보았음.

이젠 X, y 가 vector인 경우를 살펴보도록 하겠다.

local gradient : Jacobian matrix (derivative of each element of upstream vector each element of 'now' vector)

Q. 만약 4096 dimension의 input vector가 f(x) = max(0, x) gate를 통과하여 4096 dimention의 output vector가 되었을 때 jacobian matrix의 사이즈는?

A. 4096 * 4096

Q. 위 상황과 그대로 size 100의 minibatch를 사용하면 Jacobian matrix의 사이즈는?

A. 409600 * 409600

Q. 첫 번째 질문 상황일 때 Jacobian matrix는 어떻게 생겼는가?

A. diagonal.

vector matrix에 대한 mul 연산 gradient :

matrix를 펼쳐서 각 원소에 어떤 상대 matrix의 원소가 곱해지는지 확인 후 각각 곱해주어야 한다.

 

Neural Networks

Linear score function : f=Wx

2-layer Neural Network : f=W2 max(0,W1x)

h1 = f(np.dot(W1, x) + b1)

out = np.dot(W2, h1) + b2

이런 식으로 계산된다.

Layer는 효율적인 vectorized code를 이용할 수 있는 특성을 가진다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함