ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Word2Vec] Efficient Estimation of Word Representations in Vector Space(Mikolov, Skip-gram & CBOW) 2013
    Paper Review(논문이야기) 2024. 2. 2. 15:02

     

    https://arxiv.org/abs/1301.3781

     

    Efficient Estimation of Word Representations in Vector Space

    We propose two novel model architectures for computing continuous vector representations of words from very large data sets. The quality of these representations is measured in a word similarity task, and the results are compared to the previously best per

    arxiv.org

    NLP 쪽 논문을 한번 큰 틀에서 리뷰해보려고 한다. 

    RNN 계열 모델들과 Attention을 기반으로한 Transformer 모델, 그리고 Word Embedding기반의 Word2vec모델, 크게 3가지 틀로 나누어볼 수 있는데, 해당 관련 논문리스트는 아래와 같다.

     

    * RNN 계열의 Model: 고정된 크기의 context vector 사용 / 단어의 순서를 학습

    • RNN : Recurrent neural network based language model (2010) (처음 등장은 1986)
    • LSTM : Long Short Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling (2014) (처음 등장은 1997)
    • GRU :  Learning Phrase Representation using RNN Encoder-Decoder for Stistical Machine Translation (2014)
    • Seq2Seq : Sequence to Sequence Learning with Neural Networks (2014)

    * Attention Mechanism: 입력 시퀀스 전체에서 정보 추출하는 방향으로 발전 (Context Vector 고정 X)

    • Attention : Neural Machine Translation by Jointly Learning to Align and Translate (2015)
    • Transformer : Attention is All You Need (2017)

    * Word Embedding : 단어를 임의의 벡터로 표현  

    • Word2Vec : Efficient Estimation of Word Representations in Vector Space (2013)

    * Transformer Architecture 기반의 Pretrained Language Model들 / 단어의 순서(위치 정보/Positional Encoding 등)를 한번에 넣어 병렬 처리 

    • GPT-1 : Improving Language Understanding by Generative Pre-Training (2018)
    • BERT : Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)
    • GPT-2 : Language Models are Unsupervised Multitask Learners (2018)

    이 있으며(https://asidefine.tistory.com/180 참고하여 리스트 작성) 이 중 일부를 우선 하나씩 리뷰해보려고 한다.

    Abstract

    We propose two novel model architectures for computing continuous vector representations of words from very large data sets: 이번 논문에서는 단어를 표현하기 위한 연속적인 vector들을 계산하는데 효과적인 2개의 model(CBOW, Skip gram)을 소개한다 

    결과적으로 이 모델들은 기존의 모델보다 더 적은 계산량을 가지고 훨씬 좋은 성능을 보임을 증명하였음뿐만 아니라, 단어의 유사도를 측정하는 성능이 SOTA에 해당하는 성능을 보였다.

    Introduction

    Many current NLP System and techniques treat word as atomic units: 많은 NLP 모델들이 단어를 가장 작은 기준단위로 두고 있다(+이는 단어 사이의 유사성에 관한 개념을 두지 않고 독립변수로 본다). 

    이는 모델이 Robust하면서 simplicity 관점에서 장점을 가지는데, 특히 적은 데이터로 복잡한 모델을 학습하는 것보다, 많은 데이터로 단순한 모델을 학습시키는 것이 성능이 더 좋게 나오는 관점에서 큰 장점이 될 수 있다

    이는 N-gram model이 대표적 예시이다

    언어모델은 문장 내 앞서 등장한 단어를 기반으로 이어 등장할 적절한 단어를 예측하는 모델이다.
    이는 크게 2종류로 구분되는데, Statisical Language Model(SLM)과 인공신경망 기반의 ANN 모델이다. 
    이 중 N-gram은 전자에 속하는 모델로, 다음 단어를 예측할 때 문장 내의 모든 단어가 아닌 특정 N개의 단어만 고려하는 모델이다. 즉 N개의 단어를 고려한 뒤 해당 단어 sequence에서 확률적으로 높은 단어를 뽑는 모델이다.

     

    하지만, 많은 데이터가 있다고 해서 단순한 모델들이 좋은 것은 아니다. 예를 들어 자동음성 인식을 위한 도메인 내의 데이터들은 제한되어있고, 학습을 위한 corpora(말뭉치)에는 수십억 단어 정도만이 포함되어 있다는 한계점이 존재한다. 그럼으로 이런 상황들은 단순한 모델의 확장만으로는 한계가 있음을 시사한다.

    최근에는 다행스럽게도, Machine learning 기술들이 발전이 있었고, 이에 따라 더 복잡한 모델에 더 큰 데이터를 학습시키는 것이 가능해졌고, 기존의 단순한 model에 비해 outperfrom하고 있음을 보여주었다. 

     

    이 논문(paper)의 목표는 좋은 품질의 단어 vector들을 대용량 dataset에 있는 biilions(수십억)의 단어와 사전에 존재하는 million(100만개)의 단어를 이용해 구하는 기술을 보이는 것이다.  

    특히 유사한 단어를 단순히 가까이 존재시키는 것이 아니라, 다양한 차원의 유사도에서 유사함을 표현한 것이다(can have multiple degrees of similarity). 

    이는 기존에 굴절어(inflectional languages, 문법에 따라 단어가 변하는 언어 I my me mine 등)에서 확인 가능했다.

     

    논문에서는 결과적으로 단어간 유사도는 단순히 구문적 규칙성 이상을 보여주는 것을 확인했다고 말하면서 예시로 King, Man, Woman을 벡터공간에 표현하고, King - Man + Woman = Queen이라는 벡터를 얻어내는 것에 성공했다고 한다. 

     

    결론적으로 단어들 간의 선형 규칙성(Linear Regularites)을 보존하는 새로운 모델을 만드는 것을 목적으로 하였다.

     

    Model Architectures

    기존 연구들에서도, 단어를 continuous vector로 표현하려는 시도는 매우 많았고, 그 중 가장 유명한 것은 neural network language model(NNLM)이다. NNLM은 기존의 N-gram model에서 sparseness를 해결한 모델로, 훈련 데이터 셋에서 주어지지 않았던 unseen work sequence에 대해 극복하였으나, 그만큼 연산량에 있어서 매우 큰 대가를 치루어야한다.

    NNLM은 단어벡터들을 single hidden layer를 가지는 Neural network에 의해 학습시키는데(using Linear Projection layer & Non-linear hidden layer) 이번 논문은 이런 NNLM이 word embedding을 더 효과적이고 효율적으로 학습하게 개선하고자 했다. 

     

    이미 잘 알려진 Latent Semantic Analysis(LSA)와 Latent Dirichlet Allocaton(LDA) 방법을 포함해 단어들의 continuous representation을 표현하는 방법들이 있다. 하지만 이번 논문에서 제시한 방법은 LSA보다 선형성을 더 잘 유지하고, LDA는 대규모 dataset에 계산상 cost가 크다는 것이 알려져 있음으로 이를 극복하였다. 

    유사하게 다른 모델과 비교하기 위해 computational complexity를 모델의 파라미터의 수를 통해 측정하였고, 결론적으로 정확도를 최대화하면서 연산의 복잡도는 최소화하는 것이 목적이다. 

    이는 아래의 수식을표현되며, E: 학습의 에폭수, T: dataset에 포함된 단어의 수, Q: 각 모델에서 정의된 복잡도이다.

     

    모든 모델은 SGD와 Backpropagation을 이용해 학습했다. 

     

    Recent Study1: Feedforward Neual Net Language Model

    NNLM 모델의 구조. 출처:https://wikidocs.net/45609

    NNLM 모델은 흔히 우리가 아는 ANN모델과 동일하다. Input layer, Hidden layer, Output layer로 구성되어있다.

    주어진 입력 단어의 수를 N개, 총 단어의 수를 V개라고 하면(총 단어의 수 == 문장의 단어수, 단어가 중복되는 경우도 있기에) input의 vector는 NxV의 행렬을 이룬다. 이때 input은 one-hot vector형태로 들어온다.

    이후 이를 Projection layer를 통해 N*D차원으로 변형시킨다.

    이렇게 만들어진 행렬은 다시 hidden layer에서 N*H행렬로 변형되어 출력되고 최종적으로 N*V로 재출력 된다. 이때 softmax를 activation function으로 사용해 확률 분포로서 단어를 표현하게 된다. 

     

    사실 모델의 형태보다, 일반적으로 N=10일 때 hidden layer의 paramer 수가 500~1000, projection layer는 500~2000정도임으로 hidden layer로 투사할 때 계산복잡도가 증가한다고 한다. 

    ( For a common choice of N = 10, the size of the projection layer (P) might be 500 to 2000, while the hidden layer size H is typically 500 to 1000 units)

     

    해당 아키텍쳐의 cost는 아래와 같다. 

    이 때, 가장 지배적인 항은 H*V이지만  Hierarchical Softmax를 이용하면 V를 log(V) term으로 변형 가능하고, 시간복잡도를 지배하는 항은 N*D*H로 바뀐다. 

    Recent Study2: RNNLM

    RNNLM의 구조. 출처:https://wikidocs.net/46496

    RNNLM은 위에서 본 NNLM이 N의 크기(context length)를 직접 설정해줘야한다는 단점을 지니고 있었던 점을 극복하고, RNN의 특징상 더 complex한 pattern을 표현할 수 있기에 사용되게 되었다. 

     

    RNN은 projection layer가 따로 존재하지 않는 모델이다. 

    따라서 시간복잡도는 위와 같다. 동일하게 hierarchial softmax를 이용해 뒤에 term을 log term으로 변형가능하다. 

     

     

    Recent Study3: Parallel Training of Neural Networks

    저자들은 대용량 데이터셋을 사용하기 때문에, 이런 대용량 데이터셋에 대해 잘 학습하고 병렬처리가 가능한 딥러닝 프레임워크인 DistBelief를 사용하였다. DistBelief는 Google에서 만든 Tensor Flow의 조상격으로 DistBelief를 통해 병렬적으로 서로 다른 모델이나 동일한 모델들을 실험할 수 있었다고 밝혔다. 

    해당 프레임워크는 같은 모델을 복제시켜 데이터 batch들에 관해 병렬적으로 학습을 진행하고, 각각의 복제본은 중앙의 server를 통해 기울기 update를 동기화했다. 이는 결국 Data Distributed Parallel Modeling이라고 보면 될것이다. 

    출처: 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

     

     

    Continous Bag-of-words & Skip-gram

    위에서 본것처럼 주된 복잡도는 은닉층에서 발생하였다. 물론 이 은닉층이 신경만 관점에서 매우 필요하다, 계산복잡도를 낮추기 위해 보다 단순한 모델을 고려해보았다. 그것이 아래의 CBOW와 Skip-gram이다.

    논문 Figure1 출처

    CBOW(중간단어를 맞추어)

    cbow구조는 nnlm과 매우 유사하지만, hidden layer가 제거되고 모든 단어가 projection layer를 공유하고 있는 형태의 Feedforward NNLM과 같다. 모든 단어는 동일한 행렬로 projection된다. 

    이러한 구조를 Bag of word 모델이라고 하며, 단어의 순서를 반영하지 않고, 단어의 빈도만을 반영하는 모델을 말한다. 

    hidden layer를 없엠으로서 아래의 효과를 기대할 수 있다. 

    1. 연산량 소요를 줄인다

    2. NNLM의 hidden layer는 여러 word embedding vector를 하나의 output으로 압축하는 역할을 했다면, 이를 CBow에서는 거치지 않기에 projection layer가 word embdeeing vector의 평균을 의미한다. 즉, 데이터 손실이 더 적어졌다고 해석 가능하다.

     

    추가적으로 input의 차이가 있는데, log-linear classifier를 4개의 과거단어와 4개의 미래단어를 input으로 사용하여, 가운데에 있는 target단어를 나타내도록하는 방법을 훈련으로 사용했다. 

    이는 NNLM이 이전 word만을 이용해 target word를 예측하도록 훈련한것과 차이가 있다.

     

    Skip-gram(중간단어로 주변 단어를 맞추자)

    skip gram은 CBOW와 반대로 input과 output이 뒤바뀐 경우라고 생각하면 된다. 즉, 중간의 단어를 이용해서 input 단어의 이전과 이후 단어를 예측하는 모델이다. 

    여러 단어에 대해 prediction을 수행하기에 CBOW보다 같은 dataset에 관해서 연산량이 많고, 범위를 증가시킬 수록 계산 복잡성이 증가하는 특징이 있다(이는 단어간의 간격이 멀수록 단어간 연관성이 낮기에 데이터의 가중치를 낮게 두어 나타난것도 있다)

    하지만 skip gram의 경우 평균을 사용하지 않고, 온전히 데이터를 사용하기에 등장빈도가 낮은 단어들이 더 효과적으로 학습된다는 장점이 있다. 

    모델 복잡도

    모델의 훈련 복잡도는 위의 식과 같다. 이때 각 항은 아래와 같다

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

    Results

    Task Description

    평가는 아래와 같이 이루어졌다. 이전 논문에서는 예제 단어와 유사한 word pair를 보여주는 방식으로 사용했었다. 즉, 수도에 관해 맞춘다거나 하는 방식이었다(자세한건 아래의 표를 보자). 하지만 이러하나 방식으로는 더 복잡한 유사도를 제대로 평가하기 어렵다고 말한다. 

    기존에 사용했던 단어쌍, 의미론적 문법적으로 유사한 관계

    두개의 단어쌍 자체가 비슷한 맥락에 있을 수도 있다. 

    예를 들어 big-bigger, small-smaller는 비슷한 맥락에서 유사도를 갖고, 마찬가지로 big-biggest, small-smallest 쌍도 비슷한 맥락에서 유사도를 갖는다. 이런 단어쌍 2개를 사용해서 같은 맥락에 존재하는지 알아내기 위해 다음과 같은 질문을 모델에게 해볼 수 있다. "biggest가 big와 유사한 맥락에서 small과 비슷한 단어는 무엇인가?" 다소 놀랍게 이 질문에 대한 답변은 간단한 벡터 연산으로 다루는 것이 가능하다.

    vector로 단어표현하기

    그리고 벡터공간상에서 X와 유사도가 가장 큰(논문에서는 cos유사도 사용) 단어를 찾아서 정답으로 말하는 것이다.

    그리고 위의 질의방법으로 연산을 하여 코사인 유사도를 구했을 때, 가장 가까이 있는 단어가 정답과 정확히 일치하는 경우 정답으로 처리했다. 

    실험한 전체 데이터셋에는 8,869개의 의미론적 유사도를 갖는 단어 쌍과 10,675개의 구문론적 유사도를 갖는 단어 쌍이 존재했다.

    Dimenstion and dataset

    저자들은 Google new의 말뭉치를 이용하여 모델의 학습을 진행하였고, 해당 데이터에는 6Billion의 데이터가 존재, 이중 자주등장하는 단어는 1B이어서 이를 기준으로 학습에 사용하였다.

    단어를 표현하는 벡터의 차원을 증가시킬 수록 정확도는 증가했지만, 동시에 계산량이 늘어이를 적절히 조정했다.

    차원과 dataset의 규모에 따른 정확도 변화

    위의 표를 보면 알 수 있듯이, 단수히 차원을 증가시키거나 데이터셋을 늘리면 정확도가 낮아지지만, 차원과 데이터셋의 크기를 함께 늘려 정확도를 올릴 수 있었다고 한다. 

     Compariosion of Model Architectures

    다른 모델들과 평가를 진행한 결과는 아래와 같다. 이때 정확한 평가를 위해 단어의 차원은 640, 데이터셋의 크기도 모두 고정하였다.

    각 모델별 결과

    Syntactic(문법) accuracy관점에서 RNN 모델의 성능도 꽤 좋았지만, NNLM성능과 CBOW의 성능이 더 좋게 나왔다. 

    또한 Skip Gram 구조는 Semantic Accuracy(의미적 유사도) 관점에서 성능이 탁월하였으며, Syntactic accuracy(문법적 유사도) 관점에서는 CBOW보다 살짝 아쉬운 결과를 보였다.

     

    또한 추가적으로 DistBelief를 이용하여 Google news의 60억개의 데이터를(즉, Large scale data) 학습 시켰을 때(50~100개의 복제본 사용, min-batch, Adagrad) 결과는 아래와 같다.

    Microsoft Resarch sentence completion Challenge

    Microsoft Research Sentnece Completion Challenge는 당시 소개된 advancing LM과 다른 NLP에 대한 task로, 1040개의 문장으로 구성되었있으며, 이 중 일부 단어가 빠져있을 때 가장 맞는 단어를 고르는 task에 관한 것이다. 

    위의 표를 보면  Skip-gram과 이전까지 가장 좋은 성능을 보인 RNNLMs의 결과와 weight를 결합(단순히 가중치 평균화를 한거 같다, 논문에서는 해당방법에 관해 자세히 서술하지는 않음)하였을 때 58.9%로 좋은 성능을 나타냈음을 알 수 있다.

    Conclusion

    CBow와 Skip-gram이라는 연산량이 현저히 적으면서 우수한 성능을 보이는 모델을 제시함과 동시에 모델 평가에 새롭게 이용가능한 dataset을 제시한 것에 의미가 있다.

Designed by Tistory.