by Yngie

커널 기반 학습(kernel based Learning)

|

해당 게시물은 고려대학교 강필성 교수님의 강의를 바탕으로 작성한 것입니다.

kernel based Learning

커널 기반 학습(kernel based Learning)은 90년대부터 딥러닝이 대두되기 전인 2000년대 까지 머신러닝의 주류(?)에 있던 모델의 기반이 되는 학습 방법입니다. 본격적으로 커널을 사용한 모델을 알아보기 전에 커널 기반의 학습을 이해하는 데 필요한 몇 가지 개념에 대해서 알아보겠습니다.

Shatter

첫 번째로 알아야 할 개념은 Shatter입니다. 수 개의 인스턴스가 있을 때 특정 함수에 의해서 Shatter 된다는 것은 개별 인스턴스를 가능한 모든 조합의 이진 레이블로 구분해 낼 수 있다는 것을 의미합니다. 말로 설명하는 것은 어려우니 예시를 들어 설명해보겠습니다. 2차원 평면 상에 1개의 점이 있다고 하고 이를 직선 분류기로 분류해보겠습니다.

1point

이 경우에는 위와 같이 하나의 점을 빨간색 클래스로 분류하는 경우와 파란색 클래스로 분류하는 경우의 2가지가 있습니다. 그렇다면 직선 분류기로 2개의 점을 분류해보겠습니다. 이 경우에는 아래와 같이 Shatter가 가능합니다.

2point

위와 같이 두 점을 모두 빨간색 클래스로 분류하는 경우(1)와 파란색 클래스로 분류하는 경우(4)가 있습니다. 그리고 각 점을 다른 클래스로 분류하되 왼쪽 점을 빨간색 클래스로 분류하는 경우(2)와 파란색 클래스로 분류하는 경우(3)까지 총 4개의 경우를 사용하여 Shatter할 수 있습니다. 3개의 점이 있는 경우에는 아래와 같이 분류할 수 있습니다.

3point

이미지 출처 : github.com/pilsung-kang/Business-Analytics-IME654

위와 같이 3개의 점을 직선 분류기로 분류하는 경우에도 8개의 케이스를 사용하면 Shatter된다는 것을 알 수 있습니다. 점을 또 하나 더 늘려 4개인 경우를 살펴보도록 하겠습니다.

4points

이미지 출처 : github.com/pilsung-kang/Business-Analytics-IME654

점이 4개인 경우 모든 점을 다른 클래스로 분류하는 데에 대한 경우의 수는 위와 같이 16개입니다. 하지만 직선 분류기를 사용하면 마지막 2개 클래스로 분류할 수 없습니다. 흔히 XOR문제라고도 불리는 두 경우는 어떤 선형 분류기를 사용하더라도 분류할 수 없습니다. 따라서 직선 분류기는 점 4개부터는 Shatter할 수 없게 됩니다. 이렇게 분류기를 사용하여 모든 이진 레이블 조합으로 나누는 행위를 Shatter라고 합니다.

VC Dimension

다음으로 VC Dimension(Vapnik-Chervonekis dimension)에 대해서 알아보겠습니다. VC Dimension은 어떤 가설 공간의 Capacity를 측정한 지표입니다. Capacity란 특정 모델의 복잡도와도 같으며, 모델의 표현력이나 유연성 등을 나타내는 지표이빈다. VC Dimension은 특정 분류기에 의해서 최대로 Shatter될 수 있는 점의 수로 정해집니다. 위와 알아본 바와 같이 2차원 상에 있는 직선 분류기의 $VC = 3$ 이라고 할 수 있습니다.

Structure Risk Minimization

특정 모델의 복잡도를 알고 있다면 구조적 위험 최소화(Structure Risk Minimization, SRM)를 통하여 최선의 모델을 이끌어 낼 수 있습니다. 구조적 위험 최소화는 경험적 위험 최소화(Empirical Risk Minimization, ERM)와 비교되는 개념입니다. 만약 존재하는 모든 데이터를 모을 수 있다면 우리는 그 데이터에만 맞는 모델을 만들면 될 것입니다. 학습 데이터에 최적화 된, 즉 경험적 위험만을 최소화하는 모델을 생성하면 되지요.

