[CS231n] lecture 2. Linear Classification: SVM, Softmax 강의 요약

포스팅을 시작하기에 앞서 수준 높은 강의와 강의 자료를 무료로 배포해주신 Stanford University CS231n 교수진께 감사의 말씀을 드립니다. 
온라인 강의: https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk 
강의 자료: https://cs231n.github.io

K-Nearest Neighbor의 단점

1.     모든 training data를 항상 저장해야 한다.

2.     Predict를 수행할 때 모든 데이터와 비교 연산을 해야 한다.

>     컴퓨터의 자원을 너무 비효율적으로 사용

이를 해결하기 위해 training 후 도출된 함수를 이용하여 즉각적으로 input에 따른 output을 반환하는 알고리즘을 설계하고자 하는 필요성이 생김.

Linear Classification

먼저 가장 간단한 함수 형태인 일차식 형태로 문제를 해결.

f(xi,W,b)=Wxi+b

CIFAR-10데이터에 따라 Wb의 차원을 추적해보고자 합니다.

먼저 결과값은 각 클래스에 대한 점수로 나타내는 것이 가장 직관적인 방법이겠죠? 이 중에서 가장 높은 점수를 가지는 객체가 결과값으로 반환이 될 것입니다. 즉 결과값은 10*1 벡터.

Xi는 하나의 이미지 데이터를 상징한다고 했을 때 32*32*3=3072*1 벡터입니다.

W*xi를 통해 10*1벡터를 만들어야 하므로 W10*3072 벡터입니다. b10*1 벡터

F: RD->Rk (D: 데이터의 모든 정보, k: 데이터 레이블의 가지 수)

W: k*D 행렬, xi: D*1 행렬, b: K*1 행렬 (W: weight vector, b: bias)



(Linear Classification의 잘못된 예시: 올바른 레이블인 cat이 가장 낮은 점수를 가진다.)

Linear Classificaiotn의 특징

1.     일차식의 특성으로 인해 데이터를 선으로 분류한다. 이로 인해 선으로 분류할 수 없는 데이터들을 분류하기에 부적절

Cf) 부분적 해결법: 이미지의 특징을 다르게 추출하면 선으로 분류가 불가능했던 이미지가 선으로 분류가 가능해지는 경우가 존재(올바른 데이터 특징 추출의 중요성)



2.     Weight vector의 각 행은 각 레이블의 template(or prototype)을 뜻한다. , 각 행의 데이터들은 Weight vector가 생각하기에 어떠한 사진(데이터)이 특정 label로 분류되기에 가장 높은 점수를 가지는 데이터인지를 나타내준다. 이를 시각화하면 training의 결과가 적합하게 이루어졌는지 혹은 부적절하게 이루어졌는지 대략 확인할 수 있다.

Bias trick

-      F = Wx + b이므로 일반적으로 생각하기에 연산의 순서는

1)    Weight vector와 데이터를 곱한다.

2)    1)의 결과와 bias vector를 더한다.

로 생각하기 쉽다. 하지만 데이터의 마지막 행에 1을 더하고 Weight 벡터의 마지막 열에 bias 벡터를 삽입함으로써 bias가 포함된 weight vector와 데이터의 곱으로 간단히 나타낼 수 있다.

è 장점) 실수를 줄일 수 있다. 코드의 양이 간결해진다 등



Loss function

Linear Classification결과 분류가 적절하게 이루어졌는지 혹은 부적절하게 이루어졌는지를 나타내는 수학적 도구로서 해당 chapter에서는 두가지 loss fuction에 대해 소개한다.

1)    SVM(Multiclass Support Vector Machine Loss)

2)    SoftMax

SVM



S = Wxi+b (S: Scores), Sj= xi의 j번째 label score, Syi: xi의 정답 label score 

SVM의 개념: 우리는 정답 label의 점수가 다른 label의 점수보다 Δ(델타)보다 크기를 원한다.

Ex) S = [13, -7, 11], Syi= 11, Δ(델타)=10이라 할 때,

Li= max(0, 13-11+10) + max(0, -7-11+10)=12

Vectorized SVM




Regularization

Loss fuction=0을 만족하는 최상의 결과는 하나로 정해지지 않는다. 즉 가능한 W벡터의 개수는 무수히 많을 수도 있다는 뜻이다.

Ex) max(0, 13-20+5)+max(0, 7-20+5)=max(0, k*(13-20)+5)+max(0, k*(7-20)+5)=0 (k>1)

하지만 당연하게도 모든 kW (k>1)에 대해 모두 같은 성능을 가질 것으로 기대되지 않는다. 이들 중 가장 적절한 W벡터를 찾기 위해 데이터와 무관한, W vector의 특징에 따르는regularization을 한다.

Regularization의 한 예시



해당 regularizationW벡터 중 더 적은, 분산된 W벡터를 선호한다.

Ex) W1= [1,0,0,0], W2=[0.25, 0.25, 0.25, 0.25], x=[1, 1, 1, 1]일 때 W1*x = W2*x

R(W1)=1, R(W2)= 4*(0.25^2)이므로 W2벡터가 선호된다.



SoftMax

이제까지 K-Nearest Neighbor, SVM을 거쳐오면서 우리는 predict의 결과로 하나의 레이블을 반환하는 것이 결국 확률이 가장 높은 label을 반환하는 것 같은 느낌을 받게 됩니다.


주의점)

각각의 데이터의 값이 지수로 표현되므로 중간 계산의 결과가 쉽게 컴퓨터가 표현할 수 있는 값 이상으로 증폭되는 경향성이 있습니다. 이를 막기 위해 수학적으로 다음과 같은 수식을 이용합니다.



이 때 logC는 어떠한 값도 가능하므로 xi의 데이터 중 가장 큰 값을 빼면 컴퓨터의 계산결과로 인한 버그를 막을 수 있습니다.




이 블로그의 인기 게시물

[CS231n] Features 과제(Assignment)

[minGPT]play_image 설명

[CS231n] lecture 4. backpropagation 강의 요약