[CS231n] lecture 2. Linear Classification: SVM, Softmax 강의 요약
K-Nearest Neighbor의 단점
1.
모든 training data를 항상 저장해야
한다.
2.
Predict를 수행할 때 모든 데이터와 비교
연산을 해야 한다.
>
컴퓨터의 자원을 너무 비효율적으로 사용
이를 해결하기 위해 training 후 도출된 함수를 이용하여 즉각적으로
input에 따른 output을 반환하는 알고리즘을 설계하고자
하는 필요성이 생김.
Linear Classification
먼저 가장 간단한 함수 형태인 일차식 형태로 문제를 해결.
f(xi,W,b)=Wxi+b
CIFAR-10데이터에
따라 W와 b의 차원을 추적해보고자 합니다.
먼저 결과값은 각 클래스에 대한 점수로 나타내는
것이 가장 직관적인 방법이겠죠? 이 중에서 가장 높은 점수를 가지는 객체가 결과값으로 반환이 될 것입니다. 즉 결과값은 10*1 벡터.
Xi는
하나의 이미지 데이터를 상징한다고 했을 때 32*32*3=3072*1 벡터입니다.
W*xi를
통해 10*1벡터를 만들어야 하므로 W는 10*3072 벡터입니다. b는 10*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의 한 예시
해당 regularization은 W벡터 중
더 적은, 분산된 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의
데이터 중 가장 큰 값을 빼면 컴퓨터의 계산결과로 인한 버그를 막을 수 있습니다.