하지만 현실적으로 모든 데이터를 가지는 것은 불가능하기 때문에 일반화로부터 발생하는 오류를 고려해야 합니다. 즉 모델의 구조로부터 발생하는 위험을 최소화 해야 하는 것이지요. 아래 그림을 통해서 구조적 위험 최소화에 대해서 알아보겠습니다.

srm

이미지 출처 : www.researchgate.net

위 그림에서 X축을 나타내는 $h$는 모델의 복잡도, 즉 VC Dimension 입니다. Capacity를 모델의 복잡도를 나타내는 지표이므로 $h$가 증가 할수록 Capacity에 의한 오차, 즉 일반화로부터 발생되는 오차(Variance)가 증가하는 것을 알 수 있습니다. 반대로 복잡한 모델을 사용할수록 학습 데이터에는 더 잘 맞춰지기(Fitting) 때문에 그로부터 발생하는 오차(Bias)는 점점 줄어드는 것을 볼 수 있지요. 분산(Variance)으로부터 발생하는 오차와 편향(Bias)으로부터 발생하는 오차는 본 블로그의 이곳에서 더 자세히 알아보실 수 있습니다.

결국 모델의 구조적 위험은 학습 데이터에 대한 오차, 즉 경험적 위험에는 반비례하지만 복잡도에는 비례함을 알 수 있습니다. 따라서 이러한 트레이드오프(Trade-off)를 고려하여 구조적 위험을 최소화하는 지점에서의 모델이 최선의 모델이 되겠습니다. 이를 수식으로 알아보겠습니다. 함수 $f$로부터 나타나는 경험적 위험을 $R_{\text{emp}}[f]$ 라 하면 모델의 구조적 위험은 아래와 같이 나타낼 수 있습니다.

\[R[f] = R_{\text{emp}}[f] + \sqrt{\frac{h(\ln\frac{2n}{h}+1) - \ln(\frac{\delta}{4})}{n}}\]

위 식에서 $n$은 학습 데이터의 수를 나타냅니다. 즉 경험적 위험이 동일할 때, 데이터의 수 $n$이 증가하면 Capacity로부터 발생하는 오차가 감소하게 되고 모델의 총 오차 역시 감소하게 됩니다. 하지만 VC Dimension인 $h$가 증가하면 Capacity로부터 발생하는 오차가 증가하게 되고 모델의 총 오차 역시 증가하게 됩니다.

However

구조적 위험 최소화(SRM)때문에 2000년대 까지는 데이터의 수 $n$보다 특성의 수 $V$가 적어야 한다는 것, 즉 $n > V$ 가 모델에서의 불문율로 여겨졌습니다. 하지만 딥러닝이 대두되면서 이런 불문율을 어기면서도 좋은 성능을 나타내는 모델이 등장하고 있습니다.

dl_para1

이미지 출처 : github.com/pilsung-kang/Business-Analytics-IME654

구조적 위험 최소화에 따르면 파라미터가 매우 많은 깊은 신경망의 경우에는 일반화로부터 발생하는 오차가 엄청나게 증가해야 합니다. 하지만 여러가지 보정을 통해 실제 딥러닝 모델은 매우 많은 파라미터에도 좋은 일반화 성능을 보이고 있습니다. 아래는 이미지 처리에 사용되는 다양한 모델의 파라미터 수 $p$ 와 학습 데이터의 수 $n$ 의 비율을 구하여 나타낸 것입니다. Wide Resnet의 경우 학습 데이터 대비 거의 180배에 달하는 파라미터 숫자를 가진 모델임을 볼 수 있습니다.

dl_para2

이미지 출처 : github.com/pilsung-kang/Business-Analytics-IME654

하지만 커널 기반의 방법에서는 여전히 $n > V$라는 불문율을 지켜야 하며 구조적 위험 최소화 역시 중요하게 다루어야 합니다. 최근 딥러닝이 다양한 분야에서 좋은 성능을 기록하고 있는 것은 사실입니다. 하지만 하나의 좋은 모델이 모든 데이터 형태에 대해서 좋으리란 법은 없으며 실제로도 데이터마다 좋은 성능을 나타내는 알고리즘이 다릅니다. “(최적화에도) 공짜 점심은 없다”라는 말처럼요. 그런만큼 커널 기반의 학습 방법에 대해서도 잘 알아야 할 것입니다. 그러므로 앞으로의 몇 가지 게시물은 여러 커널 기반의 학습을 적용한 모델에 대해 알아보겠습니다.



Comments