다양한 사람들을 만나다 보면 어떤 사람은 정말 나와 비슷하다고 (similar) 느낄 때가 있습니다. 반대로 어떤 사람은 정말 거리감 (distance) 이 느껴지지요. 그렇게 느껴지는 것은 생각하는 방식의 비슷함 또는 차이일 수도 있고. 좋아하는 취미나 영화 일 수도 있고, 말투나 외형 같은 것일 수도 있습니다. 뭐라 설명할 수는 없지만 다양한 요소 (feature)들이 종합되어 유사성과 거리감의 느낌이 결정되는 것이겠지요.
이번주는 vector (벡터) 가 무엇인지 기초 개념을 다루고, 다음주에는 단어를 또다른 방식의 vector로 표현한 word embedding을, 그리고 그 다음주는 벡터 간의 비슷함과 거리감을 계산하는 방법을 공부해보려 합니다.
Vector가 뭐더라..
지난 2주 간 단어나 문장을 어떻게 수학적으로 표현할 수 있는가에 대한 이야기를 하면서 One-hot vector, Bag-of-word vector 등 vector라는 단어가 많이 등장하는데 매우 중요한 기초 개념이라 이번에 짚고 넘어가보려 합니다.
학교에서 선형 대수를 배우셨다면 다시 한번 두뇌를 풀가동해주세요!
Scalar (스칼라)가 무엇인지 아시나요? 크기만 있는 scalar는 우리가 주로 익숙한 숫자를 말합니다. 한 사람의 몸무게나 키, 컵에 들어있는 물의 양, 또는 음식에 포함된 칼로리의 양을 나타내는 숫자는 모두 scalar입니다.
그에 반해 Vector (벡터)는 방향도 포함합니다. 예를 들어, "여기서 편의점을 어떻게 가나요?"라고 물었을 때 그냥 "500m만 가시면 돼요~"라고 하면 뭔가 부족합니다. 방향도 함께 알려주어야 제대로 찾아갈 수 있죠, "여기서 왼쪽으로 돌아서 쭉 500m 가셔야 돼요~"라고 해야 완전한 정보가 되겠죠.
Vector는 몇 차원의 공간에서 표현되느냐에 따라 크게 달라집니다. 만약에 우리가 고속도로를 타고 어딘가 가고 있다면 1차원 공간에 있는 것과 같습니다. 우리는 한 방향으로 전진만 하기 때문이죠. "다음 휴게소까지 500m 남았습니다~"라고 내비가 말해도 전혀 헷갈리지 않는 이유입니다. 그래도 방향성은 존재합니다. 상행이냐 하행이냐 목적지에 따라 달라지죠.
조금 전 편의점 예시 같이 주로 평면의 지도를 보고 길을 찾을 때는 2차원에 해당됩니다.
3차원은 비행기를 타보신 분이라면 금방 와 닿으실 겁니다. 비행기는 동서남북 방향도 존재하지만, 이착륙 시에 고도가 바뀌는 것을 확실히 느낄 수 있습니다. 4차원은 쉽게 상상하기 힘들지만 각 시간에 내가 어느 공간에 위치하느냐를 계속 기록한다고 생각해보면 대략적으로 감을 잡을 수 있습니다.
이처럼 vector는 N차원 공간에 사는 존재입니다. 이를 euclidean space라고도 부르죠. 그렇다면 10차원 같이 4차원 이상의 vector는 어떻게 이해해야 할까요?
4차원 이상의 공간은 우리가 눈으로 볼 수 있게 표현하는 것은 불가능합니다. 하지만 이렇게 이해하시면 조금 더 쉬울 것 같습니다. 서론에 등장하는 친구 A와 B가 얼마나 나와 비슷한지 숫자로 나타내는 것을 시도해보는 겁니다. 우리가 생각하는 사람 간 비슷함과 거리감에 영향을 받는 10 가지 요소를 골라봅시다. 나이, 성별, 키, 외국 생활 연차 등 수치화할 수 있는 모든 것을 어찌어찌 뽑아낸다면 친구 A, 친구 B, 그리고 나는 각각 10 개의 숫자로 표현될 수 있습니다.
이는 곧 한 사람이 10차원의 vector로 표현된 거라고 볼 수 있습니다! 물론 사람을 이렇게 간단하게 표현할 수는 없겠지만, 어쨌든 4차원 이상의 벡터가 어떠한 것인지 좀 더 감이 오시나요?
이번주에는 Vector가 무엇인지 간단히 공부해보았습니다. 다음 주와 다다음주에는 이 기초 개념을 가지고 단어를 다른 방식의 vector로 표현한 word embedding에 대해서, 그리고 이 vector들끼리의 유사성과 거리감을 어떻게 계산하는지에 대해 공부해보도록 하겠습니다!