안녕하세요. 이번 포스트에선 Support Vector Machine에 대해 다뤄보고자 합니다.
개인적으론 머신 러닝 파트에서 가장 중요하다 생각되어, 조금 더 열심히 정리해 보았습니다.
잘못된 부분 등이 있다면 언제든 피드백 부탁드립니다.
Support Vector Machine ?
Support Vector Machine, 줄여서 SVM은 분류, 회귀 및 이상 탐지 과제 모두 수행 가능한 ML 모델입니다.
전통적인 ML 모델들 사이에서 성능이 매우 뛰어난 편에 속하며, 강건한 성능의 모델을 만들기에 적합합니다.
이러한 강건한 성능은 SVM 모델의 학습 방식에서 나타나는 특징이라고 할 수 있습니다.

지금까지 SVM에 대한 내용을 다룰 때, 위 이미지와 같은 형태로 설명하는 자료들을 자주 볼 수 있었습니다.
다음 파트에서부턴 SVM에 대한 여러 내용들을 풀어보며, 정리해보도록 하겠습니다.
Support Vector, Hyperplane and Margin
SVM의 기본 개념은 우리가 잘 알고있는 선형 분류의 개념으로, 데이터를 잘 구분하는 직선을 찾도록 학습됩니다.
다만 추가적으로 Support Vector, Hyperplane 그리고 Margin 이라는 핵심 개념들을 포함하고 있습니다.

위에서의 빨간 직선을 초평면(Hyperplane), 초평면에 가까운 데이터를 서포트 벡터(Support Vector)라고 합니다.
그리고 초평면에서부터 서포트 벡터까지의 거리를 마진(Margin)이라 정의합니다.
마진의 크기는 직선과 점 사이의 거리를 구하는 공식과 동일합니다.
또한 초평면의 경우, 다루는 데이터의 차원에 맞추어 형태가 달라지며 선, 면, 공간 등으로 정의될 수 있습니다.
이러한 개념들을 기본으로 다음 파트에선, SVM의 학습 과정에 대해 다뤄보도록 하겠습니다.
SVM Algorithm (Training, Optimization)
앞서 SVM은 어떤 선을 기준으로 데이터를 분류하는 선형 분류를 기반으로 한다고 설명드렸습니다.
다만 학습하는 과정에서 약간의 다른 점으론 초평면을 기준으로 하지만, 마진을 최대화하도록 학습(최적화)합니다.

마진을 최대화하도록 학습한다는 것이 어떠한 의미일까요?

마진은 위와 같은 형태로 정의되며, W는 법선 벡터로 SVM이 학습하는 파라미터를 의미합니다.
마진이 최대가 되기 위해선 전체 가중치의 크기가 작아져야만 마진이 최대가 되도록 정의됩니다.
이렇게 생각했을 때, 무조건 W가 아주아주 작아져야 하겠구나! 로 볼 수 있지만 다르게 생각해볼 수 있습니다.
우리가 가진 데이터는 움직이지 않습니다. 다만 데이터에 맞추어 우리의 직선이 이리저리 기울여질뿐입니다.
이 과정에서 SVM은 직선(초평면)과 가장 가까운 데이터(서포트 벡터)와의 거리가 최대이도록 직선을 배치합니다.
설령 직선의 기울기가 아주 가파르거나, 아주 완만하다고 하여도 마진만 최대가 되면 문제 없습니다.
다시 말해서, 마진을 최대로 한다는 건 가중치가 할 수 있는만큼 최대한 어떻게든 파라미터를 조정하는 것입니다.
이 과정에서 W 가중치의 크기가 커질 수도 있지만, 그 상태가 마진이 최대이며 최선인 상태라는 것입니다.
이러한 직선(초평면)의 기울기는 학습에 사용할 데이터의 분포에 따라 그때그때 다르게 설정된다고 볼 수 있습니다.
결과적으로 학습된 SVM은 마진을 최대화하도록 학습되기에 효과적인 분류를 위한 최적의 초평면을 찾게됩니다.
그렇기에 앞서 SVM이 단순 선형 분류 대비, 강건한 성능을 갖는 모델이라고 말씀 드렸던 이유입니다.
여기까지 봤을 때, 어느 정도 SVM의 마진과 관련한 내용이 이해가 되셨을까요?
아주 중요한 내용이기에, 여러 자료를 함께 보시며 천천히 이해해보는 것을 추천드립니다!
다음 파트에선 학습된 SVM이 새로운 데이터에 대해 추론하는 과정에 대해 다룹니다.
Inference (inner product, 내적)
학습된 SVM을 활용하여 새로운 데이터를 추론하는 과정은 일반적인 선형 분류와 다르지 않습니다.
간단한 개념이지만, 본인이 잘 알고있는지 한번 짚고 넘어가는 것도 좋을 것 같습니다.

