인공지능 논문정리/NLP 논문

[술술 읽히는 논문 요약] Word2Vec 논문 - Skip-gram, CBOW

jimmy_AI 2021. 11. 2. 17:07
반응형

Efficient Estimation of Word Representations in Vector Space

저자 : Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean 외

학회 : International Conference on Learning Representations (ICLR)

연도 : 2013년

 

실험 목적

apple, orange, dog -> 컴퓨터가 학습할 수 없는 형태(단어)

[1, 2], [1.5, 3.2], [2.2, 0] -> 컴퓨터가 학습할 수 있는 형태(벡터)

 

단어 -> 벡터로 표현해보자!

 

기존 시도

통계 기반 모델링도 이전에 자연어 연구에서 시도되었고(N-gram 등)

단어를 벡터로 표현하려는 시도는 처음은 아니었음(LDA, LSA 등)

학습에 사용되는 코퍼스 내 토큰(단어) 개수가 많아질 수록 학습 성능이 높아지긴 하였으나,

복잡도가 높아 임베딩 벡터 차원이 증가하고 코퍼스가 커질수록 학습에 소요되는 시간이 어마어마하게 길어짐

 

따라서,

1. 더 많은 코퍼스와 큰 임베딩 벡터 차원에서도 학습의 효율성을 어느 정도 보장하면서

2. 실제 단어 간의 관계를 잘 반영할 수 있는 단어 -> 벡터 임베딩 방법이 필요했음

 

학습 시간 복잡도

모델을 학습하는데 소요되는 시간 복잡도는 다음과 같은 수식으로 일반화하여 표현할 수 있음

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

E는 학습 epoch 수(보통 3~50 사이)

T는 학습에 사용되는 단어의 개수(최대 약 10억)를 의미하고,

Q는 학습 모델 구조에 따른 세부적인 복잡도를 의미함, 우리는 앞으로 Q에 집중할 것임!

 

기존 모델

전방 전달 신경망 언어 모델 구조(NNLM)

Feedforward Neural Net Language Model(NNLM)의 경우 크게 다음과 같은 구조로 이루어져 있음

Input Layer - Projection Layer - Hidden Layer - Output Layer

쉽게 생각해서 앞에 등장했던 N개의 단어를 보고 다음 단어가 무엇일지 예측하는 모델이라고 생각하면 됨.

 

N : 학습에 반영할 앞에 등장했던 단어 개수(10 정도를 많이 사용)

V : 코퍼스 내 단어의 종류 수(수백만 정도인 경우도 있음)

H : Hidden Layer Size(보통 500 ~ 1000)

D : 단어 임베딩 차원(이전 실험에서 50 ~ 100차원을 많이 사용함)

 

학습 복잡도는 다음과 같은 식으로 정리가 됨

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

\(N \times D\)는 Projection Layer에서 발생하는 텀(별로 큰 숫자는 아님)

\(N \times D \times H\)는 Hidden Layer에서 발생하는 텀

\(H \times V\)는 각 V개의 가능한 경우의 단어에 대한 벡터를 업데이트 해주어야 함으로 발생

 

위에서 일반적으로 사용되는 숫자의 크기만 고려해 보았을 때,

\(H \times V\)가 압도적으로 전체 식을 지배하는 텀

 

그러나, 바이너리 트리를 활용한 가중치 계산 방법을 도입하면 해당 부분을 \(H \times log_2(V)\) 정도로 낮출 수 있고,

허프만 트리를 사용한 최적화된 방법으로 여기서 약 2배 정도 더 복잡도를 감소시킬 수 있음

참고로, V가 100만 이어도 \(log_2(V)\)는 약 20정도에 그침

 

결국, \(N \times D \times H\)가 전체 식을 지배하는 텀에 해당함

ex) N = 10, D = 50, H = 500인 경우 약 25만에 해당

순환 신경망 언어 모델 구조(RNNLM)

Recurrent Neural Net Language Model(RNNLM)의 경우 앞의 단어를 몇 개를 반영할지(window size, 위에서 N으로 정의)를 직접 정해주지 않아도 되고, 단어 순서 관계에 내재된 더 복잡한 관계를 학습시킬 수 있다는 장점이 있음

여기서는 Projection Layer가 없고, Input Layer - Hidden Layer - Output Layer로 구성됨

 

이 모델에서 학습 복잡도는 다음과 같은 식으로 정리가 됨

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

 

\(H \times V\)는 위에서와 마찬가지로 \(H \times log_2(V)\) 정도로 낮출 수 있으므로,

여기서 결국 지배적인 텀은 \(H \times H\)에 해당함

ex) H = 500인 경우 약 25만에 해당

 

새로운 log-linear 모델(CBOW, Skip-gram)

 

