본문 바로가기
ML & DL/Study

[ML] Support Vector Machine(SVM)

by 별준 2020. 8. 26.
- 참고 문헌 및 사이트
핸즈 온 머신러닝 2nd
https://en.wikipedia.org/wiki/Support_vector_machine
https://ko.wikipedia.org/wiki/%EC%84%9C%ED%8F%AC%ED%8A%B8_%EB%B2%A1%ED%84%B0_%EB%A8%B8%EC%8B%A0
http://jaejunyoo.blogspot.com/2018/01/support-vector-machine-1.html

Coursera의 Machine Learning에서 SVM에 대해서 강의를 들었지만, 조금 부족한 부분이 있어서 따로 더 공부를 해보았습니다.

 

강의에서 SVM을 설명할 때는 Logistic Regression에서 시작해서 Cost Function으로 hinge loss라는 함수를 사용하면서 설명을 했었습니다. 

강의에서와 시작점은 다르지만, 결국 SVM은 주어진 data를 분류할 때, 클래스들 사이의 가장 적절한 Decision Boundary를 결정하는 것이 목적입니다.

 

SVM에는 선형 SVM 분류기, 비선형 SVM 분류기가 있고 선형 SVM에서도 소프트 마진 분류기, 하드 마진 분류기로 나뉩니다. 우선 선형 SVM 분류기(하드 마진)부터 살펴봅시다.

 

- 선형 SVM 분류기(하드 마진)

 

위 data 분포와 같이 positive class(+)와 negative class(-)를 분류해야하는 문제가 있을 때, 우리는 여러 가지의 Decision Boundary(초록색, 노란색, 하늘색 점선)를 구할 수 있습니다. 그 중에서 직관적으로 class 경계에 있는 두 class의 각 sample 사이의 거리가 가장 넓은 어떠한 직선이 가장 적절한 Decision boundary(노란색 점선)라고 예상할 수 있습니다. 이때, 두 sample 사이의 거리를 margin이라고 하며 SVM은 이런 Decision boundary를 찾아주게 됩니다. 이러한 특성 때문에 SVM은 Large margin classification이라고 합니다.

 

SVM은 margin이 가장 넓은 Decision Boundary를 찾아줍니다. 그렇다면 어떻게 최대의 margin을 가지는 Decision Boundary를 찾는지 알아봅시다.

 

위 그래프에서 노란색 점선을 중심선, 빨간색/파란색 점선을 경계선이라고 지칭하겠습니다.

우선 Decision Boundary를 정하기 위한 Decision Rule을 결정해야 하는데, 이 rule은 어떤 형태인지 생각해보아야 합니다. 

여기서 \(\overrightarrow{w}\)는 강의에서 나왔던 Parameter \(\theta\)를 의미하며, 이 벡터는 중심선에 직교하는 법선 벡터(normal vector)입니다.

이제 우리가 알고자하는 샘플 \(\overrightarrow{x}\)가 있을 때, 우리는 이 샘플이 중심선의 어느 쪽에 위치하는 지 알아야합니다. 우리가 여기서 할 수 있는 방법은 \(\overrightarrow{w}\)와 \(\overrightarrow{x}\)를 내적한 후에 그 값이 어떠한 상수 \(c\)보다 큰 지 확인하는 것입니다.(\(\overrightarrow{w}\cdot\overrightarrow{x} \geq 0\))

이 내적 결과값이 특정한 상수보다 크다면 positive, 작다면 negative로 분류할 수 있습니다.

 

이것을 일반화시켜서 표현하면 다음과 같이 표현할 수 있습니다.

\[\tag{1}\overrightarrow{w}\cdot\overrightarrow{x} + b \geq 0, \text{ ,then positive class}\]

이 (1)식이 Decision rule이 되는 것이고, \(\overrightarrow{w}\cdot\overrightarrow{x} + b  = 0\)이 중심선의 방정식이 됩니다. 

여기서 \(\overrightarrow{w}\)와 \(b\)를 구해야 하는데, 사실 중심선에 직교하는 벡터(normal vector)는 다양합니다. 그렇기 때문에 \(\overrightarrow{w}, b\)를 구하기 위해서 추가적인 제약조건들이 필요합니다.


\(\overrightarrow{w}\)는 왜 중심선에 직교하는 벡터인가 ?