ML 모델들은 데이터를 구분하기 위한 직선(초평면)을 가지며, 이는 우리가 잘 아는 가중치(파라미터)입니다.
내 데이터가 2차원 데이터라고 가정했을 때, 2차원 평면 위에는 데이터의 수만큼 많은 점이 놓여있을 것입니다.
만약 평면 위에, 학습에 사용하지 않은 새로운 점이 나타난다면 우리의 모델은 이 점을 어떻게 구분할까요?
이는 우리에게 잘 알려져 있는 내적을 통해 계산하며, 입력 데이터와 가중치를 활용합니다.

간단한 예시를 들어보면, 위와 같은 형태로 내적을 계산하고 내적의 결과 부호에 따라 클래스를 부여합니다.
여기서 더 나아가, 결과에 Sigmoid 함수를 씌워준다면 우리가 잘 아는 0~1 사이의 확률로 나타내게 됩니다.
SVM의 학습 아이디어는 약간 복잡했지만, 추론 과정은 일반 분류기와 다르지 않습니다. 잘 이해 되셨을까요?
다음 파트에선 Hard Margin SVM의 한계와 Soft Margin SVM에 대해 다뤄보도록 하겠습니다.
Hard Margin SVM and Soft Margin SVM
지금까지 다루었던 내용들은 모두 Hard Margin SVM에 대한 내용이었습니다.
이는 초평면과 서포트벡터 사이에 어떠한 데이터도 있을 수 없다는 전제하에 학습되는 엄격한 기준을 갖고 있습니다.
그렇기에 복잡한 데이터에 대해선 해가 없을 수도 있고, 일반화 성능 확보에서 어려움을 겪을 수 있습니다.
엄격한 기준의 Hard Margin보다 조금 더 유연하고 일반화 성능이 보장된 방법은 없을까요?
이러한 물음에 대한 것이 바로 Soft Margin SVM이며, 이는 우리에게 조금 더 친근한 형태로 학습(최적화)됩니다.

Soft 방식은 Hard와는 다르게 마진 내에 데이터가 존재할 수 있도록 정의됩니다.
다만 슬랙(Slack) 변수라는 값을 기반으로, 이를 최적화 문제에 패널티의 형태로 추가적으로 적용해줍니다.
슬랙 변수는 데이터 포인트가 SVM의 마진 조건을 어느 정도 어기고 있는지를 오차 형태로 나타낸 값입니다.

슬랙 변수의 오차인 패널티는 힌지 손실이라는 것을 기반으로 측정하여 나타냅니다.
이는 마진 내에 존재하는 포인트가 어느 정도 마진 조건을 어기는지에 대해서만 패널티를 계산합니다.

해당 손실을 모두 합하여 나타낸 것을 패널티 항의 합으로 정의하고, 최적화 문제를 정의할 수 있게됩니다.
기본적으로 기울기를 최소화하여 마진을 최대화하는 항에 추가적인 패널티를 붙이는 방식으로 구성됩니다.
이를 통해 최적화 문제를 푸는 과정에서 뒤쪽 패널티(마진 오차/규제) 또한 동일하게 최소화하라는 의미입니다.
또한 패널티는 C라는 하이퍼 파라미터로 우리가 조정할 수 있는데, 방식에 따라 학습 양상이 변화하게 됩니다.
C라는 패널티에 대한 가중치가 높은 경우, 마진 최대화보다 더 중요하게 생각하여 오차를 줄이게 됩니다.
반대의 경우엔 오차를 조금 많이 허용하더라도, 마진을 최대로 하도록 최적화됩니다.
어느 정도의 가중치를 부여하느냐에 따라 변화하기에 까다롭고, 적절한 파라미터의 탐색이 매우 중요합니다.
하이퍼 파라미터를 세심하게 조정하는 과정에서 고될 수 있지만, 그만큼 훌륭한 성능을 보장합니다.
여기까지 Soft Margin SVM과 함께 SVM에 대해 어느 정도 다뤄보고 정리해보았습니다. 잘 이해 되셨을까요?
마치며
엥? 왜 갑자기 끝나? 벌써 끝나? 라고 생각하실 분들도 꽤나 있으실 것 같습니다..
SVM에 대한 내용 중 특히나 Kernel Trick에 대한 내용이 큰 비중을 차지하기 때문이라고 생각됩니다.
다만 이전에 리뷰한 PCA와 동일하게 겹치는 주제로, 제대로 준비하여 정리하는 것이 낫다고 판단하였습니다.
최대한 늦지 않도록, 이에 대해선 추후 깊은 이해와 함께 다시 한번 리뷰할 수 있도록 준비해보겠습니다.
개인적으로 SVM은 PCA와 함께 ML 분야에서 개념적, 아이디어적으로 매우 중요하다 생각하고 있습니다.
제 포스트 이외에도 여러 자료, 추가적인 스터디를 통해 깊게 이해하고 넘어가심을 추천드립니다.
여기까지 긴 글 읽어주셔서 감사합니다.
'Machine Learning > Machine Learning' 카테고리의 다른 글
| PCA (Principal component analysis, 차원 축소) (4) | 2024.10.08 |
|---|---|
| 로지스틱 회귀 (Logistic Regression) (4) | 2024.09.03 |
| 선형 회귀 (Linear Regression) (3) | 2024.09.02 |