데이터과학/자연어처리

[자연어처리][paper review] Word2Vec: Efficient Estimation of Word Representations in Vector Space

섭구
반응형

Count-based word representation

One-hot encoding으로 대표되는 count-based word representaion단어vocabulary의 index로 표현하는 방법입니다.

count-based word representaion은 간단하지만 명확한 한계점들이 존재합니다.

 

첫번째로, 단어 간의 유사도를 판단할 수 없습니다.

예를 들어 삼겹살 [0,0,0,0,0,1] , 목살 [0,0,0,1,0,0] , 연필 [0,1,0,0,0,0] 세 개의 임베딩 된 단어를 고려해 보면, 다음과 같이 단어간의 의미와 유사도를 전혀 반영하지 못한다는 사실을 알 수 있습니다.

$$(W^{삼겹살})^T W^{목살} = 0$$

$$(W^{삼겹살})^T W^{연필} = 0 $$

$$(W^{삼겹살})^T W^{목살} = (W^{삼겹살})^T W^{연필}=0$$

 

또한, count-based word representaion의 차원 수는 Vocabuary의 크기에 비례하기 때문에 보통 매우 sparse한 representation vector를 얻게 됩니다. 

이러한 문제점들 때문에 count-based word representaion은 단순 나이브 베이즈 분류가 아닌 음성인식과 같이 복잡한 분야에 적용하기에 한계점이 있습니다.

 

Distributed word representation 

기술의 발전은 많은 데이터를 사용하여 신경망과 같이 복잡한 모델을 학습할 수 있게 만들었습니다. 

distributed representation신경망을 기반으로 단어를 여러 차원에 분산하여(distributed) 표현하는 방법입니다.

distributed representation은 고정된 차원의 벡터를 사용하며, 단어간의 의미와 유사도를 어느정도 반영할 수 있습니다.

 

다음과 같이 같은 예시를 Distributed representation으로 표현했을 때, 단어간의 유사도를 내적을 통해 계산할 수 있음을 알 수 있습니다.

ex) 삼겹살 [0.5,1.0,0,0,0,0] , 목살 [0.7,0.8,0,0,0,0] , 연필 [0,0,0,1,1,0]

$$(W^{삼겹살})^T W^{목살} = 1.15$$

$$(W^{삼겹살})^T W^{연필} = 0 $$

$$(W^{삼겹살})^T W^{목살} > (W^{삼겹살})^T W^{연필}$$

 

따라서 distributed representation은 고수준의 문제를 해결하기 위한 좋은 표현방법이 될 수 있으며, 이미 인공신경망 기반의 distributed representation 모델들은 기존의 count based N-gram 방법들을 뛰어넘고 있습니다.

 

2013년 발표된 본 논문은 distributed representation을 위한 다양한 신경망 기반 모델들을 복잡도를 사용하여 비교하는 동시에, 추가적으로 두가지 구조를 제안하고 있습니다.

모델 비교에 앞서, 모델의 구조에 따른 계산 복잡도 \(O\)는 다음과 같은 식으로 계산됩니다. 

$$ O = E \times T \times Q$$

\(E\) : num of epoch

\(T\): num of words

\(Q\): defined by each model

 

1. Baseline

Baseline1. NNLM (Feedforward Neural Net Language Model )

NNLM은 input, projection, hidden, ouput layer로 구성되어 있으며, 

현재 윈도우 내의 일련의 단어들을 input으로 하여 다음 단어를 예측하는 신경망 구조입니다.

자세한 설명은 아래의 리뷰를 참고 부탁드립니다.

 

[자연어처리][paper review] NNLM : A Neural Probabilistic Language Model

본 논문을 통해 처음 소개된 NNLM(Neural Network Language Model)은 word2vec의 기초가 되는 논문으로 2003년 발표되었습니다. count based word representation이 많이 사용되면 당시, language modeling을 어렵..

supkoon.tistory.com

 

Complexity

