차원의 문제

기계학습 2014. 9. 12. 10:37

차원(dimensionality)에 대한 두 가지 상반된 시각에 대해 다뤄봅니다.


그 한가지는 어떤 문제를 접할 때 차원을 낮추어서 해결하고자 하는 것이고, 다른 한 가지는 오히려 차원을 높여서 문제를 풀고자 하는 것입니다.


먼저 이 글은 어떤 기존의 이론을 정리한 글이 아니라 차원의 문제에 대한 개인적인 생각, 단편적인 지식 등을 정리한 글임을 밝힙니다.



1. 차원이란?


0차원, 1차원, 2차원, 3차원, ...


기하학적으로 보면 0차원은 점의 세계, 1차원은 선의 세계, 2차원은 면의 세계, 3차원은 공간의 세계이다.


보통 3차원까지는 머리 속으로 쉽게 상상이 가지만 4차원 이상부터는 잘 형상화가 되지 않는다.


하지만 4차원도 형상화가 가능하며 이를 그림으로 나타내면 아래와 같다.


<그림 1> 출처: 위키피디아(차원)


4차원은 한 예로 우리가 알고있는 3차원 공간에 시간축을 하나 더 더한 것을 상상하면 된다.


우리 눈앞의 어떤 지점은 3차원 공간에서 (x,y,z)로 표현할 수 있다. 하지만 여기에 시간축을 더하면 동일한 지점도 어제의 그 지점, 오늘의 지점, ... 과 같이 시간에 따라 서로 다른 지점이 될 수 있다. 즉, (x,y,z,t)와 같이 4차원의 세계에서의 한 점으로 표현할 수 있다.


앞서 기하학적 관점 외에도 어떤 시스템의 독립변수의 개수로 차원을 정의할 수도 있다. 이 경우에는 4차원 뿐만 아니라 얼마든지 그 이상의 고차원의 세계를 상상할 수 있다. 예를 들어, 헬리콥터의 움직임이 프로펠러 축의 회전속도, 4개의 프로펠러 날개 각각의 경사각도, 꼬리날개의 회전속도 이 6가지 요인에 의해 결정된다고 가정하면 헬레콥터의 움직임을 결정하는 파라미터 공간은 6차원 공간으로 볼 수 있다.



2. 첫번째 시각: 차원의 저주(curse of dimensionality)


차원과 관련된 문제에 대한 대부분의 접근은 어떻게든 차원을 낮춰서 문제를 단순화시키고자 하는 것이 일반적일 것이다.


차원의 저주(curse of dimensionality)...


기계학습(machine learning), 데이터 마이닝(data mining) 등에서 사용하는 용어로 '차원의 저주'란 말이 있다. 데이터의 차원(dimensionality)이 증가할수록 해당 공간의 크기(부피)가 기하급수적으로 증가하기 때문에 동일한 개수의 데이터의 밀도는 차원이 증가할수록 급속도로 희박(sparse)해진다. 따라서, 차원이 증가할수록 데이터의 분포 분석 또는 모델추정에 필요한 샘플 데이터의 개수가 기하급수적으로 증가하게 되는데 이러한 어려움을 표현한 용어가 '차원의 저주'이다.


따라서 데이터 분석 등의 차원에 관계된 문제에 있어서는 어떻게든 핵심이 되는 파라미터만을 선별하여 문제의 차원을 낮추고자 하는 것이 일반적이다.


데이터의 차원을 낮추는 기계적인 방법으로는 주성분분석(Principal Component Analysis, PCA) 등이 있겠지만 다른 직접적인 예로는 영상처리 분야의 패턴인식 문제를 들 수 있다.


