본문 바로가기
Archive/TIL

[TIL] 0729 아침스터디 - Kernel Trick

by 다람이도토리 2022. 7. 29.

들어가기

분류 문제에서, 선형 분류로 풀 수 없는 상황이 여럿 존재할 것이다.
이를 해결 할 수 있는 방법 중 하나가 Kernel Trick이다.

다음과 같이, 일차원 상에, 데이터가 놓여있다고 하자, 초록색 데이터와 파란색 데이터는 선분 하나만으로는 구분할 수 없다. 하지만, 여기에 차원을 추가하면 어떻게 될까? 즉

x -> {x, x^2}

으로 보내는 mapping을 고려하자.

2차원으로 보낸 순간, 빨간 구분선을 기준으로, 초록색 데이터와 파란색 데이터의 구분이 가능해졌다.

이렇게 쉬운 상황만 고려하면, 좋을텐데, 문제는 일반적으로는 mapping 이 되는 함수를 찾기가 매우 어렵다는 것이다.

Kernel이란?

Kernel 이란, mapping 이후에도 "내적"의 값을 유지시켜주는 함수를 의미힌다. 

자주 쓰이는 Kernel 함수의 예시는 다음과 같다.

Kernel Trick, 그리고 왜 갑자기 내적 이야기가 나오는가?

갑자기 왜 내적이 튀어나왔는가, 그리고 Kernel Trick이 뭔지를 한번 생각해보자.

우선, Kernel은 위의 내용과 정의만 보면, 고차원으로 매핑시키며, 내적도 한번에 실시해주고 있다.
즉, 다시 말해 Kernel은 데이터를 어디에 매핑했는지, 그 구성은 어떤지, 내적은 어떤지는 아무튼 관심 없고, 최종 결과값을 같게 해주는데에 집중하고 있다. 이렇게 할 경우, 매핑 함수를 구하는 과정도, 내적의 복잡한 계산량도 줄어든다는 장점이 존재한다.

하지만, 그래도 문제가 하나 있는데, "내적"이 왜 튀어 나왔는지에 대해서는 아직도 답하진 않았다.
이는, SVM을 생각해보면, 답을 얻을 수 있다.

결정 경계를 구하는 문제로, 다시 돌아오면 SVM의 궁극적인 목적은, 최적의 결정경계를 찾는 문제인데, 최적의 결정경계는 Margin, 즉 각 class의 원소 중 결정경계와 가장 가까운 원소와의 거리를 최대화 하는 것이다.

그리고 이 거리는 내적을 통하여 구할 수 있기 때문에, 내적 값을 구해두는 과정이 반드시 필요하다!