본문 바로가기

Terminology

Manifold in Machine Learning

반응형

논문 리뷰를 하던 중 terminology 하나를 짚고 넘어갈 필요성을 느껴 포스트를 올립니다.

제가 읽으려던 논문의 제목은 <Deep Texture Manifold for Ground Terrain Recognition(Xue et al.)>인데요,

Manifold 라는 단어는 이 논문의 제목 뿐만 아니라 머신 러닝 관련 document들을 읽다보면 빈번하게 발견할 수 있습니다. 이번 포스트에서는 그 의미를 짚고 넘어가려 합니다. 정리한 개념 / 정보 출처는 포스트 하단에 적어 놓겠습니다.

Manifold in Data Science

데이터 사이언스에서 Manifold는 다음과 같은 의미를 가지고 있습니다.

A topological space that resembles Euclidean space near each point

다시 말해, n dimensional manifold에 포함되어 있는 각각의 요소들은 이 manifold 에 대응하는 Euclidean Space 상의 위치를 가지고 있습니다. 예를 들어 어떤 manifold에서 유사한 값을 가지는 feature들은 서로 가까운 Euclidean distance를 가지고 있는 neighbor 들이라고 볼 수 있습니다.

좀 애매한 표현이지만, 저는 이것을 (머신러닝의 관점에서) object/feature 들 간의 거리를 Euclidean Space 에 대응(시각화)시켜놓은 좌표공간이라고 이해했습니다. 위에서 언급된 논문의 예를 들어 설명을 하면, 야외 토지(Outdoor Ground Terrain)을 표현하기 위한 manifold를 정의했다고 하면, 서로 비슷한 특성을 가지는 이끼와 단지는 이 Ground Terrain Manifold 내에서 실제로 작은 Euclidean distance를 가지면서 인접해있을 것입니다. 다시 말해 추상적 거리 -> 좌표공간 상의 실제적 거리로 mapping 해놓은 것을 manifold라고 이해했습니다.

Maching learning 분야에서 manifold라는 말은 보통 dimensionality reduction과 함께 언급이 되곤 하는 데요, 이는 상위 차원(higher-dimensional)의 데이터를 상대적으로 작은 차원의 데이터-manifold로 옮기는 작업 이 매우 중요하기 때문입니다. 데이터 사이언스 / 머신러닝에서는 보통 High-dimensional data를 많이 다루게 되고, 이렇게 지나치게 많은 정보를 포함한 high-dimensional 데이터는 굉장히 큰 연산량이 요구될 뿐만 아니라, 네트워크의 overfitting을 유도하게 되기 때문에 좋지 않습니다. 더불어 실생활의 문제를 정의하는 단계로 오면 이런 수많은 feature (dimension)들을 모두 고려해 문제를 정의하는 것 자체도 쉽지 않죠. 그렇기 때문에 조금 더 적은 차원의 데이터 - manifold를 정의하는 것이 필수적입니다. 예를 들어 설명해보겠습니다.

약 1000 여 개의 이미지를 이용해 사람의 성별을 구분하는 classifier를 만든다고 생각해보겠습니다. 각 이미지를 특정짓는 feature는 수백 수 천가지가 있을 수 있습니다. 눈의 모양, 입술의 색상과 형태, 피부의 결과 색깔, 수염의 유무, 눈썹과 속눈썹의 두께와 길이, 점의 갯수, 주름의 위치 등등..

하지만 이런 feature들을 모두 고려하도록 space를 정의한다면, 목표하는 classifier를 학습시키는 것은 매우 어려운 문제가 될 뿐 아니라 좋은 성능을 기대하기도 힘들겠죠. 그래서 이미지의 성별을 구분짓는데 주요하게 작용하는 세 가지 feature를 정의하기로 합니다.

수염의 유무, 눈썹의 두께, 입술의 색깔

이제 이 classifier가 학습되는 feature space는 3차원의 정보를 가지도록 제한되었습니다. 이 3 차원 feature 가 바로 사람의 얼굴을 정의하는 하나의 manifold 라고 할 수 있습니다. 

이런 식의 dimensionality reduction은 효과적인 머신러닝을 위해 매우 중요한 요소입니다. 어떻게 feature space를 정의하느냐에 따라, 매우 성능이 좋고 빠른 classifier를 만들수도, 매우 느리고 성능이 나쁜 classifier를 만들수도 있으니까요.

이와 관련된 한 분야로서 Manifold Learning 같은 경우에는 위의 예시처럼 직접 dimension를 구성할 feature를 정하는 것이 아니라, 고차원의 데이터를 lower-dimension에서 효과적으로 표현할 수 있는 좋은 manifold를 학습하는 것을 목표로 합니다. 

얕은 지식이지만 제가 공부한 내용에 한해 정리해보았습니다. 부족한 부분이 있다면 댓글로 남겨주시면 감사하겠습니다. 

출처: https://datascience.stackexchange.com/questions/5694/dimensionality-and-manifold

반응형

'Terminology' 카테고리의 다른 글

GAP(Global Average Pooling)  (0) 2019.12.02