input layer는 one-hot encoding을 진행하며 이때 사전의 크기인 V차원으로 임베딩 합니다.  

proejction layer는 Input 된 N개의 단어를 각각 D 차원으로 임베딩 합니다. 이때 activation function은 없습니다.

hidden layer는 일반적인 구조를 따릅니다.

output layer는 각각 단어에 대한 softmax 확률 값을 출력하므로, 다시 사전의 크기인 V차원의 출력을 갖습니다.

 

이에 따른 계산 복잡도는 다음과 같습니다.

$$Q = N \times D + N \times D \times H + H \times V $$

각각의 term은 input to projection, projection to hidden, hidden to output layer의 weight matrix 크기를 곱연산으로 나타내고 있습니다.

이때, 두 번째 term \(N \times D \times H\)에서 가장 큰 복잡도가 발생합니다.

 

Baseline2. RNNLM (Recurrent Neural Net Language Model)

 

NNLM은 input context length(window)를 지정해줘야 한다는 단점이 존재합니다.

따라서 이러한 부분을 RNN 구조를 통하여 개선한 모델이 바로 RNNLM입니다. 

기존의 NNLM과 달리 RNNLM은 projection layer가 존재하지 않고, input, hidden, output layer로 구성되어 있습니다.

hidden layer가 recurrent 하게 연결되어 현재 input과 이전 hidden state를 반영하는 일종의 short term memory를 형성할 수 있습니다.

 

Complexity

모델구조에 따른 시간 복잡도는 다음과 같습니다.

$$Q = H \times H + H \times V $$

각각 term은 hidden to hidden , hidden to output layer을 의미합니다.

이때 가장 큰 복잡도는 H*H term에서 발생합니다.

 

 

2. Proposition

본 논문은 신경망 기반의 distributed representation을 위한 두가지 구조인 CBOW, Skip-gram을 제안하고 있습니다.

두가지 모델은 앞선 NNLM, RNNLM과 비교할 때, 복잡도와 품질 모두에서 우수한 성능을 보여줍니다.

1. CBOW (Continuous Bag-of-words Model)

Cbow는 기본적으로 일반적인 NNLM과 유사한 구조를 갖습니다. 하지만 앞선 NNLM의 문제점을 개선하기 위해

1. 비선형의 hidden layer가 존재하지 않고,

2. projection layer가 모든 input에 대해 공유됩니다.

즉, 모든 input 벡터들이 Average 되어 같은 위치로 projection 됩니다. 

따라서 위의 두 가지 개선점으로 계산 복잡도를 크게 낮출 수 있습니다. 또한 이는 window 내에서 짧지만 가까운 미래의 단어까지 고려하게 됩니다.

 

Complexity

모델에 따른 계산 복잡도는 다음과 같습니다.

$$ Q = N \times D + D \times V $$

각각의 term은 input to projection, projection to output을 의미합니다.

 

추가적으로 저자들은 hierarchical softmax 방법을 사용하여 계산 복잡도를 낮췄습니다.

hierarchical softmax는 단어들이 binary Tree 구조로 존재하기 때문에 softmax output layer의 복잡도 \(V\)를  \(log_2{V}\)로 개선할 수 있습니다.

따라서 개선된 시간 복잡도는 다음과 같습니다. 

$$ Q = N \times D + D \times log_2{V} $$ 

 

2. Skip-gram (Continuous Skip-gram Model)

Skip-gram은 Cbow와 대체로 비슷하지만

반대로, 각각의 현재 단어를 input으로 하고 현재 단어의 주변 단어들을 예측하는 구조로 학습됩니다.

 

Complexity

모델 구조에 따른 계산 복잡도는 다음과 같습니다.

$$Q = C \times (D + D \times V)$$

우선 C는 단어의 maximum distance(=window size)를 뜻합니다.

따라서 계산 복잡도는 (input to projection + projection to output)의 연산을 distance C번 반복함을 의미합니다.

