본문 바로가기

Deep Learning/cs231n Lecture

Lec 3-1. Loss Function: Multiclass SVM, Softmax, Full Loss

Loss Function: Measuring goodness of weight W

위와 같은 linear function으로 score를 계산하였을 때, 현재 weight matrix W가 ground truth label에 대해 어느 정도 정확도를 주는지에 대한 지표가 필요하다. 강의에서는 다소 비유적으로 현재의 weight matrix W가 주어진 training dataset에 대해 얼마나 happy한지를 측정한다고 했는데, 이러한 측정 지표가 되는 것이 loss function이다.

 

Loss function을 정의하는 방법은 여러 가지가 있을 수 있고, 본 강의에서 다룬 multiclass SVM, softmax의 2가지를 포스팅에서 정리하려고 한다. 모델, 구체적으로 보면 weight matrix W는 기본적으로 loss를 최소화하는 방향으로 학습을 하게 되므로, loss function에 대한 정의에 따라 모델이 어떻게 학습될지가 달라진다.

 

참고로 강의에서는 regularization의 개념도 일부 다루었는데, 여기서는 마지막에 full loss 수식을 정리하는 과정에서만 간략히 언급하고 넘어갈 것이다.

 

Multiclass SVM Loss: Direct Interpretation of Score

Training dataset 중 i번째 데이터를 x_i, y_i로 표기하기로 한다. x_i는 이미지를 열벡터로 나타낸 것, y_i는 이미지가 속하는 class label, 즉 ground truth이다. 이 때, 전체 training dataset에 대한 loss는 각 데이터 (x_i, y_i)의 loss의 평균이다.

이 수식은 사실 개별 이미지 데이터에 대한 loss function들을 전체 training dataset으로 확장시킨 것이므로, 실질적인 loss function의 정의는 L_i() 이다.

 

Multiclass SVM loss는 다음과 같이 정의된다.

Notation의 경우, s는 f(W, x)=Wx로 계산된 각 이미지에 대한 score function vector이다. j는 label class를 나타낸다.

 

수식을 살펴보자면, ground truth label을 제외한 나머지 label들과 ground truth label의 score 간의 차를 누적하는 식이다. 그러나, 만약 ground truth label의 score가 다른 label score에 대해 safety margin(여기서는 1)보다 큰 경우 loss를 0으로 계산한다. 이러한 형태의 loss 정의를 hinge loss라고 하고, 강의 자료에 보면 다음과 같은 그래프로 설명되어 있다.

cs231n lecture slide 3, p12

 

즉, ground truth score가 커짐에 따라 loss가 계속 줄어드는 것이 아니라, 어느 정도 safety margin 안에 들어온 후부터는 loss가 0이라고 정의하는 것이다. 참고로, 여기서 1이라는 숫자는 임의적인데, 값의 크기가 큰 상관이 없는 이유가 결국 score 간의 상대적인 비교만이 중요하고 절대적인 값에 대해서는 큰 관심이 없기 때문이다.

 

Softmax Loss: Interpretation as a Normalized Probability

Softmax loss에서는 s=f(W, x)=Wx로 계산된 score가 해당 label로 분류될 확률이라는 해석으로부터 출발한다. 이를 위해 약간의 수식적 조작을 해주게 되는데, score에 exponential을 씌우고 모든 label에 대해 합이 1이 되도록 크기를 normalize시키는 것이다. 그래서, 이미지 x_i가 주어졌을 때 k번째 label에 속할 확률은 아래와 같이 수식으로 표현된다.

이제 확률로부터 loss를 정의하는데, ground truth label에 해당하는 확률이 maximize 되어야 한다. 이를 loss 관점에서 다시 생각하면 loss는 minimize하는 방향으로 정의되어야 하므로, -log를 씌워주어 아래와 같은 수식이 된다.

 

Multiclass SVM vs Softmax

이미지 데이터 (x_i, y_i)에 대해 두 가지 loss function을 정리하면 다음과 같다.

이를 i에 대해서 sum하고 데이터셋의 수 N으로 나누어주면, training dataset 전체에 대한 loss로 확장할 수 있다.

 

Loss function은 weight parameter W가 training dataset을 얼마나 잘 표현하는가의 측정 기준이다. Multiclass SVM의 경우는 f(W, x)=Wx로 계산된 score가 단어 그대로의 의미였고, softmax의 경우 이를 normalized probability로 다시 변환하여 해석하였다.

 

차이점 중 하나는 multiclass SVM에서는 ground truth label의 score가 safety margin 안에 들어온 뒤부터는 loss가 0으로 고정되어 변하지 않지만, softmax는 ground truth label의 확률이 maximize되는 방향으로 계속해서 학습한다는 것이다. 

 

이에 대한 차이를 이해하는 것은 중요하지만, DL application에서 loss function의 선택에 따른 performance 차이는 크지 않다고 알려져 있다.

 

Full Loss

일반적으로 loss function은 위와 같이 두 개의 term으로 구성된다. 앞 쪽이 data loss term으로, 이전에 설명했던 multiclass SVM, softmax loss에 해당한다. Data loss가 줄어드는 방향은 곧 모델이 training data에 대해 좋은 성능을 내는 방향이다. 이 때의 문제점은 모델이 training data에 대해서 overfit될 수 있다는 것인데, 그러면 unseen data에 대해서는 성능이 낮아질 수 있다. 이러한 점을 보완하기 위한 것이 regularization term인데, 이 term이 줄어드는 방향은 모델 complexity에 penalty를 주어서 overfit을 낮추는 방향이다. 이 때, lambda는 hyperparameter로서, regularization의 정도를 결정한다.

 

Regularization term에는 L2, L1 등 여러 가지가 있는데, 여기서는 모델의 loss function은 data loss로만 구성되는 것이 아니라 overfit을 완화하기 위한 추가적인 term도 존재한다는 정도로 이해하고 넘어가기로 한다.