Word2Vec 1 : Efficient Estimation of Word Representations in Vector Space - 논문 리뷰

govlKH·2023년 7월 19일
0

논문리뷰

목록 보기
19/45

Word2Vec : Efficient Estimation of Word Representations in Vector Space

Word2Vec 1이라고 불리는 논문이며, 텍스트 데이터를 벡터화하기 위해 가장 많이 사용된 '원핫인코딩 방식' 혹은 'NNLM에서 사용되는 밀집표현 방식' 대신 "CBoW"와 "Skip-gram"을 이용하여 단어들의 유사성을 vector로 표현하고 target단어를 도출하며, 이를 통해 Word Embedding을 효율적이고 정확하게 향상시켰다는 평가를 받습니다.

0. Abstract

본 논문에서는 큰 text 데이터 셋에서 벡터 표현을 하기 위한 두 가지 모델 Skip-gram과 CBow 아키텍쳐를 제안합니다. 흥미로운 점은 단어 표현의 방법으로 king - man + woman = queen (모두 벡터) 과 같은 연산이 가능하다는 점입니다.

1. Instroduction

논문 발표 당시 2013년에는 NLP 시스템에서 사요오디는 단어 표현 방법들은 단어를 원자 단위로 다루었고, 개별적인 단어를 표현할 뿐(index 역할밖에 하지 못 함) 단어 사이의 유사성은 표현하지 못 했습니다.

대표적으로 통계적인 언어 모델링을 이용한 N-gram이 있는데, 이러한 표현 방법은 방대한 양의 데이터에 대해 굉장히 간결하게 언어를 표현할 수 있다는 장점에 반해 이런 단순한 기술은 많은 task에서 한계점을 보입니다.

가령 특정 도메인에 한정된 데이터의 경우는 데이터 셋의 크기가 얼마인지에 따라 성능의 차이가 납니다. 하지만 NLP 분야에서 높은 수준의 정제된 데이터와 corpora의 부족으로 의미있는 개선을 가져오기 어렵습니다. 따라서 본 논문에서는 이를 극복하고자 개선된 techniques을 강구합니다.

1.1 Goals of the paper

본 논문에서는 위와 같은 문제들을 해결하고자 방대한 양의 데이터 셋으로부터 고품질의 word vector를 표현하는 기술을 제안합니다.

How?) 여러 차원에서 단어의 유사성을 표현하는 방법(cos 유사도)을 제안합니다. 이 방법을 이용한다면 단순한 vector offset 연산으로 단어의 유사성을 표현할 수 있습니다.
( ex) vec(king) - vec(man) + vec(woman) = vec(queen) )

또한 이는 선형대수적 연산도 보존하며 벡터 표현의 정확성을 최대화하였습니다. 또한 본 논문에서는 문법적인 요소의미적인 요소 를 모두 평가할 수 있는 종합적인 test set을 설계하고, 훈련에 필요한 시간복잡도까지 논의합니다.

1.2 Previous Work

연속된 벡터로 단어를 표현하는 연구(word embedding)는 긴 역사를 갖고 있습니다. 대표적으로 Neural Network Language Model(NNLM)은 Linear projection layer와 Non-linear hidden layer를 사용하여 단어를 벡터로 표현하고자 했습니다. 이를 통해 통계학적인 언어 모델과 결합되어 사용되었습니다.

NNLM은 word vector를 처음으로 single hidden layer를 이용하여 학습하는 방법을 제안합니다. 본 논문에서 이와 유사하게 간단할 모델을 이용하여 word vector를 학습하는 방법을 제안합니다.

2. Model Architectures

본 논문에서는 신경망에 의해 학습된 단어의 분산 표현에 초점을 맞추며, Latent Semantic Analysis(SLA) or Latent Dirichlet Allocation(LDA) 보다 성능도 좋으며 cost에 있어서도 훨씬 효율적인 방식을 제안합니다. 모델 복잡도는 파라미터 개수로 측정되는데 정확도를 최대화하며 연산의 복잡도는 최소화하는 것이 목적입니다. 최종적인 연산의 복잡도는 아래와 같습니다.

E : 훈련의 epoch 수
T : training set의 word 수 (학습될 단어의 수)
Q : 각 모델의 구조 및 특성에 따라 결정

모든 모델은 stochastic gradient descent와 backpropagation을 이용하여 학습되었습니다.

2.1 Feedforward Neural Net Language Model(NNLM)

