해당 시리즈는 LG에서 지원하는 LG Aimers의 교육 내용을 정리한 것으로, 모든 출처는 https://www.lgaimers.ai/ 입니다.
이번 시간에는 대표적인 Classification
모델 몇가지와 관련 지식을 알아본다.
linear classification
의 경우 hyper plane
을 구성하는 모델의 파라미터가 w
일때, hyper plane
의 normal
한 방향으로 hyperparameter w vector
를 구성한다.
하지만 위와 같은 상황에서 서로 다른 hyper plane
을 그렸을 떄 그림 속의 데이터 샘플들에 대해서는 비슷한 loss
를 제공하게 될 것이지만, 실제 세상의 데이터 샘플에서는 보이지 않는 다양한 샘플이 존재하여 서로 다른 hyper plane
들은 각기각색의 성능을 제공할 수 있다.
위 그림의 W1
W2
W3
중 가장 적절한 hyper plane
은 W2
다.
W1
의 경우 잘 분류했지만, 위 그림처럼 새로운 데이터 샘플이 뒤쪽에 나타나버린 경우 오류가 발생하게 된다.
W3
의 경우도 마찬가지로, 잘 분류했지만 새로운 데이터 샘플이 위 그림처럼 존재하는 경우 오류가 발생한다.
하지만 W2
의 경우 적절한 중간 공간에 배치되어 새로운 데이터 샘플이 만들어져도, 잘 분류하는 것을 알 수 있다.
즉, hyper plane
의 가장 적절한 위치는 positive sample
와 negative sample
의 중간위치다.
Support Vector Machine
의 핵심 아이디어는 hyper plane
을 결정하는 margin
이다.
위 그림과 같이 가장 가까운 positive sample
과 negative sample
을 기준으로 최대 margin
폭을 갖는 최적화 방법을 생각한다.
svm
은 support vector
로 칭하는 포인트 간의 거리를 최대화 하는 최적화 전략이다.
support vector
는 positive sample
과 negative sample
중 hyper plane
과의 거리가 더 짧은 sample
을 의미한다.
해당 포인트는 모델 classification
의 성능을 좌지우지하는 민감한 데이터 포인트다.
이런 특성으로 인해 outlier
가 발생해도 견고하게 잘 대처할 수 있다.
margin
은 support vector
와 h(x)
와의 거리를 2배하여 구한다.
수식으로 나타낼 경우 다음과 같다.
떨어져 있는 support vector
간 거리를 최소화하기 위해 svm
에서 다양한 최적화 방식을 이용한다.
Hard margin SVM
: linear separability
를 가정하여 h(x)
와 support vector
사이의 영역에는 어떠한 샘플도 존재하지 않을 것으로 생각Soft margin SVM
: 어느정도의 error
는 용인하는 방식의 최적화 방법Nonlinear transform & Kernel trick
: SVM
이 linear separable
한 hyper plane
을 이용해 수행하기 때문에 linear
한 경우에만 사용할 수 있다는 단점을 극복하기 위해 만들어졌다. 이를 이용할 경우 아래의 그림과 같이 2차원의 샘플을 보다 고차원의 샘플로 맵핑하는 함수를 이용해 수행한다.hard-margin linear SVM
에서는, h(x) = 0
hyper plane
을 두고 margin
을 다음과 같이 계산한다.
positive sample
을 지나는 h(x)
를 위의 수식, negative sample
을 지나는 h(x)
를 아래 수식으로 나타낸다.
SVM
에서의 모든 샘플은 다음과 같이 나타낸다.
margin
에 대한 식을 정리하면, 아래와 같이 정리된다.
즉, 결론적인 SVM
에서 풀고자하는 문제는 ||w||
를 최소화하여 margin
을 극대화하는 것이다. 이를 SVM Primal Problem
이라고 여긴다.
kernel fucntion
은 linearly separable
하지 않은 데이터 샘플이 있다고 할 때, 차수를 높여 linear separable
하게 만드는 과정에 사용한다.
아래의 그림과 같이 2차원의 좌표상에서 표현되는 정보를 kernel trick
과정을 통해 사과와 체리를 정확하게 구분하는 decision surface
를 정의한다.
kernel
에서 주로 사용하는 기법들은 다음과 같다.
이들은 각각 고유한 파라미터가 있어 사용자가 선택해야하며, 선택한 값에 의해 서로 다른 형식의 plane
으로 매핑하게 된다.
Deep Nurual Network
의 기본 개념인 ANN
은 non-linear classification model
이다. 이는 인간의 뇌신경망을 모사한 Perceptron
개념이다. 우리 뇌에서 일어나는 작업과 유사하게 수행된다.
먼저 이전의 노드 x0
등을 통해 각각의 고유 파라미터 W0
W1
W2
를 곱해 linear combination
으로 만든 score
값을 이용한다.
Activation Functon
은 linear combination
으로 만든 score
값을 입력으로 삼아 sigmoid
와 같은 함수를 통해 non-linear
관계로 매핑한다.
sigmoid
도 activation function
의 한 종류지만, Z
값이 크거나 작을 경우 gradient
가 너무 작아 학습을 진행함에 따라 학습량이 계속 작아지는 문제가 있다.
이를 보완하기 위해 만든 activation function
으로 ReLU
, Leaky ReLU
, tanh
등이 있다.
해당 함수들은 미분을 하더라도 gradient
가 1로 수렴하게끔 설계되어 학습이 멈추지 않는다.
DNN
의 자세한 연산과정을 알 수 없지만, 각각의 계층을 따라서 학습하게 되는 feature
의 어떤 형태가 달라진다고 알려져 있으며, non-linear
함수들이 계층적으로 쌓여감에 따라 signal space
에서 복잡한 신호들의 패턴을 조금 더 정확하게 분류할 수 있다.
위 그림처럼, 정확한 분류를 위한 linear plane
의 구성이 어려운 경우, 여러 개의 계층으로 이루어진 DNN
에서 계층을 통과하며 복잡한 모델을 구성해 잘 분류한다.
linear plane
을 통해서 해결할 수 없는 대표적인 문제로, XOR
문제가 있다.
어떤 방향으로 plane
을 그려도 0과 1을 정확히 구별할 수 없다.
하지만, multilayer perceptron
을 이용하면 XOR
문제도 간단히 해결할 수 있다.
위 그림과 같이, 단순한 2계층으로 구성된 함수가 있다.
y1
y2
를 구하고, 이를 이용해 최종 답인 y-
를 내놓는다.
사전에 정의된 W
와 입력 값 X1
X2
를 곱해 각 Y
의 출력을 생성하고 sigmoid
함수를 통해 0이나 1에 매핑한다.
sigmoid
를 통해 도출된 Y1
Y2
를 정의된 W
와 곱해 출력을 생성하고, 다시 sigmoid
함수를 통해 최종 결과를 도출한다.
위와 같은 과정을 입력 (0, 0)
(0, 1)
, (1, 0)
, (1, 1)
에 대해 수행하면, XOR
문제가 해결된다.
결론적으로 nerual network
는 linear classification
문제에서 수행할 수 없는 non-linear
한 문제들을 잘 해결하며, 고차원의 신호나 이미지와 데이터에 더 정확하게 동작한다.
모델학습 과정에서 학습 파라미터의 학습은 Chain rule
을 통해 진행하는데, DNN
의 계층이 커질수록 Gradient
가 줄게되어 깊은 레이어에서 학습효과가 없어지는 현상이 발생한다.
해당 문제는 Back Propagation
과정, Pre-training
, fine-tuning
등으로 극복한다.
Supervised Learning의 기본원리는, 입력을 넣고 결과 값 쌍으로부터 에러를 추정하여 해당 에러를 최소화하는 과정으로 최적화를 통해 모델 피팅을 수행하는 것이다.