CV/cs231n

assignment 1 - SVM

알맹리 2021. 3. 26. 18:33

두번째 과제.. 3강에서 알려주는 SVM 입니도

 



1. Code

KNN과 다르게 svm.ipynb 파일과 assignment1/cs231n/classifiers 폴더에 있는 파일 2개를 수정해야 한다.

 

linear_svm.py 파일에서는 loss와 grad를 naive하게 구하는 것과 vectorized 버전으로 구하는 두가지 버전의 함수를 구현해야 한다

 

loss는 아래의 식으로 구한다. 

svm loss function

위의 식을 대입해서 loss를 구하면 

loss = max( 0, 5.1 - 3.2 + 1) + max( 0, -1.7 - 3.2 + 1) = 2.9 + 0 = 2.9

정답이 cat이기 때문에 car와 frog에 대한 값을 각각 계산하고 더해준다. 

dW는 loss function L을 W에 대해 미분한 값이다.

 

loss naive에서는 일단 score를 구하고 class길이 j만큼 루프를 돌면서 L식과 같이 margin(s_j - s_y + 1)을 구한다.

만약 j가 정답 클래스인 경우엔 패스하고 j가 다른 클래스인 경우에 margin이 0 이상이면 

   1. loss에 그 값을 더하고

   2. dW에 s_j를 더하고 s_y_i를 뺀다.

 

마지막으로 loss와 dW에 1/N을 하고 오버피팅 방지를 위해 L2 regularization을 W에 대해 미분한 값을 더해준다. 

 

loss vectorized에서는 위와 같은 걸 matrix에 적용한다고 생각하면 된다. ㅋㅋ

 

 

linear_classifier.py 파일에서는 train 함수와 predict 함수를 짜서 쓰면 된다!

 

 

svm.ipynb 파일 아래쪽에서 하이퍼파라미터 적용하는 부분 코드를 짜야 하는데 엄청 어렵진 않으니 걍 읽기..

 

2. Inline Question 

Q1. It is possible that once in a while a dimension in the gradcheck will not match exactly. What could such a discrepancy be caused by? Is it a reason for concern? What is a simple example in one dimension where a gradient check could fail? How would change the margin affect of the frequency of this happening? Hint: the SVM loss function is not strictly speaking differentiable

 

가끔 gradcheck의 차원이 정확히 일치하지 않을 수 있습니다. 그러한 불일치의 원인은 무엇입니까? 걱정할 이유입니까?

gradcheck이 실패 할 수있는 1 차원의 간단한 예시? 이런 일이 발생하는 빈도의 여백 영향을 어떻게 변경합니까?

힌트 : SVM 손실 함수는 엄밀히 말하면 미분 할 수 없습니다.

 

A. discrepancy는 loss function이 어떠한 점에서 미분이 불가능할 때 일어난다. 예를 들어 ReLU 함수 f(x) = max(0, x) 에서 x=0일 때 미분이 불가능하다. 

 

이 식에서 수치적 기울기는 

이지만, 분석적 기울기는

이기 때문에 x=0 점 근처에서 값이 큰 차이가 난다. 


Q2. Describe what your visualized SVM weights look like, and offer a brief explanation for why they look they way that they do.

시각화 된 SVM 가중치가 어떻게 생겼는지 설명하고 왜 그렇게 보이는지에 대한 간략한 설명

 

A. 해당 객체가 평균적으로 보이는 모양. score는 샘플이랑 가중치의 내적이라서 정확한 label에서 더 높은 점수를 얻으려면 가중치랑 sample이 평행해야 한다. 

'CV > cs231n' 카테고리의 다른 글

assignment 1 - Softmax  (3) 2021.03.27
assignment 1 - KNN  (0) 2021.03.22