더하여, 학습과정에서 각각의 단어들은 랜덤 하게 <1: C> 사이의 숫자 R을 선택합니다. 그리고 이전 단어들로부터 R개, 이후 단어들로부터 R개의 단어를 샘플링하여 R+R = 2R개의 예측을 하게 됩니다. 

 

역시 hierarchical softmax 방법의 Tree 구조를 사용하여 시간 복잡도를 개선할 수 있습니다.

$$Q = C \times (D + D \times log_2{V})$$

 

3.Results

 

실험은 표와 같이 5가지 sementic question, 9가지 syntactic question을 사용하여 진행되었습니다.

지표로는 간단하게 Accuracy가 사용되었습니다.

 

위의 예시에서 Currency를 예로 들면, 잘 학습된 word representation은

Word Pair 1의 'Angola', 'kwanza', 그리고 Word Pair 2의 'Iran','rial'에 대해 word vector의 연산이 다음과 같을 것 입니다.

$$W^{'Angola'} + W^{'kwanza'} - W^{'Iran'} \simeq W^{'rial'}$$

 

따라서 실험은 다음과 같이 문제를 정의하여 진행되었습니다.

$$ Question : X = W^{'Angola'} + W^{'kwanza'} - W^{'Iran'} $$

$$ Answer : y \simeq W^{'rial'} $$

 

저자들은 벡터 연산의 결과와 코사인 유사도가 가장 높은 단어를 맞췄을 경우에만 정답을 인정하였습니다.

Synonym 역시 오답으로 평가하였습니다.

따라서 이는 정답률 100퍼센트가 거의 불가능한 매우 어려운 문제라고 할 수 있습니다.

 

result 1.

첫번째 실험은 학습 데이터의 크기와 임베딩 차원에 따른 정확도 비교입니다.

학습 데이터 수와 임베딩 차원의 증가에 따라 대체적으로 성능이 향상함을 알 수 있었습니다.

또한 학습 데이터 수, 임베딩 차원 수를 각각 증가시키는 것보다는 함께 증가시킬 때 더 큰 효과를 가져왔습니다.

 

result 2.

모델 간 성능 비교 결과입니다.

우선 RNNLM이 가장 좋지 못한 성능을 보였습니다.

그리고 제안한 CBOW, Skip-gram이 Sementic, Systactic 모두에서  RNNLM, NNLM 보다 좋은 정확도를 보였습니다.

또한 Syntactic에서는 CBow가 가장 좋은 결과를, 특히 Sementic에서는 Skip-gram이 다른 모델에 비해 월등한 정확도를 보였습니다.

 

result 3.

좀 더 다양한 모델 간의 비교에서도 제안한 방법이 더 좋은 정확도를 보였음을 알 수 있습니다.

 

result 4.

에폭과 학습 데이터 수에 대한 성능 비교입니다.

같은 모델에서 비교해보면, 3 에폭에 비해 1 에폭을 2배의 데이터로 돌리는 것이 오히려 학습시간과 정확도 지표에서 더 좋은 결과를 불러왔습니다.

 

result 5.

마지막으로 학습한 결과의 예시입니다.

비록 정확도는 60% 정도였지만, 단어간 관계가 잘 반영된다는 것을 알 수 있습니다.

더 큰 데이터셋, 더 큰 차원의 임베딩을 사용했다면 더 좋은 결과를 얻을 수 있을 것이라고 합니다.

 

마무리

Word2vec의 두 방법론은 당시의 count based representation과는 다르게 단어의 의미를 보존할 수 있었습니다.

더하여 Sementic, Systactic problem의 결과를 통해 통해 벡터 연산 또한 단어의 의미가 보존됨을 확인할 수 있었습니다. 

제안한 방법은 당시의 다른 모델들에 비해 낮은 계산 복잡도로 더 좋은 성능을 얻었습니다.

Word2vec은 아직도 다양한 NLP task에서 대중적으로 활용되는 방법론 입니다. 직관적이며 간단한 모델로 우수한 성과를 냈다는 사실이 대단하게 느껴집니다.

 

반응형