3장 분류모델(2) SVM(Support Vector Machine)

TaeJong Kim·2024년 1월 1일

머신러닝 교과서

목록 보기
2/10

Support Vector Machine?

  • support vector machine, SVM은 가장 기본적인 deepleanrning 모델중 하나인 퍼셉트론의 확장형 모델이다.
  • 차이점은 단순히 분류를 위해 초평면을 찾는것 뿐만 아니라 margin을 최대화하느것이 목표이다.

margin

왜 마진을 최대화 해야할까?

마진을 최대화 해야하는 이유는 다음과 같다.
1. 일반화 오차가 작아진다. 마진이 작으면 과대 적합 가능성이 높아진다.

w0+WTXpos=1(1)w_0 + W^TX_{pos} = 1\cdots(1)
w0+WTXneg=1(2)w_0 + W^TX_{neg} = -1\cdots(2)

(1)-(2)를 해주면

WT(XposXneg)=2(3)W^T(X_{pos}-X_{neg}) = 2\cdots(3) 이 식을 W||W||로 정규화 하면
WT(XposXneg)W=2W(4)\frac{W^T(X_{pos}-X_{neg})}{||W||} = \frac{2}{||W||}\cdots(4)

XposXneg=XX_{pos}-X_{neg}=X^{'}로 치환하면

WTXW=2W(5)\frac{W^TX^{'}}{||W||} = \frac{2}{||W||} \cdots (5)

(5)번 식을 보면 어딘가 익숙한 공식이 떠오른다.

d=Ax0+By0+CA2+B2(6)d = \frac{Ax_0+By_0+C}{\sqrt{A^2+B^2}} \cdots (6)

(6)번식은 점과 직선과의 거리를 구하는 공식이다.
이렇게만 봤을때 어디가 비슷한건지 확 와닿지 않을 수 있다. (5)번식을 천천히 뜯어보자
WTX=w0x0+w1x1++wnxnW^TX^{'}=w_0x_0+w_1x_1+\cdots+w_nx_n이지만 n=1이라고 해보자
WTX=w0x0+w1x1W^TX^{'}=w_0x_0+w_1x_1
이렇게 보면 C=0일때 (6)번 식과 유사하다.
다시말해, WTXW=2W\frac{W^TX^{'}}{||W||} = \frac{2}{||W||} 식은 점과 직선(좀 더 확장해서 초평면)과의 거리로 해석할 수 있다.
X=XposXnegX^{'}=X_{pos}-X_{neg}이므로 XX^{'}은 pos쪽 점의 위치를 neg쪽 점을 원점으로 하여 위치조정된것이다. 그러므로 (5)번식은 XX^{'}WW로 결정되는 임의의 초평면과의 거리라고 해석할 수 있다.

SVM의 목표

W22\frac{||W||}{2}^{2} 최소화

쓸대없이 지루한 설명이 너무 길었다. 그래서 핵심은 2W\frac{2}{||W||}을 최대화 하는것이다. 앞서 logistic regression에서도 그랬지만 딥러닝에서는 최대화 하는것 보다 최소화 하는 방향을 선호한다. (정확히 왜 그러는지는 차차 알아보도록하자)
때문에 역수를 취해 W2\frac{||W||}{2}을 최소화 하는 방향으로 학습한다.

좀 더 구체적으로 살펴보자


출처 : 공돌이의 수학정리노트 SVM

이 그림이에서 WWX+X=XX_+-X_-=X^{'}의 관계를 볼 수 있다.
WTWX1\frac{W^T}{||W||} \cdot X^{'} \leq 1이 성립함을 알 수 있다.
만약 마진이 0이 되면 X+X_+XX_- 벡터는 경계 직선(혹은 초평면)과 수평이 될 것이다. 그렇게 되면 WW와 수직이 된다. 즉 WTX=0W^T\cdot X^{'} = 0이 된다.
반대로 마진이 최대가 되면 WWX+X_+XX_- 벡터가 수평이 될것이다. 즉 WTX=1W^T\cdot X^{'} = 1이 된다.

일반화

w0+WTX(i)1(y(i)=1)w_0 + W^TX^{(i)} \geq 1 \cdots (y^{(i)}=1)
w0+WTX(i)1(y(i)=1)w_0 + W^TX^{(i)} \leq -1 \cdots (y^{(i)}=-1)
i=1N\quad \quad \quad \quad i=1 \cdots N
y(i)(w0+WTX(i))1(y(i)=1)iNy^{(i)}(w_0 + W^TX^{(i)}) \geq 1 \cdots (y^{(i)}=1) \quad \forall i\leq N

y(i)y^{(i)}를 곱하므로서 두 식을 통합할 수 있다. 왜냐하면 -1인경우에는 y역시 -1이 되므로 결과는 1이된다.

Kernel SVM

kernel svm이란 svm으로 비선형 문제를 해결하기위한 방법이다.

위 그림처럼 비선형적인 분류문제에서 새로운 차원을 만들어 데이터들을 해당 차원에 투영하고 이를 통해서 초평면으로 비선형 문제를 해결하는 방법을 말한다.
즉, 여전히 분류는 선형모델로 하지만 선형모델로도 분류가 되는 차원으로 데이터셋을 투사하는 것이다.

문제는 새로운 차원으로 투사하는 정해진 방법이 있는것이 아니기 때문에 이 투영하는 함수를 찾는것이 코스트가 많이 발생한다.

후기

수학적으로 엄밀하게 설명하진 못했다. 내가 보고있는 머신러닝 교과서라는 책은 수학적 엄밀함 보다 직관적 이해와 활용에 대한 설명이 주를 이룬다. 추후에 머신러닝 교과서를 끝내고 딥러닝을 위한 선형대수학 책을 공부할 생각이라 그 때가서 보다 엄밀하게 정리해보도록 하겠다.

Reference

profile
AI 엔지니어 김태종입니다. 추천시스템, 이상탐지, LLM에 관심이 있습니다. 블로그에는 공부한 기술, 논문 혹은 개인적인 경험을 올리고 있습니다.

0개의 댓글