Backpropagation (역전파법)
local gradient를 구하기 위해서는 Forward Pass(FP) 방법을 이용한다. 목적은 각 input에 대한 gradient를 구하기 위함으로 output에 얼마나 영향을 미치는지 알아보기 위해서이다.
global gradient를 구하기 위해서는 Backward pass(backpropagation)을 이용한다. Chain rule을 이용하여 편미분 값을 구할 수 있다.

local gradient는 네트워크의 각 층에서 개별적인 뉴런의 기울기를 의미하며, global gradient는 네트워크의 전체 출력에 대한 기울기를 의미한다. 이는 결국 Loss function에서의 기울기를 통해 계산된다. 역전파는 전체 기울기를 계산하기 위해 각 층에서 local gradient를 차례대로 계산하면서 네트워크의 각 가중치를 업데이트한다.

그림으로 확인해보자면.
forward pass과정은,
input으로 x와 y를 입력받은 후에, f라는 함수를 적용하여 z의 값을 얻는다.
이때 ∂z/∂x와 ∂z/∂y를 구할 수 있으며 최종적으로 Loss 값을 구할 수 있다.
즉, 입력값을 받아서 Loss 값을 구하기까지 계산하는 과정이다. 이 Loss는 역전파 단계에서 기울기를 계산하는 데 사용된다.
backward pass(역전파법) 과정은,
Loss값을 z로 미분한 후에, 아까 구해놓은 ∂z/∂x, ∂z/∂y, chain rule을 이용하여 Loss값을 x, y로 미분한 값을 구한다.
즉, 역으로 미분해 가며 기울기 값들을 구해과는 과정이다.

sigmoid function이 σ(x)라고 할 때, 미분하면 (1-σ(x))σ(x) 형태가 나오게 된다.
sigmoid function을 이용하면 좀 더 간단하게 계산할 수 있다.

덧셈 게이트: local gradient의 값이 1이기 때문에 자신의 값을 그대로 전달해 준다.
곱셈 게이트: local gradient의 값이 곱하는 반대쪽의 값이 되기 때문에 서로의 local gradient가 switch 된다. (swticher)
class MultipleGate(object):
def forward(x,y):
z=x*y
self.x=x #local gradient를 미리 저장
self.y=y
return z
def backward(dz):
dx = self.y * dz #[dz/dx * dL/dz]
dy = self.x * dz #[dz/dy * dL/dz]
return [dx,dy]
#dz=∂L/∂z, dx=∂L/∂x, dy=∂L/∂y
최댓값 게이트: 큰 것의 local gradient는 1, 작은 것의 local gradient는 0이 되기 때문에 여러 개 중 하나만 취하게 된다.

하나의 노드 뒤에 두 개의 노드가 온다면, 역전파법을 수행할 때 두 개의 노드에서 오는 미분값을 더해줘야 한다.
예시 코드)

(dz=∂L/∂z, dx=∂L/∂x, dy=∂L/∂y)
Mini-batch SGD
Loop:
1. Sample a batch of data
2. Forward prop it through the graph, get loss
3. Backprop to calculate the gradients
4. Update the parameters using the gradient
Introduction to Neural Network
인공 신경망은 우리 인간의 신경망(뉴런) 구조에서 따온 것이다.
linear score function: f = Wx
2-layer Neural Network: f = W2 max(0, W1x)


Fully-connected layer는 모든 레이어들이 연결되어 있는 구조를 말한다.
🔍 CNN을 학습시키는 것은 아주 많은 데이터가 필요한가?
NO
이미 ImageNet으로 학습시켜 놓은 모델을 이용하여
1. 제일 마지막 부분의 classfier 부분만 나의 데이터셋으로 training 시킴 (데이터셋이 아주 적은 경우)
2. 나의 데이터셋으로 파인튜닝
'AI > Stanford Univ. cs231n' 카테고리의 다른 글
| 7강 Convolutional Neural Networks (0) | 2025.04.05 |
|---|---|
| 6강 Training Neural Networks 2 (0) | 2025.04.04 |
| 5강 Training Neural Networks 1 (1) | 2025.04.04 |
| 3강 Loss Functions and Optimization (0) | 2025.04.04 |
| 2강 Image classification (1) | 2025.04.04 |