여기서 소개하는 Feedforward NNLM과 RNNLM은 본 논문에서 소개될 CBoW와 Skip-gram과의
성능 비교를 위해 나타난 것입니다. 이 모델을 소개하는 것이 주된 목적은 아닙니다.


Feedforward Neural Net Language Model(NNLM)은 input layer, projection layer(linear), hidden layer(non-linear), output layer를 갖습니다.

  • 입력 input : NxV 원핫벡터 모음
    (V : 총 단어의 개수 , N : 입력 단어의 개수(V개 중 중복이 있을 수 있기에))
  • projectoin layer(linear) : 각 입력 vector(1xV) 들(NxV) 이 들어오면, VxD projection matrix에 의해 1xD vector 들(NxD) 로 이루어집니다.
  • hidden layer(non-linear) : 이렇게 만들어진 NxD 행렬은 DxH 행렬을 만나 NxH 행렬을 출력합니다.
  • output layer : 최종적으로 HxV 출력층을 통해 NxV(각각은 입력과 동일하게 1xV)로 출력됩니다.
    -> 여기에 softmax를 취해 확률분포를 구하고, 정답과의 cross entropy를 최소화하는 방식으로 진행됩니다.

cross entropy를 최소화하는 방식은 아래의 연산 복잡도와 같습니다.

이 때 최대 cost(가장 부하가 큰 연산)는 hidden layer에서 output을 만들어내는 연산인 H x V이지만,
시간 복잡도를 줄이기 위해 hierarchical softmax를 사용하여 연산량을 H x log2(V)까지 낮추어
projection layer에서 만들어내는 연산인 N x D x H 부분의 cost가 최대가 되도록 합니다.

2.2 Recurrent Neural Net Language Model(RNNLM)

RNNLM은 RNN을 이용하여 더욱 얕은 신경망을 이용해 복잡한 패턴을 표현하고, 이를 통해 feedforward NNLM의 한계를 극복하고자 제안된 모델입니다.

RNN을 이용한 model은 Projection layer를 갖지 않습니다. 오직 input, hidden, output으로 이루어져있습니다. 고정된 개수의 word만을 가지고 input으로 받는 NNLM과 달리, 이전의 모든 word들에 대한 정보를 recurrent에게 hidden layer에 담기에 이것은 짧은 기간에 대한 기억을 갖을 수 있게 되고 hidden state에 대해 과거 정보에 대한 기억을 가지고 현재 input의 정보를 update할 수 있게 도와줍니다. RNN 모델 훈련의 계산 복잡도는 아래와 같습니다.
D를 H와 동일하게 만들었으며, 이 식은 다시 계층적 softmax를 취하면 H x V 는 H x log2(V)로 표현할 수 있게 됩니다.(이 경우 부하가 가장 큰 연산은 H x H가 됩니다)

2.3 Parllel Training of Neural Networks

방대한 데이터 셋에 대해 모델을 훈련시키기 위해 분산 연산 framework인 DistBlief를 사용합니다. 이 프레임워크는 같은 모델을 복제시켜 데이터를 batch들에 대해 병렬적으로 실행됩니다. 각각의 복제본은 중앙의 server 를 통해 기울기 update가 동기화됩니다. 이런 병렬적 훈련을 위해 mini-batch의 비동기적인 기울기 손실을 Adagrad를 이용해 최적화하고, 경사하강법을 이용해 최적의 learning rate를 알아서 찾습니다. 이는 우리가 알고 있는 Data Distributed Parallel Modeling(DDP 분산 데이터 병렬 처리) 이라고 생각하시면 됩니다. 이 프레임워크에서는 일반적으로 100개 이상의 복제본을 이용하고, multi-core 연산을 수행합니다.

3. New Log-linear Models

이 섹션에서는 연산량을 최소화하며 단어의 분산 표현을 학습할 수 있는 본격적인 두 모델 CBoW와 Skip-gram을 소개합니다!

앞 섹션에서 주요한 점은 연산 복잡성이 non-linear hidden layer 때문이라는 점이었습니다.

단어 표현의 정확도를 줄이더라도 더욱 효율적인 훈련이 가능한 모델을 연구하고자 두 모델이 등장하였으며, 본 논문에서 제안하는 새로운 두 모델의 훈련을 두 단계로 나눕니다.
1) 연속적인 word vector는 단순한 모델을 이용하여 학습
2) 그 위에 N-gram NNLM은 그렇게 학습된 word vector들로 학습을 진행

3.1 Continuous Bag-of-Words Models : CBoW


