Doc2Vec 공간의 이해

머신러닝과 딥러닝 · 2019. 12. 29. 18:19

 

Doc2Vec 은 단어와 문서를 같은 임베딩 공간의 벡터로 표현하는 방법으로 알려져 있다.

하지만 대부분의 경우 단어와 문서는 공간을 나누어 임베딩 되는 경우가 많음.

 

영화 “라라랜드” 의 벡터 근처에 “뮤지컬”이라는 단어가 위치하길 기대한다.

혹은 영화 평점을 document id 로 학습한 뒤, “1점” 벡터 주변에는 “심한 욕”이, “10점” 벡터 주변에는 칭찬에 해당하는 단어가 위치하길 기대합니다. 하지만 실제로 영화평 데이터를 이용하여 Doc2Vec 을 학습하면 이러한 일은 발생하지 않는다.

 

문서와 단어는 서로 다른 공간에 임베딩 될 수 있다.

Word2Vec 은 단어의 앞, 뒤에 등장하는 context words 의 분포가 유사한 두 단어  $ w_{1}, w_{2} $가 서로 비슷한 벡터로 표현되도록 softmax regression 을 학습한다.

 

Doc2Vec 은 한 document id 에 해당하는 모든 문서에서 등장한 모든 단어가 context words 가 된다.

하지만 문서 $ d $ 의 context words와 단어 $ w $ 의 context words 는 분포가 매우 다르다.

 

Word2Vec 의 공간에서 두 단어  $ w_{1}, w_{2} $ 의 유사도는 각 단어의 context words 와의 co-occurrence 에 positive Point Mutual Information 을 적용한 벡터 간의 유사도와 같다.

 

즉, 해석을 위하여 context words 와의 co-occurrence vector 를 생각해보면

 

단어의 context words 벡터에는 실제로 앞, 뒤에 등장한 단어만 등장하지만,

문서의 context words에는 문맥과 상관없는 단어들도 다수 포함된다.

대체로 단어의 context words 벡터는 문서의 context words 벡터보다 훨씬 sparse 함.

 

그리고 이 벡터가 함께 Singular Value Decomposition 에 의하여 저차원 공간으로 치환된다.

이 공간을 Doc2Vec 공간으로 생각할 수 있다... 원 공간의 벡터가 서로 다르니 저차원 공간의 벡터도 서로 떨어져 있음.

 

https://lovit.github.io/nlp/2019/06/18/joint_visualization_of_worddoc/

 

Document vectors 와 word vectors 를 함께 시각화 하기 (Doc2vec 공간의 이해)

Doc2Vec 은 단어와 문서를 같은 임베딩 공간의 벡터로 표현하는 방법으로 알려져 있습니다. 하지만 대부분의 경우 단어와 문서는 공간을 나누어 임베딩 되는 경우가 많습니다. 그리고 단어 벡터와 문서 벡터 간의 상관성을 표현하는 그림을 그리기 위해서는 두 벡터 공간이 일치하는지를 반드시 따져봐야 합니다. 이번 포스트에서는 Doc2Vec 으로 학습한 문서와 단어 벡터를 2 차원의 그림으로 그리는 방법과 주의점에 대하여 알아봅니다. 이를 통하여 Doc2Vec

lovit.github.io