Hidden Layer에서의 병목을 줄이는 것이 핵심, 따라서 Hidden Layer를 없애고 빠른 학습 속도로 좋은 성능을 나타낼 수 있는 모델을 고안하려 함, 간단한 모델로 단어 벡터를 대략적으로 학습시킨 뒤, 이를 정교한 학습을 위해 이용하는 방법을 택함

앞으로 소개할 두 모델은 Input Layer - Projection Layer - Output Layer의 구조를 가짐

 

Continuous Bag-of-Words Mode(CBOW)

NNLM과 유사한 구조를 가지는데, 해당 가운데 단어의 앞 뒤 N단어씩의 벡터 값을 projection 시킨 결과값을 더하여 해당 가운데 단어를 예측하는 방식

 

학습 복잡도는 다음과 같이 정리할 수 있음

$$ Q = N \times D + D \times log_2(V)$$

 

비교적 큰 값이었던 H에 해당하는 텀이 사라지면서 복잡도가 감소한 것을 확인할 수 있음

ex) N = 10, D = 50, H = 500, V = 100만인 경우 약 1500에 해당

 

Continuous Skip-gram Model

이 방법은 CBOW와 유사하기는 한데, 가운데 단어를 대상으로 양 옆의 N단어씩 주변 단어를 맞추는 반대 방향의 모델이라고 볼 수 있음

 

학습 복잡도는 다음과 같이 산출할 수 있음

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

C는 앞에서 양 옆으로 몇 단어까지 주변단어로 볼 것인지에 대한 단어 개수임(여기서는 C = 10 사용)

여기서도 D = 50, V = 100만인 경우 약 1만에 해당하는 것을 확인할 수 있었음

 

CBOW와 Skip-gram 모델은 다음과 같은 사진으로 요약할 수 있음

실험 결과

 

big - biggest 와 small - smallest 는 비슷한 관계를 가질 것으로 예상됨

이러한 단어 간의 관계를 잘 맞추는지를 측정하기 위하여 의미론적 단어 매칭 관계와 문법론적 단어 매칭 관계를 얼마나 잘 예측하는지를 테스트했음

 

8869개의 의미론적 단어 매칭 관계와 10675개의 문법론적 단어 매칭 관계를 대상으로 단어와 관계가 주어졌을 때, 얼마나 높은 정확도로 관련된 단어를 예측해내는지로 정확도를 구했음, 단 동의어로 예측한 경우도 오답으로 간주

ex) big-biggest, small ? -> smallest가 답, tiny 등은 오답으로 간주

정확도 측정은 빈도수가 가장 높은 3만개 단어를 대상으로 진행했으며, New York 처럼 2개 이상 토큰이 하나의 단어를 구성하는 경우는 제외했음

 

흥미로운 결과는

$$ Vector(King) - Vector(Man) + Vector(Woman) = Vector(Queen)$$

와 같이 단어 간의 의미론적/문법론적 관계가 단어 벡터 공간 상에 잘 반영이 되어있다는 것을 확인할 수 있었음

 

단어 임베딩 차원을 50 ~ 600차원까지 늘려보았을 때, 그리고 학습에 사용된 토큰 개수를 2400만 ~ 7억8천만개 까지 늘려보았을 때, 단어 임베딩 차원 수 및 데이터셋 크기를 늘릴 수록 정확도가 뚜렷하게 증가하는 경향이 관측됨

 

CBOW는 문법론적 관계를 가장 잘 예측했으며(64% 정확도)

Skip-gram은 의미론적 관계를 다른 모델들에 비해서 압도적으로 잘 예측함(55% 정확도 vs CBOW는 24%)

CBOW, Skip-gram 모두 NNLM, RNNLM보다 의미론적, 문법론적 모두에서 우세한 성능 관측

 

학습 epoch를 3 epoch로 할 때와 1 epoch로 할 때, 같은 조건의 1 epoch는 시간이 훨씬 덜 걸리지만 정확도가 아주 크게 밀리지는 않았으며, 1 epoch로 벡터 차원을 늘린 경우 등에서는 3 epoch의 낮은 벡터 차원보다 전체 시간은 적게 소요되면서 정확도가 향상된 경우도 있었음

 

Microsoft Research Sentence Completion에서 Skip-gram과 RNNLM의 결과를 혼합해서 사용할 때, 이전 RNNLM을 사용한 경우보다 성능 향상이 있었음

 

분산 배치 학습을 진행하여 학습 복잡도의 한계를 더 많이 극복할 수 있었으며, 효율적인 CBOW, Skip-gram 방법론의 제시로 50~100 차원을 넘어 더 높은 차원의 임베딩에 도전해볼 수 있는 잠재력을 보여줌