첫 번째로 제안된 CBoW model은 hidden layer가 제거되고 모든 단어가 projection layer를 공유하고 있는 형태의 feedforward NNLM과 유사합니다.

* NNLM vs CBoW
공통점 : word vector 1개 예측
NNLM의 목표 : 이전 word들만을 사용해 다음 word 1개를 예측
CBoW의 목표 : 양방향의 word 총 N개를 사용해 word 1개를 예측

모든 단어는 동일한 행렬로 projection됩니다. 이러한 구조를 Bag of Word(Bow) 모델이라고 하는데 이전에 projection된 단어들의 순서가 큰 영향을 미치지 못하기 때문입니다.(단어들을 한 가방에 담고 흔든 느낌) 이에 더하여 CBoW 미래 단어를 사용해 훈련을 진행합니다. 이를 통해 연속적인 분산된 문맥을 표현할 수 있는 것 입니다.

CBoW는 NNLM에 비해 연산 복잡도를 감소시켰습니다.
NNLM의 projection layer는 activation ft을 사용하지 않는 linear layer이지만, hidden layer는 activation ft을 사용하는 non-linear layer이었습니다. 계층적 softmax를 사용했다는 가정 하에 가장 연산량이 많이 소요되는 layer는 hidden layer였으므로 CBoW는 이를 제거하여 전체 연산량을 줄인 것 입니다.
NNLM에서 hidden layer의 존재는 여러 word embedding vector를 하나의 vector로 압축하는 것이었다면, CBoW에서는 non-linear를 거치지 않고 단순하게 평균을 냅니다.
그렇기에 CBoW의 Projection layer는 word embedding vector들의 평균입니다.
연산 복잡도는 아래와 같습니다.

3.2 Continuous Skip-gram Model


이 모델은 앞의 CBoW와 유사하지만, input/output이 뒤바뀐 경우로 각각의 단어를 input으로 사용하여 input 단어 이전, 이후 정해진 범위의 단어들을 예측합니다. 여러 단어에 대해 prediction을 수행하기에 당연하게도 CBoW에 비해 연산량이 많습니다. 또한 이전 이후 범위를 증가시킬 수록 결과는 향상되었지만 계산 복잡성 또한 증가했습니다.(이는 단어 간의 간격이 멀수록 보통 단어 간의 연관성이 낮기에 훈련 데이터의 가중치를 낮게 하였습니다) 하지만 Skip-gram은 input word를 평균내지 않고 온전히 사용하기에 등장 빈도가 낮은 단어들에 대해 CBoW 대비 효과가 크다는 장점이 있습니다. (CBoW에서는 각 word vector들을 평균내어 사용하기에 등장 빈도가 낮은 단어는 제대로 학습되지 않기 때문입니다)

훈련 복잡도는 아래와 같습니다.

C : 단어 간 거리의 최대값 (논문에서는 5로 선택)
R : R만큼의 개수의 단어들을 랜덤하게 선택 ([1,C) 에서의 임의의 수)
현재 word 이전 R개 이후 R개의 word에 대해서 predict를 수행 (Rx2개의 단어 분류를 필요)
(R의 기댓값은 (1+(C-1))/2 = C/2이고, predict를 두 번 수행하기에 
Rx2 = C 이므로 전체 계산 복잡도는 1회 수행할 때의 값에 C를 곱한 값)

이들을 쌍으로 만들어 단어들을 학습시키고 최종적으로 중심 단어를 통해 주변 단어를 예측하는 모델 구조를 형성합니다.

4. Results

과거 연구는 직관적으로 단어 간의 유사도가 높은 것들을 테이블로 제시했었습니다. 하지만 단어 유사도라는 것은 vector로 단순하게 만들 수 있는 것은 아닙니다.
(ex) 프랑스와 이탈리아가 국가명이라는 두 단어의 유사성을 만들어주는 것은 어렵지 않지만, 이를 확장하여 다른 나라들까지의 유사성을 만들어주는 것은 어렵습니다.)

본 논문에서는 이러한 방식에서 발전하여 word들 사이의 상관 관계를 뽑아내어 다른 word에도 적용시키는 방식을 도입하였습니다.
(ex) big:biggest :: small:? => samllest를 찾습니다)
논문에서 제시한 model로 학습한 word vector는 단순한 선형 계산만으로 이런 task를 해결할 수 있습니다.
: vec(biggest) - vec(big) + vec(small) 을 연산하고, 벡터 공간에서 이와 cosine 거리가 가장 가까운 단어를 찾으면 vec(smallest)를 구할 수 있습니다.

