데이터를 처음부터 학습 시킬 필요가 없고, Caffe Model Zoo에서 가중치를 가져와 학습시킨다.
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
Activation Function
f 함수가 activation function
Sigmoid function
현재는 잘 사용되지 않는다.
0과 1 사이에 나타낸다.
문제:
1. 뉴런이 포화되서(0또는 1 가까이 나타냄 -> 기울기가 거의 0으로 나타냄) gradient를 없앰
2. 결과는 모두 0 이상
3. exp()가 성능의 저하를 가져온다.
tanh(x) : hyperbolic tangent
x가 매우 작거나 크면 여전히 gradient가 0이 됨
ReLU (Rectified Linear Unit)
문제:
1: x 이상의 값을 찾는다.
2: x가 0보다 작을 때 gradient값은 0이 된다.
3: x가 0일때 gradient를 구하지 못한다.
Leacky ReLU
여기서 Parametric Rectifier (PReLU)는 f(x) = max(ax, x)로 나타내어 a 값을 backprop를 이용해 학습한다.
Exponential Linear Units (ELU)
즉, 특별한 일이 없으면 ReLU 사용, 좀 더 실험이 필요하면 Leaky ReLU, Maxout, ELU, 그리고 tanh는 가급적이면 사용 X, sigmoid는 사용X
Weight Initialization
만약 모든 가중치가 0으로 초기화 되면 모든 뉴런들이 동일한 연산을 수행한다.
가장 좋은 방법
- Small random number
- W = 0.01 * np.random.randn(D, H)
- 결과적으로 모든 activation이 0으로 간다는 문제가 있다.
각 계산을 할때마다 Nomalization 하자는 말이 나옴. -> Batch Normalization
'AI > CS231n' 카테고리의 다른 글
[CS231n] Lecture 4. Introduction to Neural Networks (1) | 2024.07.12 |
---|---|
[CS231n] Lecture 3. Loss function, optimization (0) | 2024.07.10 |
[CS231n] Lecture 2. Image Classification (0) | 2024.07.09 |