Branch Log · Open in interactive viewer →

9 Support Vector Machine(2)

다음 세 가지 데이터 분포를 살펴보자.

Example Linearly Separable?
data example 1 Yes
data example 2 Yes(considering error)
data example 3 No

세 번째 예시는 linear 경계로 나눌 수 없다. 이럴 때는 non-linear 경계가 필요하며, 이를 위해서는 먼저 데이터를 고차원으로 매핑해야 한다.


9.1 Non-Linear SVM

다음은 1차원 점을 2차원으로 매핑한 예시다.

non-linear trick 1
Φ:𝐱(𝐱,𝐱2)
non-linear trick 2

이렇게 찾은 경계를 다시 원래 1차원으로 보내면 곡선 형태가 된다.

매핑 함수는 직접 다양하게 정의할 수 있다.

mapping examples

이때 얼마나 고차원으로 매핑해야 하는가에 대한 답은 수학적으로 증명되어 있다.

여기서 n1 은 worst case에 해당한다.


9.1.1 Non-Linear SVM: Formulation

앞서 Non-Linear SVM을 수식으로 표현해 보자.

이렇게 고차원으로 확장한 데이터를 대상으로 Linear SVM 수식을 적용한다.

\argmaxa1,,ani=1nai12i=1nj=1naiajyiyjΦ(𝐱i),Φ(𝐱j) subject toi=1naiyi=00aiC

수식에 대한 해는 다음과 같다.

w=i=1naiyiΦ(𝐱i) b=ykw·Φ(𝐱k)=yki=1naiyiΦ(𝐱i),Φ(𝐱k)

9.1.2 Example

다음 예시에 대해 Non-Linear SVM을 적용해 보자.

위 데이터를 고차원으로 매핑하면 다음과 같다.

Φ(D)=(111111111122448848813191271339112141824213294278612181) \argmaxa1,,a5i=15ai12i=15j=15aiajyiyj(Φ(𝐱i)·Φ(𝐱j)) subject toi=15aiyi=00aiC

문제는 argmax 수식에서 내적에 해당하는 Φ(𝐱i)·Φ(𝐱j) 계산이다. 차원이 커질수록 내적에 필요한 계산량이 급격히 증가한다.

예를 들어 1만 개 데이터셋 쌍에 대해 1만 차원으로 확장한다고 가정하면, 10000 * 10000 쌍에 대한 내적으로 1조 번의 곱셈 연산이 필요하다.


9.2 Kernel Trick

Non-Linear SVM의 목표는 엄밀하게는, (mapping 자체가 아닌) mapping 후의 내적 값이다. 다음 예시를 보자.

둘을 내적하면 다음과 같다.

Φ(𝐱1)·Φ(𝐱2)=1+3x11x21+3x12x22+3x112x212+3x122x222+x113x213+x123x223+6x11x12x21x22+3x11x122x21x222+3x112x12x212x22 =((x11x21+x12x22)+1)3 =(𝐱1·𝐱2+1)3

변환 후의 내적 값을 보면, 변환 식은 보이지 않고 원래의 벡터 데이터만 남는다. 즉, 고차원으로 보내는 수식만 잘 정의하면, 내적 값을 바로 구할 수 있다. 이를 Kernel Trick 이라고 한다.

이미 잘 알려진 커널 함수가 많이 존재한다.


9.2.1 Definition of Kernel

고차원으로 확장한 두 feature vector의 내적에 대응하는 함수 Kkernel이라고 한다.

kernel

kernel 개념은 사용한 대표적인 기법은 SVM이 있으며, 이러한 기법들을 kernel machine이라고 부른다.


9.2.2 Final Formulation of SVM

다음이 kernel trick을 적용한 SVM 수식이다.

\argmaxa1,,ani=1nai12i=1nj=1naiajyiyjK(𝐱i,𝐱j) subject toi=1naiyi=00aiC

해는 다음과 같다.

w=i=1naiyiΦ(𝐱i) b=yki=1naiyiK(𝐱i,𝐱k)

(Prediction) unknown x를 다음과 같이 예측할 수 있다. ( y(𝐱)0 일 때 +1, 그렇지 않으면 -1 )

y(𝐱)=i=1naiyiK(𝐱i,𝐱)+b

9.2.3 Some More on Kernels

대표적인 kernel 5개를 살펴보자. (Linear, Gaussian이 가장 많이 사용된다.)

Kernel Formula
Linear Kernel K(𝐱i,𝐱j)=𝐱i·𝐱j
Homogeneous Polynomial Kernel K(𝐱i,𝐱j)=(𝐱i·𝐱j+c)d
Polynomial Kernel K(𝐱i,𝐱j)=(𝐱i·𝐱j)d
Gaussian (RBF) Kernel K(𝐱i,𝐱j)=exp(𝐱i𝐱j22σ2)
Sigmoid Kernel K(𝐱i,𝐱j)=tanh(α𝐱i·𝐱j+c)

σ : 직접 정의

조금 더 세부적으로 살펴보자.

Φ(𝐱)=(x12,2x1x2,x22)Φ(𝐲)=(y12,2y1y2,y22) K(𝐱,𝐲)=exp(𝐱𝐲22)=exp(𝐱·𝐱2)exp(𝐲·𝐲2)n=0(𝐱·𝐲)2n!

일반적으로 RBF 커널을 많이 사용하는 이유는, 데이터를 모두 무한 차원으로 매핑한 뒤, 무한 차원에서 직선 경계를 찾기 때문이다.


9.3 Summary

다음은 SVM의 장단점을 요약한 내용이다.