image를 분류하는 과정에서 여러가지 문제점이 발생할 수 있다.
1. Camera pose : 카메라의 위치에 따라서 image의 값들이 달라질 수 있다.
2. illumination : 조명에 의해 색이 바뀌는 문제가 발생할 수 있다.
3. Deformation : 원래 형상이 아닌 다른 형상으로 image가 생성될 수 있다.
4. Occlusion : 일부가 없어져 보일 수 있다.
5. Background clutter : 배경과 분류하고자 하는 image가 비슷하여 구분하기가 어려울 수 있다.
6. intraclass variation : 같은 종류의 image라도 색상, 모양 등이 다름에서 문제가 발생할 수 있다.
이번 파트에서는 우리가 작성한 score function 이 얼마나 데이터를 잘 평가하는가에 대한 loss function 을 정의하고 그 loss function의 값이 낮게 나오도록 최적화 하는 과정을 다룰 예정이다. ( Multiclass SVM loss, Softmax loss )
Multiclass SVM loss
$x_{i}$ 는 image $y_{i}$ 는 label 이 된다. score vector : s = $f(x_{i},W)$
$\mathbf{L_{i}} = \underset{j\ne y_{i}}{\Sigma}max(0, s_{j} - s_{y_{i}} + 1) $
여기서 j는 정답이 아닌 case에 대해 하나씩 반복하게 된다. $s_{j}$는 오답일 때의 score이고 $s_{y_{i}}$는 정답일 때의 score이고 +1은 svm의 margin을 나타낸다. 마지막으로 0과 비교하여 큰 값을 해당 class의 loss로 정의한다. margin보다 작은 score변화는 loss에 영향을 주지 않는다. 각 정답이 아닌 class마다 평가하면서 얼마나 정답을 못맞췄는지 계산하여 전체의 학습 데이터의 수 만큼 나누어 평균을 취한다.
$\mathbf{L} = {1 \over N}\Sigma^{N}_{i=1}\mathbf{L_{i}} $
CS231n에는 위와 같은 5가지 질문이 있습니다.
Q1. 만약 $y_{i}$ 까지 포함하여 계산하면 결과가 어떻게 나오는가?
A1. $y_{i}$를 넣는다고 하더라도 $\mathbf{L_{i}} = max(0, s_{y_{i}} - s_{y_{i}} + 1) $ 로 1씩 추가가 된다.
Q2. sum이 아니라 mean 을 사용하면 어떻게 되나 ?
A2. 이 부분은 자유롭게 결정하면 되는 부분이다. 큰 상관 X
Q3. loss 부분에 squared를 한다면?
A3. 특정 데이터에서는 squared로 한 값이 더 좋은 값이 나올 수도 있다.
Q4 : loss가 같는 최댓값과 최솟값은?
A4 : 정답에 가까울수록 loss는 0에 가까워지고, 정답과 멀어질수록 loss는 커진다.
Q5 : w가 아주작은 값을 가지고 있을 때, score ~=0가 되는데 이 경우 loss값은 어떻게 되는가?
A5 : loss 는 각각 class에 대해 1값을 가지게 된다. 하지만 $s_{y_{i}}$는 제외하기 때문에 $ 1 \over n-1 $이 되게 된다.
loss function 은 다음과 같이 정의할 수 있다.
def Loss_vec(x, y, w):
delta = 1.0 # margin
score = np.dot(w, x)
loss = np.maximum (0, score - score[y] + delta) # score = 오답 / score[y] = 정답인 경우의 loss
loss[y] = 0
loss_i = np.sum(loss)
return loss_i
loss function 을 구했을 때 loss 가 0이 되는 값을 가지게 할 수 있는 w가 유일한가? 그렇다라고 할 수 없다.
$s = Wx$, $s = 2Wx$ 두배 증가시킨다 하더라도 loss값은 모두 0이 되는 것을 알 수 있다.
이렇기 때문에 Weight Regularization 이 필요하다.
$ \mathbf{L} = {1 \over N}\Sigma^{N}_{i=1}\Sigma_{j\ne y_{i}}max (0, f(x_{i};W)_{j} - f(x_{i};W)_{y_{i}} + 1) + \lambda R(W) $
$\lambda$ : Regularization Strength ( Hyperparameter )
$x = [1, 1, 1, 1]$, $ w_{1} = [1, 0, 0, 0] $, $ w_{2} = [0.25, 0.25, 0.25, 0.25] $ 일때 $w^{T}_{i}x$가 모두 1로 나올 때 $w_{2}$ 의 가중치가 더 좋은 평가가 된다. 그러한 현상 때문에 L2 Regularization 이 출현하게 되었다.
'Deep Learning > CS231N' 카테고리의 다른 글
[CS231N] 활성화 함수(Activation Fucntion)의 종류 (0) | 2021.07.08 |
---|---|
[CS231N] Neural Network Back-propagation (0) | 2021.07.06 |
[CS231N] Loss function & Optimization (2) (0) | 2021.07.05 |
[CS231N] Image Classification pipeline (0) | 2021.07.04 |
[CS231N] INTROTUCTION (0) | 2021.06.29 |