\(\overrightarrow{w} = (w_1, w_2)\)가 있을 때, 이 벡터의 기울기는 \(\frac{w_2}{w_1}\)입니다.

그리고 중심선 위에 존재하는 어느 \(\overrightarrow{x} = (x_1, x_2)\)가 있을 때, 이 중심선의 방정식은 아래와 같이 나타낼 수 있습니다.

\[w_1x_1 + w_2x_2 + b = 0 \leftrightarrow x_2 = -\frac{w_1}{w_2}x_1 -\frac{b}{w_2}\]

이 중심선의 기울기가 \(-\frac{w_1}{w_2}\)이고, 즉, 법선의 기울기와의 곱이 -1이기 때문에 \(\overrightarrow{w}\)는 중심선에 직교하는 벡터가 됩니다.


우리는 위의 (1)식에서 조금 더 나아가서 positive class의 샘플 \(x_+\)와 negative class의 샘플 \(x_-\)에 대해서 아래와 같이 설정해봅시다.

\[\tag{2}\begin{matrix} \overrightarrow{w}\cdot\overrightarrow{x_+} + b \geq 1 \\ \overrightarrow{w}\cdot\overrightarrow{x_-} + b \leq -1 \end{matrix}\]

이것은 우리가 방금 정한 decision rule에서 1보다 큰 영역(파란색 실선 위쪽)이 positive class이고, -1보다 작은 영역(빨간색 실선 아래쪽)이 negative class라는 의미이빈다.(여기서 1이라는 크기는 중요하지 않고, 부호가 서로 반대인 것이 중요합니다. 크기는 계산 편의상 1로 설정했습니다)

(2)에서 두 가지의 식이 나왔기 때문에 계산하기에 불편함이 있습니다. 그래서 우리는 두 가지의 식을 하나로 표현하기 위해서 \(y_i\)라는 변수를 새롭게 정의해서 식을 하나로 만들 것입니다.