이미지의 경우 픽셀값 하나 하나가 차원을 형성하는 것으로 볼 수 있기 때문에 이미지 한 장은 w*h 차원의 엄청난 고차원 데이터로 볼 수 있다. 이 고차원의 데이터를 직접 다루는 것은 쉽지 않기 때문에 보통 주요 특징(feature)를 선별한 후 선별된 특징을 가지고 패턴을 인식하는 것이 일반적이다. 이 때, 선별된 특징(feature)을 이용하여 패턴을 식별하는 것은 원래의 전체 픽셀값을 이용하는 것에 비해 데이터의 차원을 현저하게 낮춘 것으로 볼 수 있다 (우리가 영상인식에서 흔히 사용하는 히스토그램도 이러한 차원감소의 대표적인 예이다).


즉, 차원의 문제에 대한 첫번째 접근은 인간의 머리로 이해하거나 흐름, 규칙을 발견하기 어려운 고차원의 문제를 우리가 다룰 수 있는 저차원의 문제로 단순화시켜서 처리하고자 하는 것으로 정리할 수 있다.



3. 두번째 시각: 차원의 확장


차원의 문제에 대한 정 반대의 접근은 복잡한 문제를 오히려 새로운 차원을 추가함으로써 단순화시키고자 하는 것이다.


예를 들어 아래 그림에서 빨간색 점과 파란색 점을 구분지을 수 있는 규칙을 발견해 보자.


<그림 2>


대부분 어떤 규칙을 발견하기는 힘들 것이며 그저 노이즈(noise)처럼 보일 것이다.


하지만,


...


여기에 새로운 차원(z축) 하나를 추가하여 아래 그림과 같이 빨간색 점과 파란색 점이 완벽히 분리되는 경우를 생각해 보자.


<그림 3>


즉, 원래의 데이터는 <그림 3>처럼 명확한 규칙을 가지고 분리되는 데이터들이었으나 이 데이터들이 투영된 2차원의 세계에서는 아무런 규칙도 없는 노이즈같은 존재로 비춰진 것일 수도 있다.


이와 같이 현재 우리 눈에는 너무나 복잡하고 무질서해 보이는 문제일지라도 이보다 한차원 더 높은 관점에서 바라봤을 때는 매우 단순한 규칙, 원리에 의해 설명되고 움직이는 문제일 수도 있다.


예전에는 가도 가도 끝이 없는 면의 세계였던 지구가 사실은 입체를 가진 구의 표면이며 나아가 우주속의 수많은 행성 중의 하나임을 깨닫게 된 것처럼 우리가 풀지 못하는 여러가지 문제들은 사실은 우리가 현재의 차원 속에 갇혀 있기 때문에, 그리고 그 차원의 틀 안에서만 현상을 바라보기 때문일 수도 있다.


실제로 기계학습(machine learning) 기법 중에도 데이터의 차원을 증가시켜서 문제를 단순화시키는 방법이 존재한다. SVM(support vector machine)에서 비선형 분류(classification) 문제를 처리할 때 사용하는 기법이 여기에 해당한다. SVM에서는 현재 차원에서 데이터를 선형적으로 분류(classification)하기 힘든 경우에 데이터의 차원을 고차원(무한차원)으로 확장한 후 경계평면(thresholding hyperplane)을 찾는 원리가 사용된다. 데이터의 차원을 확장하는 것은 손쉬운 예로 (x,y)를 (xy, x^2y, xy^2, ... ) 등과 같이 확장하는 것을 생각하면 된다.



4. 마무리


우리가 하는 대부분의 연구는 어떻게 하면 효과적으로 차원을 낮출까에 관한 것이 대부분이다. 좋은 feature를 찾아서 식별력을 높이고, 데이터의 분포를 단순한 모델로 근사시키고, ... 하지만 차원을 낮추다 보면 원래 데이터가 가지고 있던 정보는 기본적으로 소실되기 마련이다.


어쩌면 불가능할지도 모르겠지만 눈에는 드러나지 않는 현상 속에 숨겨진 차원을 발견할 수 있다면 오히려 여러 불가능해 보이는 문제들이 쉽게 풀릴지도 모른다.


by 다크 프로그래머