본문 바로가기

딥러닝기초

커널함수와 함께하는 Non linear SVM

지금까지는 선형 분리가 되는 상황을 가정하였다.

 

그렇다면 선형 분리가 어려운 경우에는 어떻게 해야할까?

 

우리는 multi layer perceptron으로 XOR 문제를 해결할 때 공간변환을 통해서 선형 분리가 가능한 상황으로 바꾸었다.

 





 

 

 

그러나 모든 데이터셋에 샘플마다 공간 매핑을 적용하게 되면 데이터셋이 커질 수록 계산 복잡도가 증가한다 ㅠㅠ

 

그래서 Kernel Trick을 사용한다.

당연히 모든 데이터셋에 공간 변환을 적용할 필요가 없으니 사용하겠다.

 

선형 SVM시 L을 최대화시키는 데에는 오직 x의 내적만이 영향을 미친다고 하고 끝냈었다.

그 점을 이용하여 어떤 수식이 벡터 내적을 포함할 때 그 내적을 커널 함수로 대치하여 계산한다.

 

커널함수란, 원래 특징공간 $L$에 정의된 두 특징 벡터 x와 z에 대해 $K(x, z) = \Phi(x) \cdot \Phi(z)$인 변환함수 $\Phi$가 존재하면 $K(x, z)$를 커널함수라고 부른다.

또한 원래 내적은 "유사도"와 관련있다고 이야기했다. 방향이 비슷할수록, 벡터 길이가 비슷할수록 내적 값이 커진다.

 

그래서 다시, 그 내적을 커널 함수로 대치한다는 것은

수식 안에 있는 $x_i^Tx_j$를 $K(x_i, x_j)$로 바꾸어 사용하겠다는 것인데

왜냐하면 $K(x_i, x_j)=\Phi(x_i)\cdot\Phi(x_j)$를 만족하여

결국 $x_i, x_j \Rightarrow \Phi(x_i), \Phi(x_j)$로의 공간 변환 효과를 얻기 때문이다.

 

$$L(\alpha) = \sum_i\alpha_i - \frac{1}{2}\sum_i\sum_j\alpha_i\alpha_j y_i y_j\vec{x}_i\cdot\vec{x}_j \Rightarrow \sum_i\alpha_i - \frac{1}{2}\sum_i\sum_j\alpha_i\alpha_j y_i y_jK(\vec{x}_i,\vec{x}_j)$$