코딩공부

backpropagation, intuition - 2 (요약) 본문

ML , DL (2019)/cs231n

backpropagation, intuition - 2 (요약)

초보코더 2019. 9. 1. 22:14
반응형

Intuitive understanding of backpropagation

backpropagation의 직관적인 이해에대해 설명하는 부분이다. Chain rule은 gate가 gate의 모든 input들에 대해 구해진 gradient를 곱해야 한다고 이야기하고있고, 이러한 모든 input에 대한 곱셈이 상대적으로 쓸모없는 gate를 전체 neural network같은 복잡한 circuit의 톱니바퀴로 바꿔준다고 이 글에서 이야기하고 있다. 

Backpropagation은 gate들이 최종 결과값을 크게 만들기 위해 자신의 output을 얼마나 증가시키거나 줄이고싶은지에 대해 각각의 gates가 서로 대화하는것과 같다고 생각될 수 있다. -> Backpropagation의 직관적인 이해

 

Backpropagation의 Intuitive understanding을 위해서는 마지막줄이 핵심이라고 생각한다.

Modularity: Sigmoid example

Sigmoid function을 backpropagation하는 방법에 대해 이야기한다. 특이한점은 sigmoid function의 결과값을 sigma라고 했을때 다음과 같이 gradient를 표기할 수 있다는 것이다.

이 식을 이용하여 Sigmoid function에 대한 backpropagtion은 쉽게 계산된다. 

 

실제로 이러한 방식으로 forward pass를 backprop하기 쉬운 단계로 나누는것은 매우 도움이 된다.

 

forward function의 어느 부분들이 간단한 local gradient를 가지고 있는지를 알면, 우리는 최소한의 코드와 노력으로 값들을 chain시킬수 있다. 즉, sigmoid function의 예제처럼 모든 gates에 대해 loca gradient를 구하는것이 아니라 어느 위치에서의 local gradient값을 미리 알 수 잇으면 그 뒷부분은 직접 계산할 필요가 없으니 코드상으로 간단해질 수 있다는 의미이다.

 

Backprop in practice: Staged computation

주어진 식 f
forwrad pass
backward pass

이번 section의 내용은 첫 사진의 주어진 식 f에 대해 backpropagation을 하는 것이다. 강의노트상에는 코드로 표현해 두었길래 circuit으로 표현해보았다. 가독성은 좋지는 않은것같다...

 

sigmoid부분의 backprop은 section에서 보았던것처럼 (1-sig)*sig를 이용하였다. forward pass와 forward pass에서 구한 값들을 backwrad pass에서 사용하는 방법에 대해 이야기한다.

 

Patterns in backward flow

Backwardpropagation에서 주로 쓰이는 3가지 gates, add, max, multiply gate들에 대해 이야기한다. add gate의 경우 local gradient가 1, max gate는 최댓값에 1, 나머지에 0, multiply gate는 직관적으로 이해하기 조금 어려운데, multiply gate의 local gradient는 input value들이다. input value가 2개일 경우 서로의 값을 local gradient로 가진다. 그럼 2개가 아닌 여러개의 경우는 어떤 input value를 각각이 local gradient로 가질까? -> 생각해보니 전부 나눠서 2개씩으로 나누면된다. 

 

Gradients for vectorized operations

실제 계산들은 vectorized 되어있기 때문에 vectorized operation에 대한 gradient를 구하는 방법에 대하여 이야기한다.

X와 W의 곱 연산에의해 D를 얻는 forward pass에 대해, D에대한 gradient를 dD라고 하면

dW = dD.dot(X.T), dW = W.T.dot(dD) 이다. T는 전치를 의미한다. 

 

Summary

* 이번장에서 gradient의 의미, circuit에서 backward flow가 어떻게 진행되는지, 어떻게 서로 communication하는지에 대한 직관을 키웠다. 이후에 더 복잡한 표현식이 있더라도 미분가능한 stage들로 잘 나누어주면 backpropagation하기가 쉬워진다.

반응형

'ML , DL (2019) > cs231n' 카테고리의 다른 글

cs231n assignment1 - features  (1) 2020.01.14
cs231n assignment1 - two-layer neural net  (0) 2020.01.10
Backpropagation, Intuitions  (0) 2019.08.22
assignment1 - softmax  (0) 2019.08.20
cs231n assignment1 - SVM  (0) 2019.08.17