본 포스팅 시리즈는 다양한 머신러닝 테크닉에 대해 수학적 관점과 실용적 관점에서 정리한다.
필자는 수학을 전공했기 때문에 수학적 접근과 용어에 대해 익숙하게 사용한 것이 있지만, 수학을 전공하지 않은 사람들에겐 다소 낯선 접근과 용어가 있을 수 있다.
최대한 그러한 부분을 자세히 설명하려 노력하였지만 필자의 타전공자에 대한 '공감능력부족'으로 효과적으로 전달되지 못한 부분이 있을 것으로 생각된다.
이 글을 읽어주시는 분께 일차적으로 감사드리며, 해당 부분에 대해 질문이나 코멘트를 남겨주시는 분께는 거듭제곱으로 감사드림을 말씀드린다.
서포트 벡터 머신은 딥러닝이 등장하기 이전에 가장 유명하고 성능 좋은 머신러닝 모델이었다고 한다.
현재는 다소 실무에서 사용되는 정도가 줄어들었겠지만, 서포트 벡터 머신에 적용되는 다양한 수학적 테크닉들은 인공지능을 이해하고 연구하는 데에 여전히 훌륭한 인사이트를 준다고 생각한다.
특히 서포트 벡터 머신의 아이디어는 유클리드 기하학과 최적화 이론으로 설명이 된다는 점은 수학자들에게 있어서 굉장히 매력적이다.
본 포스팅의 내용은 다음의 자료들을 참고했다.
- Mathematics for Machine Learning (Deisenroth, Marc Peter and Faisal, A. Aldo and Ong, Cheng Soon)
- The Elements for Statistical Learning (Trevor Hastie, Robert Tibshirani, Jerome Friedman)
- 김민준님(이화여자대학교, 수학과 석사)의 SVM Lecture note
- 김원화 교수님(포항공과대학교, 인공지능대학원 교수)의 데이터 마이닝 Lecture note
- Hands-On Machine Learning with Scikit-Learn, Keras, and Tensorflow (Aurelien, Geron)
지난 포스팅까지 SVM이 마진을 최대화 하도록 선형결정경계를 만드는 알고리즘임을 살펴보았다.
그렇다면 마진을 최대화 하면 좋은 점이 무엇일까?
이번 포스팅에서는 마진 최대화의 이점에 대해 알아보자.
이진분류 문제는 의사결정 문제라고 불리기도 한다.
우리가 어떤 의사를 할지 말지 결정할 때는 가지고 있는 정보를 바탕으로 신용과 의심의 줄타기(Trade-off)를 해야한다.
가지고 있는 정보를 완벽한 정보라고 생각하고 너무 믿어버리면 편향된 선택을 할 가능성이 높아진다.
그렇다고 가지고 있는 정보를 너무 의심하면 아무런 결정도 내릴 수 없다.
그러므로 현재의 정보를 최대한 믿으면서 동시에 의심의 여지도 최대한 마련해 두는 것이 적절한 의사결정 기준일 것이다.
SVM은 위와 같은 생각을 기하학적으로 해석해 풀어낸 것이다.
결정경계에서 샘플까지의 거리를 의사결정에 대한 신용도라고 해석하는 것이다.
(신뢰도라는 단어가 의미상 더 적절하겠으나, 통계학적 관점의 신뢰도 개념와 구별하기 위해 신용도라는 단어를 선택했다.)
현재의 데이터를 최대한 믿는다는 것은 현재의 데이터가 올바로 분류되어 있을 것으로 생각하고 이를 완벽히 분류하는 결정경계를 선택한다는 것을 의미한다.
의심의 여지를 최대한 마련해 둔다는 것은 현재 의사결정 기준이 아직 모르는 데이터에 대해서는 완벽하지 않을 수 있음을 인정하고 현 상황에서 마진이 최대가 되는 기준을 택한다는 것이다.
마진을 결정하게 되는 각 클래스의 샘플을 서포트 벡터라고 부른다.
훈련 데이터에서 서포트 벡터를 어떤 것으로 선택하느냐에 따라 결정경계가 변하게 되므로, 서포트 벡터는 새로운 데이터가 들어왔을 때 클래스를 구분하는 기준이 되는 샘플이라고 할 수 있다.
서포트 벡터를 선택하는 기준은 일차적으로 훈련 데이터를 완벽히 분류할 수 있도록 선택한다.
현재 선형분류 문제를 풀고 있는 상황을 가정하고 있음을 명심하자.
그러므로 이러한 서포트 벡터는 항상 존재하며 선택할 수 있을 것이다.
이는 훈련 데이터가 앞으로의 데이터를 예측 하는데에 유용할 것이라는 신용을 바탕으로 한다.
서포트 벡터를 선택하는 다음 기준은 서포트 벡터를 최대한 의심하는 방향으로 선택하는 것이다.
앞으로의 데이터는 어디서 나타날지 알 수 없다.
그러므로 마진이 최대가 되는 결정경계를 택하면 현재 데이터로 설명할 수 없는 데이터를 만나더라도 올바르게 분류할 가능성이 높을 것이다.
이는 훈련 데이터만을 너무 믿어서는 안된다는 의심을 바탕으로 한다.
아래의 두 결정경계를 비교해보자.
노란색 결정경계는 마진이 좁고 초록색 결정경계는 마진이 넓다.
지금까지의 논의에 따르면 서포트 벡터는 훈련 데이터 중에서 가장 의심가는 샘플이라고 할 수 있다.
어떤 결정경계더라도 신용도가 높은 샘플은 문제가 되지 않는다.
문제는 결정경계 근방에 있는 데이터에서 발생한다.
노란색 결정경계의 경우 서포트 벡터의 미동(Perturbation)에 대해 민감하게 판단이 바뀐다. (노란색 원)
따라서 노란색 결정경계를 신뢰한다면, 결정경계 근방의 테스트 데이터에 대해서 결정오차가 커질 가능성이 높아진다고 추측할 수 있다.
그러나 초록색 결정경계의 경우 서포트 벡터의 미동에 대해서도 판단이 민감하지 않다. (초록색 원)
따라서 초록색 결정경계를 신뢰한다면, 결정경계 근방의 테스트 데이터에 대해서 결정오차가 커질 가능성이 상대적으로 낮아진다고 추측할 수 있다.
이런 점에서 마진이 넓은 결정경계가 더 유용할 것이라 생각할 수 있다.
머신러닝의 관점으로 설명하자면 마진이 좁은 결정경계는 훈련 데이터에 대한 오버피팅 문제를 야기한다고 할 수 있다.
두 결정경계 모두 훈련 데이터에 대해서는 높은 정확도를 보여주지만, 노란색 결정경계는 훈련 데이터를 신용하는 정도가 과도하게 커 앞으로 나타날 데이터에 대해서는 다소 낮은 정확도를 보여줄 수 있다.
따라서 SVM은 마진을 최대화하는 것으로 현재 데이터로부터 결정경계를 가능한한 멀리 떨어트려놓음으로써 오버피팅의 위험을 가능한한 최소화하고자 했다고 볼 수 있다.
이것이 SVM 모델이 우수한 성능을 낼 수 있었던 이유 중 하나일 것이다.
지금까지 SVM이 왜 마진을 최대화하고자 하였는지에 대해 논의해보았다.
그러나 지금까지 논의는 선형분류가 가능하다는 가정을 해왔다.
실제 데이터는 노이즈나 이상치가 있는 경우가 많아 선형분류가 어렵다.
이런 경우에 하드마진 SVM은 제대로 작동하기 어렵다.
다음 포스팅에서는 이상치나 노이즈가 있는 데이터에 대해서도 SVM이 잘 작동할 수 있도록 교정한 소프트 마진 SVM(Soft-margin SVM)에 대해서 다루어보겠다.