- 해당 포스트는 cs231n 강의를 참고로 요약한 내용입니다.
Topic: Backpropagation & Neural Network
Notes
-
Backpropagation
-
Computation Graph : 함수가 어떤 연산을 거쳐 최종 값에 도달하는지 나타낸 그래프.
-
chain rule을 사용, 초기에 설정된 변수들이 최종 값에 얼마나 많은 영향을 미치는지 조사하기 위해 사용.
-
local gradient + gradients
-
sigmoid gate
-
sigmoid는 자주 사용되는 activation 함수로, 여러 computation을 미분하지 않고 한 번에 처리할 수 있도록 해준다.
-
Patterns in backward flow
-
add, max, mul이 computation에서 사용될 때, 패턴이 나타나기 때문에 계산을 효율적으로 진행할 수 있다.
- add : 이전 gradient가 그대로 전해진다(distribute)
- max : 이전 gradient가 한 쪽으로만 전해진다(routing)
- mul : 해당 변수의 반대편 변수 값(switch)을 전해진 gradient에 곱한다.
-
-
Gradients for vectorized code
- 인풋이 vector로 오게 되었을 때는, Jacobian matrix를 사용.
-
Jacobian matrix : 다변수 벡터 함수의 도함수 행렬
-
- 인풋이 vector로 오게 되었을 때는, Jacobian matrix를 사용.
-
Neural Networks
-
Neural Network는 기본적으로 함수들이 결합된 형태.
-
기존의 linear function들 사이에 h라는 hidden layer가 추가되어있다.
- hidden layer : non-linearity function, 여기선 max(0, W_1*x) 까지가 hidden layer.
-
구조
- 2, 3layer NN에서는 위와 같은 모양을 갖고 있고, 모든 인풋이 모든 행렬 연산을 빠짐없이 수행하는 fully connected 형식을 취하고 있다.
-
SUMMARY:
- Backpropagation의 작동 원리 : 넘겨진 gradient, local gradient를 사용해 초기의 input이 output에 미치는 영향력을 알 수 있다.
- chain rule을 사용해 계산하며, vector를 사용할 때는 jacobian matrix를 사용한다.
- NN은 기존의 linear score function들 사이에 activation function을 통한 hidden layer를 설치해 뇌의 신경망에서 시냅스와 spark가 작동하는 것처럼 구현해놓은 결과물.**