Mathematics of Support Vector Machine
Key Questions
- Support Vector Machine (SVM)의 알고리듬을 수학적으로 어떻게 도출할 수 있을까?
- 보다 직관적으로 이해할 수 있는 방법은 없을까?
Key Synopsis
- SVM은 기본적으로 최소화(minimize)를 한 후 이를 다시 극대화(maximize)를 하는 최대최소(maxmin) 형태의 최적화 문제이다.
- 최소화: 분류(classification)의 기준이 되는 두 영역을 나누는 하이퍼플레인을 찾은 후 이 하이퍼플레인과 가장 가깝게 위치하는 두 영역의 벡터(서포트 벡터)를 찾는다.
- 최대화: 분류 기준이 되는 하이퍼플레인과 평행한 두 서포트 벡터를 지나는 하이플레인의 거리를 최대화 한다.
- 이 maxmin 문제를 풀면 목적함수에는 training set에 속한 벡터들의 닷 프로덕트만 남게 되고, 덕분에 최적화 문제가 단순해진다.
- 이 닷 프로덕트들로 구성된 부분을 다른 함수 형태로 바꿔서 SVM 알고리듬의 ’커널’을 유연하게 바꿀 수 있다. 이것이 커널 트릭 (Kernel trick)이다.
SVM Mathematically
Preliminary concepts
Length of a vector
벡터
Direction of a vector
벡터
그림으로 나타내보자.
이는 다음과 같이 삼각함수로 표시할 수 있다.
Dot product (inner product)
내적은 벡터 연산의 일종으로, 이는 두 벡터를 스칼라 값으로 바꿔주는 일종의 함수다.
이를 아래와 같이 정리할 수도 있다.
Hyperplane
- 즉,
이나 중 하나만 주어지면 나머지 위치가 주어진다.
- 쉽게
의 직선을 생각하면 된다. 2차원 평면에서 의 값이 주어지면 y값이 정해진다. 이 직선은 2차원 평면에 위치하지만 사실상 1차원의 속성을 지니게 된다.
Classifier
하이퍼플레인을 기준으로 클래시파이어를 다음과 같이 정의한다. 특정한 관찰 벡터
Explained Visually
그림으로 보다 직관적으로 이해해보자.
어떤 원점을 기준으로 training example까지의 벡터를
내적이라고 번역되기도 하지만 여기서는 그냥 ’닷 프로덕트’라고 쓰리고 하겠다.
즉,
닷 프로덕트의 부분이 시각적으로는 projection 결과 곱하기
프로젝션의 길이가 일정한 기준보다 길면 오른쪽에 짧으면 왼쪽에 위치한 것으로 분류할 수 있다. 이 조건을
앞서 분류기에서 해당 값이 0보다 크면
이제
벡터의 방향에 대해서 약간 갸우뚱하는 분들이 있을지 모르겠다.
한편, 하이퍼플레인과 평행하면서 서포트 벡터를 지나가는 하이퍼플레인의 거리
따라서
여기서
Optimization for SVM
Metrics to compare hyperplanes
Defining functional margin
펑셔널 마진(functional margin)이라고 불리는
를 얻기 위한 과정에서 최소화 로직이 들어간다. 즉, 해당 하이퍼플레인과 가장 가깝게 위치한 관측치를 얻어내는 과정- 이렇게 얻어낸
들을 서로 다른 하이퍼플레인들 사이에 비교하고, 가장 큰 를 주는 하이퍼플레인을 채택한다.
표준화를 위해서
Derivation of SVM optimization problem
표준화를 위해서
where
표준화된 펑셔널 마진을 최대화하되, 트레이닝 샘플들이 이것보다 커야 한다는 조건(최소화)이 제약으로 들어간다. 즉, 아래의 식은 최소화 제약 하에서
위 극대화 문제에서 모든 변수는 상대값으로 정의할 수 있으므로
Optimization by Wolfe duality
제약 하의 극대화 문제이므로 라그랑주 최적화로 바뀌서 볼 수 있다. 다음과 같이 라그랑주 방정식을 정의하자.
여기서 벡터
일단,
이 녀석들을 다시 라그랑주 방정식에 대입하면,
이제 문제는
제약 부분이 부등식이므로 KT(Kuhn-Tucker) 조건에 따라서 풀면 된다.
KT 조건이란 부등식 제약을 푸는 테크닉이다. 즉,
Compute w and b
한편,
- 양변에
를 곱하면, 이므로,
- 서포트 벡터가 S개 존재할 경우라면,
Limitation
앞서 본 것을 이른바 hard margin SVM이다. 즉, 서포트 벡터 사이의 마진을 획일적으로 적용하는 분류 알고리듬이다. 하드 마진 SVM은 다음의 두가지 경우에 취약하다.
데이터에 노이즈가 있을 경우
하드 마진의 큰 문제는 아웃라이어에 취약할 수 밖에 없다는 것이다. 풀어서 말하면 제약이 선형이고 그 제약이 강력하다는 데 있다. 트레이닝 데이터에 이런 저런 노이즈가 있을 경우 하드 마진은 아예 계산이 불가능할 수 있다. 이때 사용하는 기법이 soft margin SVM이다.
데이터 자체가 선형으로 분리되지 않을 경우
애초부터 데이터 자체가 선형을 통한 분류를 허용하지 않을 경우에는 비선형 분류를 사용할 수 있다. 이때 동원하는 테크닉이 커널 트릭 (kernel trick)이다.
Soft Margin SVM
제약을 약간 풀어주는
문제를 풀면
What is C
정규화 파라미터인
Kernel Trick
마지막에 얻은 극대화 문제를 살펴보면, training set이 관련된 부분이 딱 하나 밖에 없다.
이런 커널만 있을 형태는 없다. 여러가지 함수를 커널로 취할 수 있을 것이다. 가장 많이 사용되는 커널은 RBF(Radial Basis Function) 혹은 가우시안이라고 한다.
값이 충분히 작으면 선형 커널과 비슷하게 작동한다. 가 크면 서포트 벡터에게 크게 영향 받는다.
Resource
이 자료는 아래 내용을 바탕으로 만들어졌습니다.