워드 임베딩(Word Embedding)은 단어를 벡터로 표현하는 것을 말한다.

워드 임베딩은 단어를 밀집 표현으로 변환하는 방법을 말한다.


1. 희소 표현(Sparse Representation)

벡터 또는 행렬(matrix)의 값이 대부분이 0으로 표현되는 방법을 희소 표현(sparse representation)이라고 한다.

즉, 원-핫 벡터는 희소 벡터(sparse vector)이다.

 

이러한 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 한없이 커지는 것이다. 심지어 원-핫벡터로 표현할 때는 단어의 인덱스에 해당되는 부분만 1이고 나머지는 0의 값을 가진다.

 

이러한 벡터 표현은 공간적 낭비를 불러 일으킨다.

원-핫 벡터 뿐아니라, 희소 표현의 일종인 DTM과 같은 경우에도 특정문서에 여러 단어가 다수 등장하였으나, 다른 많은 문서에서는 해당 특정 문서에 등장했던 단어들이 전부 등장하지 않는다면 역시나 행렬의 많은 값이 0이 되면서 공간적 낭비를 일으킨다.

2. 밀집 표현(Dense Representation)

밀집표현은 희소 표현과는 반대되는 표현이며, 벡터의 차원을 단어 집합의 크기로 상정하지 않고, 사용자가 설정한 값으로 모든 단어의 벡터표현의 차원을 맞춘다. 또한, 이 과정에서 더 이상 0과 1만 가진 값이 아니라 실수 값을 가지게 된다.

 

비교를 위해 희소 표현의 예

Ex) 강아지 = [ 0 0 0 0 1 0 0 0 0 0 0 0 ... 중략 ... 0] # 이 때 1 뒤의 0의 수는 9995개. 차원은 10,000

 

예를들어, 10,000개의 단어가 있을 때 강아지란 단어를 표현하기 위해서는 위와 같은 표현을 사용했다.

하지만, 밀집 표현의 차원을 128로 설정한다면, 모든 단어에 대한 벡터 표현의 차원은 128로 바뀌면서 모든 값이 실수가 된다.

 

Ex) 강아지 = [0.2 1.8 1.1 -2.1 1.1 2.8 ... 중략 ...] # 이 벡터의 차원은 128

 

이 경우 벡터의 차원이 조밀해졌다고 하여 밀집 벡터(dense vector)라고 한다.

3. 워드 임베딩(Word Embedding)

단어를 밀집 벡터(dense vector)의 형태로 표현하는 방법을 워드 임베딩(word embedding)이라고 한다.

그리고 이 밀집 벡터를 워드 임베딩 과정을 통해 나온 결과라고 하여 임베딩 벡터(embedding vector)라고도 한다.

 

워드 임베딩 방법론으로는 LSA, Word2Vec, FastText, Glove 등이 있는데, 케라스에서 제공하는 도구인 Enbedding()는 앞서 언급한 방법들을 사용하지는 않지만, 단어를 랜덤한 값을 가지는 밀집 벡터로 변환한 뒤에, 인공 신경의 가중치를 학습하는 것과 같은 방식으로 단어 벡터를 학습하는 방법을 사용한다.

 

▶ 비교 표

- 원-핫 벡터 임베딩 벡터
차원

고차원 (단어 집합의 크기)

저차원
다른 표현 희소 벡터의 일종 밀집 벡터의 일종
표현 방법 수동 훈련 데이터로부터 학습
값의 타입 1과 0 실수