데이터과학/자연어처리

[자연어처리] [paper review] Word2vec: Distributed Representations of Words and Phrases and their Compositionality

섭구
반응형

본 논문은 이전에 리뷰한 Word2vec와 같은 해에 발표된 후속 논문으로,

Skip-gram 방법론의 representation quality와 computation efficiency 개선을 목표로 하고 있습니다.

먼저 Word2Vec에 대한 설명은 아래 포스팅을 참고 부탁드립니다.

 

[논문리뷰]Efficient Estimation of Word Representations in Vector Space : Word2Vec

기존의 count based word representaion 방법들은 간단하지만, 단어 간의 유사도를 판단할 수 없습니다. 예를 들면, 삼겹살 [0,0,0,0,0,1] , 목살 [0,0,0,1,0,0] , 연필 [0,1,0,0,0,0] 세 개의 임베딩 된 단어가..

supkoon.tistory.com

word2vec의 skip-gram 구조는 이전의 다른 어떤 방법보다 효율적이며, 높은 품질의 word representation을 얻을 수 있도록 만들었습니다.

특히 word2vec는 단어 사이의 regularity와 pattern을 보존하는 동시에 선형적으로 유사도를 해석할 수 있게 합니다.

아래의 벡터 연산은 word2vec의 뛰어난 representation quality를 잘 보여주고 있습니다.

$$V^{Madrid} - V^{Spain} + V^{France} \simeq V^{Paris}$$ 

또한 word2vec는 projection layer의 간소화로 복잡한 행렬계산이 없기 때문에 높은 계산 효율성까지 가지고 있습니다.

 

1.Proposition

Word2vec의 skip-gram 모델은 CBOW를 포함하여 함께 제안된 모델들과 비교했을 때 가장 우수한 성능을 보였습니다.

본 논문은 앞선 Word2vec과 동일한 해에 발표된 논문으로, 

skip-gram 구조에 대한 세가지 성능개선 방법인 Negative-sampling, Sub-sampling, Phrase learning 을 제안하고 있습니다.

Negative sampling

기존의 word2vec은 일반적인 softmax layer를  tree 구조의 hierarchical softmax로 대체하여 output layer의 계산복잡도를 \(V\) 에서  \(log_2{V}\) 로 감소시켰습니다.

본 논문에서는 hierarchical softmax 대신  Negative sampling을 사용합니다.

 

softmax of skip-gram

(2)번 식에 해당하는 기존의 softmax 방법은 입력단어 \(w_O\)의 output이 출력 단어 \(w_O\)일 확률을 최대화 하는 방향으로 모델을 학습합니다.

