티스토리 뷰

해당 글은 Stanford CS class  CS231n: Convolutional Neural Networks for Visual Recognition 강의를 기반으로 하고 있습니다.

(출처 :http://cs231n.stanford.edu/syllabus.html) Video 강의와 강의 note를 가지고 정리하고 있습니다.


Recall... Linear Classification

Linear classifier와 같은 분류 모델을 설정하고 나면 해야할 일 두가지가 있습니다.


1. Define a loss function

loss function은 classifier의 성능을 보여주는 척도입니다. loss function 값이 작을 수록, 즉 0에 가까울수록 classifier가 데이터 샘플을 잘 분류하는 것이죠.

2. Find the parameters that minimize the loss function.( =optimization )

때문에 loss function 값을 작게 만들도록 parameter를 조정해야합니다. Linear Classifier의 경우를 생각해보면,


  


loss function의 값을 최소로 만드는 W parameter 값을 찾을 때까지 parameter update를 진행하는 데, 이 과정을 optimization이라고 합니다. 





Loss Function


loss function을 수식으로 살펴보면 다음과 같습니다.



 가 인풋되는 i번째 이미지 데이터이고, 

 가 i번째 이미지 데이터의 정답 label(target) 일 때,



최종 Loss는 모든 데이터셋에 대해서 다음과 같이 정의됩니다.



모든 input dataset x에 대해 클래스 스코어가 계산되고(ex. Linear classifier의 경우 Wx) 이를 이미지의 label과 비교하여 계산하는 loss function값이 각 이미지마다 계산됩니다. 전체 Loss function 계산 결과를 평균낸 값이 해당 모델의 최종 Loss 값이 됩니다.




      Multiclass SVM loss

      각 인풋값마다 loss function 값을 구하고, 그 평균값을 최종 loss value로 놓는다고 하였습니다. 각 인풋값마다 적용하는 loss function의 종류 중 하나인 Multiclass SVM loss의 수식은 아래와 같습니다. 




 가 인풋되는 i번째 이미지 데이터이고, 

 가 i번째 이미지 데이터의 정답 label(target) 일 때,


  


 는 f( )가 linear classifier 함수로 가정한 상황에서, Wx의 결과인 class score vector를 의미합니다.


는 Xi 인풋의 정답 label이 아닌 클래스의 score vector 값이고, 는 xi 인풋의 정답 label인 클래스의 score vector값을 의미합니다. 즉, {(다른 클래스로 예측한 벡터 값)-(정답 클래스로 예측한 벡터 값)+1}을 0과 비교하여 더 큰 값을 loss로 취하는 방법이 Multiclass SVM loss의 알고리즘입니다. 



0을 선택하게 되는 경우와 s_j - s_yi + 1을 선택하는 경우를 비교해서 생각해보면 쉽게 이해할 수 있습니다. 



1. 가 0보다 크다는 것은 인풋 이미지를 다른 클래스로 예측한 값이 정답 클래스로 예측한 값보다 더 크다는 것을 의미합니다. 잘못 예측하고 있는 경우이죠! 


예를 들어 cat 이미지가 들어왔을 때, cat class score vector는 2.0이고, car class score vector는 5.0인 경우, 

 = 5.0 - 2.0 = 3.0 이군요.   이 식에 의해 후자가 max 값으로 선택되어 loss function 값은 4.0이 됩니다.(3.0 + 1 // 1이 더해지는 것에 대해서는 아래에서 설명하도록 하겠습니다. ) 잘못 예측할수록 loss 값은 커지고 그만큼 모델의 성능이 좋지 않음을 의미한다는 것을 알 수 있습니다. 



2. 가 0보다 작다는 것은 인풋 이미지를 다른 클래스로 예측한 값보다 정답 클래스로 맞게 예측한 값이 더 크다는 것을 의미합니다. 잘 예측하고 있는 경우군요!


예를 들어 cat 이미지가 들어왔을 때, cat class score vector는 5.0이고, car class score vector는 2.0인 경우, 

 = 2.0 - 5.0 = -3.0 입니다.   이 식에 의해 max 값으로 0이 선택되어 loss function의 값은 0 이 됩니다. 예측을 잘할 경우 loss 값이 0이 됨을 알 수 있습니다. 




 : 1을 더해주는 부분에 대해서 의아하지 않으셨나요? 여기서 1을 더해주는 것은 'safty margin'을 주기 위해서 입니다. 안정적인 분류를 위해서 다른 클래스로 예측한 값보다, 정답 클래스로 예측한 값이 최소 1만큼 차이가 나야 잘 예측했다고 판단하는 것입니다.  아래 그림에서는 'delta'가 safty margin값을 의미합니다. Multiclass SVM은 정답 클래스의 score가 다른 클래스의 score보다 최소 delta 만큼은 높게 나오기를 바라는 것! 이라고 정리할 수 있습니다. delta 이상 차이나는 경우는 loss 가 0으로 아예 쌓이지 않고, 정답 클래스와 오답 클래스의 score 차이가 delta 보다 작게 나는 경우는, 조금씩 loss 가 쌓이게 됩니다. 정답 클래스 score가 가장 높긴하나, 안정적으로 분류하지 않았다는 것이죠.







※ Multiclass SVM loss는 여러개의 class로 분류하는 문제에서 주로 사용되어, multiclass svm 이라 불린다.

※ 하나의 input마다 전체 클래스 갯수 (N-1)회 만큼  계산

※ min loss = 0 , max loss = ∞




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함