Processing math: 100%
본문 바로가기
  • 조금 느려도, 꾸준히
Artificial Intelligence/SVM

SVM - Quadratic Programming(QP) & Kernel Trick

by chan 2020. 1. 27.
반응형

 

# 선형 SVM 분류 모형

가중치 벡터 w , 편향 b

 

샘플 xw 을 점곱하고 b 를 더해 계산한 결과를 토대로 예측 ˆy 를 구함

 

wTx+b=w1x1++wnxn+b 

 

ˆy={0wTx+b<01wTx+b>=0

 

 

SVM 분류 모형은 제한된 마진 오류 내에서 가장 큰 마진을 갖는 wb 를 찾아야 한다. 이때 w 은 결정 모델의 기울기이며 기울기를 줄일 수록 큰 마진을 갖게 된다.

 

 

 

# 목적 함수

하드 마진 모델일 경우, 양성 샘플은 결정함수 값이 1보다 크며, 음성샘플은 결정함수 값이 -1 보다 작게 된다.

 

음성샘플 yi = 0 일때 ti = -1, 양성샘플 yi = 1 일때 ti = 1 이 되는 ti 를 가정하면

 

목적함수는 다음과 같게 되며

minimizew,b12wTw

 

제약조건은 다음과 같다

ti(wTxi+b)>=1

 

 

 

소프트 마진 모델일 경우 각 샘플에 대한 슬랙변수 ζi >= 0 을 도입하여 얼마나 마진을 위반할지 결정한다.

 

가중치 벡터를 최소화 해야 하는 상황과 슬랙 변수를 최소화 해야 하는 상황의 트레이드오프를 하이퍼파라미터 C 를 이용해 결정한다.

 

소프트 마진 모델의 목적함수와 제약조건은 다음과 같다.

 

minimizew,b,ζ12wTw+Cmi=1ζi

 

ti(wTxi+b)>=1ζi,ζi>=0

 

 

 

 

 

# 콰드라틱 프로그래밍(QP)

선형적인 제약조건 하에 볼록함수 2차 최적화 문제는 quadratic programming 문제이며, 일반화된 공식은 다음과 같다.

 

minimizep12PTHP+fTP,AP<=b

 

P : np 차원 벡터

H : (np×np) 행렬

f : np 차원 벡터

A : (nc×np) 차원 행렬

b : nc 차원 벡터

np : 모델 파라미터 수, nc : 제약 수

 

 

콰드라틱 프로그래밍은 라그랑주 승수를 응용한 알고리즘으로 풀 수 있을 것이며, 필자도 아직 공부 중이라 풀이법을 모르기 때문에 관련 논문 을 참고할 수 있다.

 

 

 

# 쌍대(dual) 문제

위의 콰드라틱 프로그래밍 문제를 원문제로 해결하는 방법이 있고 쌍대 문제로 해결하는 방법이 있다. 

 

쌍대 문제는 SVM 모델의 연산량을 마법과 같이 줄여주는 수학적 skill 인 커널 트릭(kernel trick)을 가능케 하는 접근 방법이다. 

 

 

minimizeα12mi=1mj=1αiαjtitjxTixjmi=1αj

 

subject to i=1,2,,mαi>0

 

위의 목적함수를 최소화하는 벡터 ˆα 를 찾아 ˆwˆb 를 구할 수 있다.

 

 

ˆw=mi=1ˆαitixi

ˆb=1nsmi=1(tiˆwTxi),ˆαi>0

 

 

 

 

# 커널 트릭

예를 들어 2차원 데이터 상에서 선형 SVM 분류기를 훈련시키기 위해 데이터를 2차원으로 매핑하는 함수 ϕ 가 있다고 하자. 데이터 x 를 매핑한 결과는 다음과 같을 것이다.

ϕ(x)=(x1x2)=(x212x1x2x22)

이렇게 3차원 벡터가 만들어진다. 데이터 abϕ 함수로 매핑시키고 둘을 점곱한 결과는 다음과 같다.

ϕ(a)Tϕ(b)T=(a212a1a2a22)T(b212b1b2b22)=a21b21+2a1a2b1b2+a22b22

 

이는 다음의 결과와 같다

(a1b1+a2b2)2=((a1a2)T(b1b2))2=(aTb)2

 

 

와! 놀랍지 않은가??? 

 

실제 매핑함수를 구하지 않고도 매핑함수끼리의 점곱을 원래 데이터의 점곱으로 구할 수가 있다. 이것이 이번 포스트의 핵심 내용인 커널 트릭 이다.

 

위에 살펴본 쌍대 문제의 목적함수에 매핑함수 ϕ 를 적용하면, ϕ(xi)Tϕ(xj) (xTixj)2 바꿀 수 있고, 이는 실제로 데이터를 다차원으로 매핑해서 기하 급수적으로 늘어난 특성 값을 일일히 계산하지 않고도 그와 같은 결과를 낼 수 있게 해준다.

 

모델이 새로운 샘플 x 에 대한 예측값을 예상할 때도 커널 트릭을 이용하여 ˆwˆb 를 직접 구하지 않고 예측값을 도출할 수 있다.

 

이러한 마법같은 단순화 기법은 SVM 모델에서 다차원 데이터를 다룰 때 널리 사용된다.

 

일반적으로 많이 쓰이는 커널들은 아래가 있다.

 

선형커널 K(a,b) = aTb

다항식 커널 K(a,b) = (γaTb+r)d

가우시안RBF 커널 K(a,b) = exp(γab2)

시그모이드 커널 K(a,b) = tanh(γaTb+r)

반응형

댓글