앞선 SVM 포스팅에서는 데이터가 선형 hyperplane을 통해 분리가 가능함을 가정하였다. 여기에 Slack Variable을 추가하여 약간의 오차는 눈감아주는 모델도 생성했었다. 그러나 현실적으로 데이터를 선형 hyperplane을 통해 분류해낼 수 있는 경우는 없다. 단순한 XOR 게이트 문제 역시 선형분리시키지 못하는 사례 중 하나다.

이러한 문제를 해결하기 위한 방법으로는 Kernel 기법이 있다. 데이터를 기존의 차원보다 더 높은 차원의 공간으로 mapping 시키고 한층 높아진 차원에서 hyperplane을 이용한 선형분리를 시킨다. 원 데이터셋이 유한한 차원에 존재한다면, 우리는 이를 더 고차원 공간에서 Class를 분류해낼 수 있다.

SVM

선형 hyperplane으로 분리가 불가능한 문제를 데이터 차원을 증가시키면서 해결할 수 있다는걸 위의 그림을 통해서도 확인할 수 있다. 왼쪽 이미지는 원래 데이터 차원에서 그림을 그린 것이다. 두 Class를 선형 hyperplane을 통해서는 분리시킬 수 없다. 그러나 오른쪽 이미지와 같이 가상의 z축을 생성시켜 두 Class 데이터간의 높이 차이를 발생시킨다면, 우리는 이제 선형 hyperplane으로 이 둘을 분리시킬 수 있게 된다.

데이터셋 x를 고차원으로 mapping시킨 결과를 ϕ(x)라고 한다면, 이 새로운 차원에서의 hyperplane 모델은 다음과 같이 표현 가능하다.

f(x)=wTϕ(x)+b

여기서 w,b는 parameter이고 기존 SVM과 동일하게 margin을 최대화시키는 hyperplane을 생성하기 위해서는 다음의 식을 만족시켜야 한다.

minw,b12||w||2s.t.yi(wTϕ(xi)+b)1,i

이전과 마찬가지 방식으로 Dual Problem으로 바꿔서 표현하면 다음과 같은 식을 얻을 수 있다.

maxαni=1αi12ni=1nj=1αiαjyiyjϕ(xi)Tϕ(xj)s.t.ni=1αiyi=0αi0

이 식의 해를 구하기 위해서는 ϕ(xi)Tϕ(xj)를 계산해야 한다. 그런데 데이터를 활용해 생성한 새로운 차원 ϕ(x) 에서의 연산은 쉽지 않다. 그래서 우리는 다음과 같은 함수를 가정한다.

κ(xi,xj)=ϕ(xi)Tϕ(xj)

이러한 함수 κ(,)를 Kernel Function이라 부르며, 이러한 연산을 취하는 것을 커널 트릭(Kernel Trick)이라 부른다. 이는 원래 xi,xj가 갖는 차원에서의 Kernel Function의 결과가 xi,xj를 고차원으로 보낸 후 연산시킨 것과 동일하다는 것을 의미한다. 따라서 고차원 공간에서의 벡터 연산을 수행하지 않아도 된다.

자주 활용되는 Kernel을 소개하면 다음과 같다.

Kernel 명칭 표현식
선형 Kernel κ(xi,xj)=xTixj
다항 Kernel κ(xi,xj)=(xTixj)d
가우시안(RBF) Kernel κ(xi,xj)=exp(||xixj||22σ2)

앞선 Dual Problem을 다시 표현하면 다음과 같이 표현할 수 있다.

maxαni=1αi12ni=1nj=1αiαjyiyjκ(xi,xj)s.t.ni=1αiyi=0αi0

우리가 구하고자 하는 hyperplane 역시 Kernel Function을 통해 다시 표현할 수 있고 이 수식은 최적의 hyperplane은 훈련 데이터를 활용한 Kernel Function을 구함으로써 얻을 수 있다는 것을 의미한다.

f(x)=wTϕ(x)+b=ni=1αiyiϕ(xi)Tϕ(x)+b=ni=1αiyiκ(x,xi)+b

따라서 Kernel Trick에 의해 생성되는 고차원 공간이 데이터를 분리하는데 있어 좋고 나쁨은 Kernel SVM의 성능에 큰 영향을 미친다. 따라서 Kernel Function의 선택은 SVM의 최대 변수가 된다고 말할 수 있다.

Gaussian Kernel

가우시안 커널(Gaussian Kernel)은 가장 빈번하게 활용되는 Kernel Function이다. 선형 커널은 기존 SVM에서 활용했던 것이니 특별할 것이 없다고 볼 수 있다. 다항 커널은 사용자가 지정한 d값에 의해 새로운 Space의 차원이 결정된다.

가우시안 커널은 다음과 같이 표현할 수 있는데

κ(xi,xj)exp{(xixj)2}exp(x2i)exp(x2j)exp(2xixj)

exponential 함수 ex는 Taylor Series에 의해 다음과 같이 표현될 수 있다.

ex=k=0xkk!

이는 exponential 함수를 이용하는 것이 Kernel에 input값으로 들어오는 데이터의 공간을 무한한 차원으로 확장시킬 수 있다는 것을 의미한다. 따라서 가우시안 커널은 입력되는 데이터의 차원에 관계없이 무한대 차원으로 데이터를 mapping시킬 수 있다는 것에서 큰 장점을 지닌 Kernel이라 할 수 있다.

참조 문헌

  1. PRML

  2. 단단한 머신러닝