이와 같은 semantic한 의미까지 담은 word vector를 활용할 경우 많은 NLP task에서 뛰어난 성능 향상을 보일 수 있습니다.

4.1 Task Description


위와 같은 semantic, syntax 관계들을 목록화하였고, 각 관계들에 대해 직접 word pair들을 수집 후 섞어서 random한 pair들을 만들어냅니다. 이렇게 생성한 dataset으로 test를 수행합니다. 이 때 정답과 완전히 동일한 단어를 예측한 경우에만 정답으로 간주합니다. (동의어나 유사어 오답처리)

맨 처음 예시로 들었던 Queen = King - Man + Woman 처럼 실제 동일한 값이 나오는지 확인한 것 입니다. 위로 예시를 들면 Athens = Greece - Norway + Oslo

4.2 Maximization of Accuracy

본 논문에서는 word vector training에 Google News Corpus를 사용하였고, 이 Corpus는 약 60억개의 토큰으로 이루어져 있습니다. 본 논문의 실험에서는 빈도수가 높은 10만개의 단어로 단어의 수를 제한하였습니다.

word vector의 dim과 training words를 바꿔가며 실험을 진행하였습니다. 둘 중 하나를 고정시키고 다른 하나만을 증가시키면, 일정 수준에서 accuracy가 증가하지 않는 현상을 볼 수 있습니다. dim과 words 모두 증가시켜야 성능의 효과적인 개선을 확인할 수 있었습니다. 기존 많은 연구에서 단순 training dataset의 크기만 늘려가며 성능을 높으려 하였지만, 많은 word가 training된다면 이에 대한 정보들을 담을 수 있는 충분한 dimension이 확보되어야 더욱 향상된 성능을 기대할 수 있다는 사실을 알 수 있습니다.

4.3 Comparision of Model Architectures


RNNLM이 가장 낮은 성능을 보였으며, CBoW와 Skip-gram은 모두 NNLM을 넘어섰습니다. 특히 Skip-gram은 Semantic accuracy에서 다른 model들을 압도했습니다.

위는 오직 하나의 CPU를 사용하여 공적으로 사용 가능한 word vector들과 비교하여 평가한 결과입니다. 아래는 CBoW와 Skip-gram의 dim, words, epoch의 변경에 따른 결과입니다.

4.4 Large Scale Parallel Trarining of Models

앞에서 언급한 바와 같이 분산 연산 framework인 DistBelief를 사용하였습니다. Google News 60억개를 mini-batch 비동기화와 Adagrade 를 이용하여 훈련하였습니다. 50~100개의 복제본을 이용하여 CPU개수에 따른 훈련결과는 아래와 같습니다.

4.5 Microsoft Research Sentnece Completion Challenge


Microsoft Research Sentnece Completion Challenge는 최근에 소개된 advancing LM과 다른 NLP에 대한 task로, 1040개의 문장으로 구성되어 있으며 각 문장은 하나의 단어가 빠져있습니다. 이에 대한 목표는 가장 일관성있는 단어를 선택하는 것입니다. 위의 표와 같이 Skip-gram과 이전까지 가장 좋은 성능을 보인 RNNLMs의 결과와 weight를 결합하였을 때 58.9%로 좋은 성능을 나타냈습니다.

5. Examples of the Learned Relationships


단어 사이의 상관관계를 분석하여 다른 단어에 대해 유사한 관계를 갖는 단어를 예측하는 task에 대해, 본 논문의 model은 60%의 acc를 달성했습니다. 더 높은 정확도를 달성하기 위해서는 더 많은 dataset을 사용하고, 단어 사이의 상관관계 vector를 여러 단어쌍 사이의 subtract vector의 평균으로 만들어내면 될 것입니다.

6. Conclusion

CBoW와 Skip-gram이라는 새로운 word embedding 학습 방법을 제안했습니다. 기존 여러 model들에 비해 연산량이 혀저히 적고, 간단한 model임에도 우수한 성능을 보였습니다. 또한 word embedding vector의 syntax, semantic 성능을 측정할 수 있는 새로운 dataset도 제시하였습니다.


출처 : https://velog.io/@xuio/NLP-%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Sequence-to-Sequence-Learning-with-Neural-Networks-xikn77tw
https://coshin.tistory.com/43

profile
수학과 대학원생. 한 걸음씩 꾸준히

2개의 댓글

comment-user-thumbnail
2023년 7월 19일

많은 도움이 되었습니다, 감사합니다.

1개의 답글