Deep Learning/CS231N

[CS231N] Loss function & Optimization (1)

언킴 2021. 7. 5. 14:03
반응형

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 이 출현하게 되었다.