\[y_{i} = \left\{ \begin{matrix} 1 & \text{ , if } x \text{ in positive class} \\ -1 & \text{ , if } x \text{ in negative class} \end{matrix}\right.\]

(2)식은 아래와 같이 나타낼 수 있습니다.

\[\begin{matrix} \overrightarrow{w}\cdot\overrightarrow{x_+} + b \geq 1 \rightarrow y_i(\overrightarrow{w}\cdot\overrightarrow{x_+} + b) \geq 1 \\ \overrightarrow{w}\cdot\overrightarrow{x_-} + b \leq -1 \rightarrow y_i(\overrightarrow{w}\cdot\overrightarrow{x_-} + b) \geq 1 \end{matrix}\]

따라서, 하나로 합친 식은 아래와 같습니다.

\[\tag{3} y_i(\overrightarrow{w}\cdot\overrightarrow{x_i} + b) - 1 \geq 0\]

만약 sample data \(x_i\)가 경계선에 걸쳐있다면,

\[\tag{4} y_i(\overrightarrow{w}\cdot\overrightarrow{x_i} + b) - 1 = 0\]

이 될 것이고, 우리는 (4)식을 하나의 제약사항이라고 보면 됩니다.

 

다시 처음으로 돌아가서 우리의 목적을 생각해보면, 우리는 어떤 적절한 decision boundary를 결정하되, 그 경계선의margin을 최대화해야합니다. 

경계선에 걸친 샘플 \(x_+\)와 \(x_-\)가 있다고 합시다. 이때 두 샘플 사이의 거리, 즉, margin은 아래와 같이 표현할 수 있습니다.

\[MARGIN = (x_+ - x_-) \cdot \frac{\overrightarrow{w}}{\left \| \overrightarrow{w} \right \|}\]

여기서 \(\overrightarrow{x_+}, \overrightarrow{x_-}\)를 (4)식에 대입하면,

\[\begin{align*}y_i(\overrightarrow{w}\cdot\overrightarrow{x_+} + b) - 1 &\leftrightarrow \ \overrightarrow{w}\cdot\overrightarrow{x_+} + b - 1 = 0 \\ &\leftrightarrow \overrightarrow{w}\cdot\overrightarrow{x_+} = 1 - b \end{align*}\]

\[\begin{align*}y_i(\overrightarrow{w}\cdot\overrightarrow{x_-} + b) - 1 &\leftrightarrow \ -(\overrightarrow{w}\cdot\overrightarrow{x_-} + b) - 1 = 0 \\ &\leftrightarrow \overrightarrow{w}\cdot\overrightarrow{x_-} = -1 - b \end{align*}\]

위 수식 덕분에 margin은 아래와 같이 나타낼 수 있습니다.

\[\tag{5} MARGIN = \frac{2}{\left \| \overrightarrow{w} \right \|}\]

위 margin를 최대화하기 위해서 \(max\frac{2}{\left \| \overrightarrow{w} \right \|} \rightarrow min\left \| \overrightarrow{w} \right \|\)를 구해야하지만, \(\left \| \overrightarrow{w} \right \|\)에 제곱근이 포함되어 있기 때문에 풀기가 어렵고 계산의 용이성을 위해 아래의 최적화 문제로 변경합니다. 

\[max\frac{2}{\left \| \overrightarrow{w} \right \|} \leftrightarrow min\left \| \overrightarrow{w} \right \| \leftrightarrow min\frac{\left \| \overrightarrow{w} \right \|^2}{2}\]

이렇게 변경하면 쿼드라틱 프로그래밍(QP:Quadratic Programming) 최적화 문제가 됩니다.

그리고 우리는 위 문제를 최적화할 때, (4)식의 제약사항이 있었습니다.

즉, 우리는 \(y_i(\overrightarrow{w}\cdot\overrightarrow{x_i} + b) -1 = 0\)이라는 제약 조건이 있는 \(min\frac{\left \| \overrightarrow{w} \right \|^2}{2}\) 최적화 문제를 풀어야합니다. 이 최적화 문제 식을 목적 함수라 일컷습니다.

 

라그랑주 승수법(Lagrange Multiplier Method)

이런 제약 조건이 있는 최적화 문제를 푸는데 랑그랑주 승수법을 적용하면 제약 조건을 신경쓰지 않고 문제를 풀 수 있도록 문제를 바꿀 수 있습니다.


라그랑주 승수법이란?

\(g(x)\)라는 제약 사항(조건) 하에서 목적 함수 \(f(x)\)의 최소화하는 최적화 문제가 있다고 할 때, 랑그랑주 함수라는 새로운 함수를 정의합니다. 새로운 함수는 다음과 같이 나타낼 수 있습니다.

\[\begin{matrix} \mathcal{L} = f(x) -\alpha g(x) & , \alpha \geq 0 \end{matrix}\]

\(\alpha\)는 랑그랑주 승수(Lagrange multiplier)이며, 0보다 크거나 같아야 합니다.

 

이렇게 제약이 있는 최적화 문제라면 라그랑주 함수의 정류점(stationary point)가 되는 \(\alpha\)가 존재해야 하며, 정류점은 모든 편도함수가 0인 지점입니다. 그리고 제약이 있는 최적화 문제의 해는(만약 있다면) 이런 정류점 중에 있습니다.

 

예를 들어, 제약이 \(g(x, y) = 3x + 2y + 1\)인 조건에서, \(f(x, y) = x^2 + 2y\)를 최소화하는 x와 y의 값을 찾으려고 할 때, 라그랑주 함수와 라그랑주 함수의 편도함수는 다음과 같습니다.

\[\mathcal{L}(x, y, \alpha) = x^2 + 2y - \alpha(3x + 2y + 1)\]

\[\begin{align*} &\frac{\partial}{\partial x}\mathcal{L}(x, y, \alpha) = 2x - 3\alpha \\ &\frac{\partial}{\partial y}\mathcal{L}(x, y, \alpha) = 2 - 2\alpha \\ &\frac{\partial}{\partial \alpha}\mathcal{L}(x, y, \alpha) = -3x -2y -1 \end{align*}\]

이 편도함수 방정식을 풀게되면, \(x = \frac{3}{2}, y = -\frac{11}{4}, \alpha = 1\)을 계산할 수 있습니다. 주어진 조건을 만족하는 정류점은 하나뿐이므로 이 값이 제약이 있는 최적화 문제의 해가 됩니다. 즉, 라그랑주 승수법은 연립방정식에 대해서만 적용 가능하며, 만약 제약 조건이 연립부등식이라면 KKT조건을 만족하도록 라그랑주 승수법을 적용하면 됩니다.


우리는 이미 정의한 목적 함수와 제약식을 라그랑주 승수법으로 식을 다시 쓰면 아래와 같습니다.

\[\tag{6} \begin{matrix} \underset{\overrightarrow{w}, b}{min}\underset{\alpha}{max}\mathcal{L}(\boldsymbol{w}, b, \alpha) = \frac{1}{2} \left \| \overrightarrow{w} \right \|^2 - \sum_{i = 1}^{m}\alpha_i \left[ y_i(\overrightarrow{w}\cdot\overrightarrow{x}_i + b) -1 \right ] & \text{, } \alpha_i \geq 0 \end{matrix}\]

즉, KKT조건을 만족하면서 \(minimize \overrightarrow{w}, b \text{ and maximize } \alpha_i \geq 0\)가 되는 최적화 문제를 풀면 됩니다.


KKT 조건

간단하게 조건에 대해서만 소개하면 다음과 같습니다.

1. 모든 변수에 대한 미분값은 0이다.

2. 모든 라그랑주 승수값과 제약 조건 부등식의 곱은 0이다.

3. 라그랑주 승수값은 음수가 아니다.

 

KKT조건은 정류점이 제약이 있는 최적화 문제의 해가 되기 위한 필수 조건이며, 일정 조건 하에서는 충분조건 이기도합니다.


동일하게 우리는 (6)식을 모든 변수에 대해서 편도함수를 계산해서 정류점을 찾을 수 있습니다. SVM 최적화 문제에서는 KKT 조건을 만족하는 어떤 정류점도 제약이 있는 최적화 문제의 해임을 보장하게 됩니다.

우리가 관심있는 변수에 대해서 각각 미분을 해주면 다음 식이 계산됩니다.

\[\tag{7}\triangledown_{\overrightarrow{w}}\mathcal{L}(\boldsymbol{w}, b, \alpha) = \overrightarrow{w} - \sum_{i}\alpha_iy_i\overrightarrow{x}_i = 0\]

\[\tag{8}\triangledown_{b}\mathcal{L}(\boldsymbol{w}, b, \alpha) = -\sum_{i}\alpha_iy_i = 0\]

 

그리고 KKT 2번 조건에서 \(\alpha_i\left [y_i(\overrightarrow{w}\cdot\overrightarrow{x}_i + b) - 1 \right ] = 0\)가 되며, 이 식에 의해서 경계선에 존재하는 샘플 \(x_i\)를 제외하고 모든 샘플에서의 \(\alpha_i\) 값은 0이 됩니다. summation에서 example들의 수 m을 지운 이유가 바로 이것 때문입니다.

 

(7)식을 정리해보면, 우리가 관심이 있었던 \(\overrightarrow{w}\)가 경계선에 존재하는 샘플들의 선형합으로 나타나고, 우리는 \(\alpha\)값만 알게 되면 \(\overrightarrow{w}\)를 구할 수 있게 됩니다. 

(7)과 (8)식을 (6)에 대입해서 정리하면, \(\alpha\)에 대한 최적 문제로 정리되는 것이죠.

\[\tag{9}\begin{align*} \frac{1}{2}\left\| \overrightarrow{w} \right\|^2 - \sum_{i = 1}^{m}\alpha_i \left [y_i(\boldsymbol{w}^T\boldsymbol{x} + b) - 1 \right ] &= \sum_{i = 1}^{m}\alpha_i + \frac{1}{2}\left\| \overrightarrow{w}\right\|^2 - \sum_{i = 1}^{m}\alpha_iy_i\boldsymbol{w}^T\boldsymbol{x}_i \\ &= \sum_{i = 1}^{m}\alpha_i + \frac{1}{2}\boldsymbol{w}^T\boldsymbol{w} - \boldsymbol{w}^T\boldsymbol{w} \\ &= \sum_{i = 1}^{m}\alpha_i - \frac{1}{2}\boldsymbol{w}^T\boldsymbol{w} \\ &= \sum_{i = 1}^{m}\alpha_i - \frac{1}{2}\sum_{i = 1}^{m}\sum_{j = 1}^{m}\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^T\boldsymbol{x}_j \\ &= \mathcal{L}_D(\alpha) \\ & \text{ s.t. } \alpha_i \geq 0 \text{ } i = 1, 2, \cdots, m \end{align*}\]

위 식을 풀어서 \(\alpha\)를 구하면, (7)식으로 \(\overrightarrow{w}\)를 구할 수 있고, \(y_i(\overrightarrow{w}\cdot\overrightarrow{x_i} + b) -1 = 0\) 을 통해서 \(b\)를 구할 수 있습니다.

 

\(\mathcal{L}_D\)를 보면((9)식), \(\alpha\)에 대해서 첫째항은 선형합이고, 둘째항은 quadratic하기 때문에 QP 테크닉을 사용해서 \(\alpha\)를 항상 구할 수 있습니다. NN과 달리 local optima에 빠질 걱정을 하지 않아도 되며, SVM으로 구한 해는 언제나 최적의 해라는 것이 보장되어 있습니다.

따라서 support vector들로 이루어진 decision boundary가 가장 최적의 boundary이라고 할 수 있습니다.

 

((9)식은 목적 함수의 prime problem인 랑그랑주 함수 (6)식을 변형한 목적 함수의 dual problem(쌍대형식)입니다.)

- 선형 SVM 분류기(소프트 마진)

모든 샘플들이 경계선 바깥쪽에 올바르게 분류되어 있다면 하드 마진이라고 하지만, 하드 마진 분류에는 두 가지 문제점이 존재합니다. 데이터가 선형적으로 구분되어 있어야 제대로 동작하고, 이상치(Outlier)에 민감합니다. 이러한 문제를 피하려면 좀 더 유연한 모델이 필요하며, margin을 가능한 최대로 유지하는 것과 마진 오류(margin violation) 사이에 적절한 균형을 잡아야 합니다. 

소프트 마진 분류기의 목적 함수를 구성하려면 각 샘플에 대해서 슬랙 변수(slack variable \(\zeta_i \geq 0\))을 도입해야 합니다. \(\zeta_i\)는 i번째 sample이 얼마나 마진을 위반할 지 결정하게 됩니다. 여기서 우리는 마진 오류를 최소화하기 위해서 가능한 한 슬랙 변수를 작게 만드는 것과 마진을 크게 하기 위해 \(\frac{1}{2}\left \| \overrightarrow{w} \right \|^2\)를 가능한 작게 만드는 것, 두 가지 상충되는 목표를 가지게 됩니다. 여기에서 하이퍼파라미터 \(C\)가 등장하고, 이 파라미터는 두 목표 사이의 trade-off를 정의합니다.

결국 아래와 같은 제약 있는 최적화 문제가 됩니다.

\[\begin{align*} &\underset{w, b, \zeta}{minimize}\frac{1}{2}\left \| \overrightarrow{w} \right \|^2 + C\sum_{i = 1}^{m}\zeta_i \\ \text{subject to } & y_i(\boldsymbol{w}^T\boldsymbol{x}_i + b) \geq 1 - \zeta_i , & \zeta_i \geq 0 \end{align*} \]

 

그리고 하드 마진과 동일하게 KKT 조건을 만족하도록 라그랑주 승수법을 적용하면 아래와 같은 쌍대 형식의 최적화 문제를 얻을 수 있습니다.

\[\begin{align*} & \underset{\alpha}{maximize} \sum_{i = 1}^{m} - \frac{1}{2}\sum_{i}\sum_{j}\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^T\boldsymbol{x}_j \\ \text{subject to } & 0 \leq \alpha_i \leq C , \sum_{i = 1}^{m}\alpha_iy_i = 0 \text{ for } i = 1, \cdots, m \end{align*}\]

\(\zeta_i\)는 우리가 신경 쓸 필요 없으며, 적절한 C만 찾으면 됩니다.

 

- 비선형 SVM 분류기

data들이 linear separable하지 않는다면 앞서 적용한 SVM은 잘 동작하지 않을 것입니다. 이런 경우에는 다항 특성과 같은 특성(feature)을 더 추가하여서, 차원을 증가시켜서 선형적으로 분류할 수 있도록 만들고 SVM을 사용하는 방법이 있습니다. 이때 사용되는 것이 커널 함수(\(K\))입니다. 

 

[다항식 커널]

아래와 같은 다항식 매핑 함수로 특성을 추가하여서 차원을 높혀 SVM을 적용합니다.

\(\phi(\boldsymbol{x}) = \phi(\begin{pmatrix} x_1 \\ x_2 \end{pmatrix}) = \begin{pmatrix} x_1^2 \\ \sqrt{2}x_1x_2 \\ x_2^2 \end{pmatrix}\)

 

다음과 같은 커널이 사용됩니다.

\(K(\boldsymbol{a}, \boldsymbol{b}) = (\gamma\boldsymbol{a}^T\boldsymbol{b} + r)^d\)

[가우시안 커널]

각 data들이 특정 landmark \(l\)과 얼마나 유사한 지 정하는 similarity 함수로 계산한 특성을 추가하는 방법입니다. similarity 함수로 가우시안 커널을 사용합니다.

\(\phi(\boldsymbol{x}, \boldsymbol{l}) = exp(-\gamma \left \| \boldsymbol{x} - \boldsymbol{l} \right \| ^2)\)

자세한 내용은 아래 강의를 참조하기 바랍니다.

2020/08/23 - [ML and DL/Machine Learning] - [Machine Learning] SVM : Kernel

 

- 커널 트릭

커널함수를 통해서 특성을 추가하는 것은 간단하고, 모든 머신러닝 알고리즘에서잘 동작합니다. 하지만 낮은 차수의 다항식은 매우 복잡한 데이터를 잘 표현하지 못하고 높은 차수의 다항식은 너무나 많은 특성을 추가하므로 모델을 느리게 만들게 됩니다. 

아까 살펴본 다항식 매핑 함수을 다시 살펴봅시다.

\(\phi(\boldsymbol{x}) = \phi(\begin{pmatrix} x_1 \\ x_2 \end{pmatrix}) = \begin{pmatrix} x_1^2 \\ \sqrt{2}x_1x_2 \\ x_2^2 \end{pmatrix}\)

변환된 벡터는 3차원이 되었습니다.

여기서 두 개의 2차원 벡터 a와 b에 2차 다항식 매핑을 적용해서 변환된 벡터를 inner product 내적을 하면 어떻게 되는지 봅시다.(2차 다항식 매핑을 위한 커널트릭).

\[\begin{align*} \phi(\boldsymbol{a})^T\phi(\boldsymbol{b}) &= \begin{pmatrix} a_1^2 \\ \sqrt{2}a_1a_2 \\ a_2^2 \end{pmatrix}^T \begin{pmatrix} b_1^2 \\ \sqrt{2}b_1b_2 \\ b_2^2 \end{pmatrix} = a_1^2b_1^2 + 2a_1b_1a_2b_2 + a_2^2b_2^2 \\ &= (a_1b_1 + b_2b_2)^2 = \begin{pmatrix} \begin{pmatrix} a_1 \\ a_2 \end{pmatrix}^T \begin{pmatrix} b_1 \\ b_2 \end{pmatrix} \end{pmatrix}^2 = (\boldsymbol{a}^T\boldsymbol{b})^2 \end{align*} \]

변환된 벡터의 내적이 원래 벡터의 내적의 제곱과 동일한 것을 볼 수 있습니다. 

\[\phi(\boldsymbol{a})^T\phi(\boldsymbol{b}) = (\boldsymbol{a}^T\boldsymbol{b})^2\]

 

핵심은 모든 Training Example에 변환 \(\phi\)를 적용하면 쌍대문제(dual problem)에 내적 \(\phi(\boldsymbol{x}_i)^T\phi(\boldsymbol{x}_j)\)가 포함될 것 입니다. 하지만 2차 다항식 변환이라면 변환된 벡터의 내적을 간단하게 \((\boldsymbol{x}_i^T\boldsymbol{x}_j)^2\)으로 바꿀 수 있습니다. 그래서 실제 훈련 샘플을 변환할 필요가 없습니다. 결과는 실제로 training example을 어렵게 변환해서 선형 SVM 알고리즘을 적용한 것과 완전히 동일하지만, 계산적인 측면에서 훨씬 효율적입니다. 이것이 커널 트릭입니다.

 

아래와 같은 커널들을 사용합니다.

선형 : \(K(\boldsymbol{a}, \boldsymbol{b}) = \boldsymbol{a}^T\boldsymbol{b}\)

다항식 : \(K(\boldsymbol{a}, \boldsymbol{b}) = (\gamma\boldsymbol{a}^T\boldsymbol{b} + r)^2\)

가우시안 RBF : \(K(\boldsymbol{a}, \boldsymbol{b}) = exp(-\gamma \left \| \boldsymbol{x} - \boldsymbol{l} \right \| ^2)\)

시그모이드 : \(K(\boldsymbol{a}, \boldsymbol{b}) = tanh(\gamma\boldsymbol{a}^T\boldsymbol{b} + r)\)

 

댓글