이 때, 분모의 \( \sum_{w=1}^W{\exp({v'_w}^T v_{w_I})} \)를 구하는 과정에서 Vocabulary에 존재하는 모든 단어들에 대한 softmax probability를 구하기 때문에 비 효율적인 계산과정이 발생합니다.

 

반면에 Negative sampling은 모든 단어에 대한 softmax probability를 구하지 않습니다.

Negative Sampling

Negative sampling은 각 샘플마다 window 내의 Positive sample과 window 밖의 Negative sample에 대한 logistic regression을 수행합니다. 

이 때, K개의 Negative sample을 샘플링하는데, 작은 dataset에서는 5~20의 K를 사용하며, 큰 데이터 셋에서는 2~5의 K를 주로 사용합니다.

 

수식을 통해 설명드리면,

(4)번 식의 좌측 term은 입력 단어 \(w_I\)에 대하여 positive sample \(w_O\)이 output일 확률을 최대화 합니다.

우측 term은 negative sample \(w_i\) \((i=1,...,k)\)에 대하여 negative sample \(w_i\)가 output이 될 확률을 최소화 하는 방향으로 학습합니다. 따라서 내적의 결과에 -1을 곱하여 sigmoid 함수를 적용하는 것을 알 수 있습니다. 

단순하게 vocab의 크기를 줄이는 방법으로 진행되는 것이 아니기 때문에, 대충 넘기면 놓치기 쉬운 부분이라고 생각합니다.

 

Negative sampling은 NCE(Noise Contrastive Estimation)간소화된 버전입니다.

NCE와 Negative sampling의 차이점은 다음과 같습니다.

NCE는 sample과 noise distribution의 확률값을 필요로 하지만 Negative sampling은 sample만을 필요로 합니다.

또한 NCE는 Negative sampling과 다르게 softmax의 log probability 값을 최대화 합니다.

Word2vec은 word representation의 quality를 높이는 것이 목표이기 때문에 굳이 NCE를 이용하지 않고 Sample만을 필요로 하는 Negative sampling 방법을 수행합니다.

 

Subsampling of Frequent Words

매우 큰 corpora에서 'in', 'the', 'a'와 같은 관사는 매우 많이 발생합니다.

즉, Term frequency 값이 매우 높습니다.

하지만 이러한 단어들은 높은 Term frequency에도 불구하고 document frequency 마저 높기 때문에 적은 정보량을 제공합니다.

skip-gram 모델을 학습하는 데 있어서도 Document frequency가 매우 높은 단어들은 문제가 됩니다.

예를 들어 "France", "Paris"와 같이 의미적으로 연관된 단어 관계보다 "France", "The" 와 같은 관계가 더 빈번히 발생해 word representation의 quality를 저하시킬 수 있습니다.

따라서 본 논문은 간단한 subsampling 방법으로 이 문제를 해결합니다.

subsampling probability

\(f(w_i)\)는 단어 w의 frequency이며, \(t\)는 threshold로 hyper parameter 입니다.

따라서 각 단어 \(w_i\)가 subsampling 될 확률은 frequency에 비레하며, 따라서 "the","a"와 같이 Document frequency가 매우 높은 단어들은 subsampling 과정을 통하여 샘플링 될 확률이 감소하게 됩니다.

이는 결과적으로 덜 발생하지만 중요한 단어의 representation quality를 개선하는 결과를 불러오게 됩니다.

threshold값으로는 휴리스틱하게 \(10^{-5}\)값이 추천됩니다.

 

Learning Phrases

"벼룩" +"간" \(\neq\) "벼룩의 간" 

 

저자들은 개별 단어들의 벡터 합이 위와같은 idiomatic phrases(관용어구)에 대해 적용되지 않음에 집중하였습니다.

따라서 저자들은 Phrases를 학습하기 위한 방법을 제안하고 있습니다. 

방법은 다음과 같습니다. 위의 식을 통하여 함께 자주 등장하면서 각각 등장하는 횟수 자체는 적은 단어들에 대해 bigram을 형성하고, 이를 unique한 token으로서 training data에 추가하였습니다. \(\delta\)는 threshold로서 적용됩니다.

score function은 다음과 같은 관계를 보일 것 입니다.

$$score(this,is) < score(Newyork, times)$$

 

또한 저자들은 위의 작업을  \(\delta\)를 감소시키며 2~4회 반복하여 bigram 이상의 phrase에 대해서도 적용을 하였습니다. 

이후에 나온 Doc2Vec의 개념과 유사하다고 보면 될 것 같습니다.

 

2.Results

result 1.

저자들은 이전 논문의 analogical reasoning task를 그대로 진행하였습니다.

analogical reasoning task에 대한 설명은 다시한번 Word2vec의 Result 부분을 참고해주시면 감사드리겠습니다.

Hierarchical Softmax(HS), Noise Constrastive Estimation(NCE), Negative sampling(NEG), subsampling을 활용한 실험결과는 위와 같습니다. NEG의 성능이 HS의 성능을 크게 웃돌았습니다. 그리고 때로는 NCE보다도 좋은 성능을 보였습니다. subsampling 역시 성능 속도와 정확도 개선에 어느정도 기여했음을 확인할 수 있습니다. 

 

result 2.

 

phrase를 적용한 결과에서 역시 subsampling의 효과를 볼 수 있었습니다. 특히 HS 방법이 phrase 작업에서 subsampling을 적용할 때 가장 우수한 성과를 보였습니다.

 

result 3.

실제 가장 가까운 벡터를 확인해 봤을 때, 제안한 방법이 idiomatic phrases를 어느정도 학습했음을 확인할 수 있습니다. NEG와 HS의 결과 중에는 HS의 결과가 정확도 지표와 같이 좀 더 가까움을 확인할 수 있었습니다.

 

 

마무리

본 논문은 Negative sampling과 subsampling 방법을 통하여 기존의 skip-gram을 통한 word representation quality를 개선하였습니다. 그리고 또한 phrase를 skip-gram을 통하여 representation하는 방법 또한 제안하고 있습니다. 

훌륭한 성능 개선에 더하여 skip-gram을 통한 Doc2Vec의 힌트를 제공한 논문 같습니다. 

 

반응형