input 이 마지막에 어느정도 영향을 끼치는가 ?
이를 알기 위해 Backward Pass 필요하다.
함수를 하나의 layer 이고 forward pass 할 때 local gradient 를 구할 수 있다. ( 메모리에 저장 )
global gradient 는 backward pass 할 때 구할 수 있다.
이런식으로 끝까지 가게 되면 Backward pass
z 가 여러개라면 더해주면 된다.
Backpropagation Example
Sigmoid function 을 이용한 간단한 방법
and gate : gradient distributor -> 전 gradient 를 그대로 전파 ( local gradient 가 1)
mul gate : local gradient 가 곱하는 반대쪽 값이 된다. ( switcher )
max gate : 큰 값만 곱하기 1 -> 여러가지중 하나 취함 ( gradient router )
실제 구현 코드 (수도코드 )
forward pass 를 할 때 메모리에 채워논뒤 backward pass 할 때 소진한다.
MulConstant
x : tensor ( 숫자의 배열 )
파란색 부분 : forward pass
빨간색 부분 : backward pass
input vector : 4096 * 1
ouput vector : 4096 * 1
Jacobian matrix 는 4096 * 4096 의 차원을 가져야 한다.
대각행렬을 가진다. ( 대각선 쪽이 1 or 0 ) -> sparse structure를 가진다.
minibatch 100 개씩 하기 때문에 409600 * 409600
Neural Network
activation 함수 : non linearity 제공
Hidden node 는 하나의 feature
Parameteric approach : Nueral Network , CNN 하나의 클래스에 여러개의 classifier 가 존재한다.
Non parameteric approach : nearset neighbor 하나의 클래스에 하나의 classifier 만 존재한다.
3 ,4 행 : 가중치 정의
6 ,7 행 : forward 정의
8, 9 행 : backward 정의
10, 11 행 : 파라미터 업데이트
activation function 으로 sigmoid 가 기본적으로 많이 쓰이는 이유 : x 가 아무리 작아져도 y >0, x 가 아무리 커져도 y < 1 이므로 특정 뉴런의 영향력을 0 과 1사이로 지정할 수 있기 때문이다.
Activation Function 의 종류
ReLU 를 많이 쓰인다.
input layer 은 weight 를 가지지 않는다.
모든 node 들이 연결되어있다. ( FC )
layer로 구성하는 이유 : 효율적으로 계산 가능하기 때문이다. 연산의 편의성 ( 하나의 단일 layer 은 단일연산으로 끝 )
layer 가 늘어날 수록 capacity 가 늘어난다. ( 분류 능력 상승 )
데이터에 overfitting 이 일어나지 않도록 neural network를 잘 구성하는 방법은 regularization strength 를 더 높여줘야 한다.
'딥러닝 공부' 카테고리의 다른 글
[cs231n 강의 정리] Lecture 7 : CNN (0) | 2021.06.20 |
---|---|
[cs231n 강의 정리] Lecture 6 : Training NN part 2 (0) | 2021.05.19 |
[cs231n 강의 정리] Lecture 5 : Training NN part 1 (0) | 2021.05.17 |
[cs231n 강의 정리] Lecture 3 : Loss functions and Optimization (1) | 2021.05.15 |
[cs231n 강의 정리] Lecture 2 : Image classification (0) | 2021.05.15 |