한 페이지 머신러닝

차원(Dimension)

차원(Dimension)

머신러닝 공부를 하다 보면 '차원' 이라는 단어가 자주 등장합니다.
차원축소(Dimensionality Reduction) 같은 단어를 아무렇지 않게 말하는 엔지니어를 보면,
마치 10차원 우주공간의 신비를 다루는 것인가 하는, 막연한 상상이 떠오르죠.
차원 이라는 것이 대체 뭐고, 컴퓨터랑은 무슨 관계가 있는 걸까요?

관점

머신러닝은 컴퓨터가 데이터로부터 이론을 만들도록 해주는 방법입니다. 
사람이 사물을 정의하는 방식을 잘 생각해 보면, 
아래 그림처럼, 우리는 사물로부터 어떤 특징(feature)를 찾아낸다는 것을 알 수 있습니다.
피부가 검다든지, 머리가 길다든지, 키가 크고 말랐다던지 하는 그런 '특징'을요.
한 가지 사물을 서로 다른 여러 관점으로 들여다보면서, 관점 당 하나씩의 특징을 잡아냅니다.

사람은 매우 다양한 관점으로 한 가지 사물을 바라볼 수 있습니다. 
사물을 보는 관점의 수가 적을 수록, 단편적인 사고로 편견에 빠질 위험이 크지요. 
피부색만으로 사람을 판단하거나, 파이(Pi)의 값이 3.14라거나 하는 식으로요.

컴퓨터에게 사물을 정의하라고 시킬 때도 마찬가지 논리가 적용됩니다.
사과(apple)를 컴퓨터에게 알려 준다고 하면
색깔의 관점에서는 빨갛고
주스의 관점에서는 단맛이 나고
공학적인 관점에서는 유명한 컴퓨터 회사를 떠올릴 수 있겠지요.

좌표(axis)

컴퓨터는 숫자 말고는 알지 못하므로, 같은 이야기를 다음처럼 좌표축에 숫자로 표현해줍니다.
빨간색깔의 관점에서는 3 만큼
컴퓨터 회사의 관점에서는 2 만큼
주스맛의 관점에서는 5 만큼
이라고 사과를 '정의(define)할 수 있습니다'
세 가지 특성(관점)으로 사과를 정의하려면
좌표축 세 개가 필요합니다.
3차원의 데이터 인 것이죠.

어떤 개념을 숫자로 표현하기 위해서 좌표축이 동원되기 때문에
선형대수학(Linear algebra) 이라는 수학의 한 분야가 머신러닝의 핵심적인 기초과목이라고 볼 수 있습니다.
선형대수학에서는 바로 이 좌표축을 다루는 방법을 배우거든요.

다차원 데이터

데이터는 다음과 같이 읽을 수 있습니다.
하나의 행(row)은 하나의 존재를 나타내고
각각의 열(column)은 그 존재를 정의하는 '특성(feature)'으로요.
이렇게 본다면, 다차원 데이터도 얼마든지 만들어낼 수 있겠지요.
열의 개수만 늘어나면 되는 것이니까, 100차원도, 1000차원도 만들 수 있습니다.
차원 이라는 개념이,  SF 우주론에 나오는 공상 속의 이야기가 아니라
데이터를 효과적으로 표현하는 방법 이라는 것이죠.

머신러닝이랑은 어떤 상관

머신러닝이 학습하려는 대상을 서로다른 '특성'의 집합으로 바라보고, 
다음과 같이 훈련 데이터를 정의할 수 있습니다.
아래 그림의 짐승은 animal 0인데, 
꼬리가 있고 (1)
다리가 네 개고 (4)
짖고 (1)
몸길이는 20cm라고요 (20)

이렇게 정의된 특성은, 다음과 같이 인공신경망의 입력으로 들어가서, 
컴퓨터는 1, 1, 4, 20 의 특성을 가진 무언가에 대해서 '개(dog)'라고 답을 내도록 훈련됩니다.
결과가 개(dog)라면 첫 번째 열의 값이 가장 크도록(0.6)
결과가 쥐(rat)라면 두 번째 열의 값이 가장 크도록(0.8)
이렇게 결과도 컴퓨터의 언어인 숫자로 표현해 주지요.
나중에 이 결과를 사람의 언어인 'dog'이나 'rat'으로 바꿔주는 작업은 또 거쳐야 겠지만요. 

결론

지금까지의 논의를 종합해서 한 번 더 살펴볼까요?
차원(Dimension)이라는 개념이 
데이터와 머신러닝에 어떻게 연결되는지
이해가 되시나요?

댓글

댓글 본문
버전 관리
Woneui Hong
현재 버전
선택 버전
graphittie 자세히 보기