Efficient Estimation of Word Representations in Vector Space (Word2Vec 리뷰)

hangdi·2024년 5월 11일
0

논문 제목 : Efficient Estimation of Word Representations in Vector Space

논문 링크 : https://arxiv.org/pdf/1301.3781.pdf

Abstract

우리는 large data set에서 단어의 연속적인 vector representation(단어 → 벡터로 표현하는 것)을 계산하기 위한 두 가지 새로운 모델 아키텍쳐를 제안한다.

이런 representations의 quality는 단어의 유사성에서 측정이 되는데, 이 결과는 이전의 다양한 유형의 neural network를 기반으로 한 가장 성능이 좋았던 techniques 비교된다.

결과

  • 계산량이 많이 줄었음에도 accuarcy 측면에서 큰 향상을 보였다.
  • 고품질의 1.6 billion개의 단어 벡터를 학습하는데 하루가 걸리지 않았다. (빠르다)
  • syntactic(문법) 및 semantic(의미론적) 단어 유사성을 측정하는 test set에서 SOTA를 달성했다.

1. Introduction

현재까지 많은 NLP 모델들은 단어를 원자 단위로 봤음 → 단어들 사이에 유사성에 대한 개념은 없었다!

이전 연구가 이런 방식을 선택한 이유

  • 단순하다
  • robustness(견고함 = 일반화 잘됨)
  • 엄청 거대한 데이터로 학습된 simple model이 적은 데이터로 학습된 복잡한 모델보다는 더 성능이 뛰어났다는 점
  • 예시 : N-gram(statistical language modeling)
    • 다음 단어를 예측할 때 문장 내 모든 단어를 고려하지 않고 특정 단어의 개수만 고려
    • 즉, N-gram은 N개의 연속적인 단어의 나열을 하나의 묶음(=token)으로 간주

문제점

  • 그런데, 이런 simple model을 선택하니 여러 task에서 한계가 있었다.
  • ex) 자동 음성 인식을 위한 관련 도메인 내 데이터양이 제한되어있다.
    • 성능은 원래 음성 데이터의 사이즈에 의해서 결정되어지는데, 이미 존재하는 corpora는 수십억개의 단어거나 그 이하밖에 안됨
  • 그래서 기본 테크닉들을 scaling up하는건 기술에 발전이 있지는 않을 것

해결 방법

  • 단어의 distributed representation을 사용하는 것
    • Sparse Representation/distributed representation

      희소 표현(Sparse Representation)


      원-핫 인코딩을 통해서 얻은 원-핫 벡터 : 표현하고자 하는 단어의 인덱스의 값만 1이고, 나머지 인덱스에는 전부 0으로 표현되는 벡터 표현 방법 이와 같이 벡터 또는 행렬의 값이 대부분이 0으로 표현되는 방법을 희소 표현(sparse representation)이라고 한다.

      단점

      • 각 단어 벡터간 유의미한 유사성을 표현할 수 없음

      • 차원이 너무 많아지므로 데이터양 증가

        해결

      • 단어의 의미를 다차원 공간에 벡터화하는 방법을 사용 → 분산 표현(distributed representation)

      • 분산 표현을 이용하여 단어 간 의미적 유사성을 벡터화하는 작업 → 워드 임베딩(embedding) → 이렇게 표현된 벡터를 임베딩 벡터(embedding vector)

        분산 표현(Distributed Representation)


        distributed hypothesis(분포 가설)라는 가정하에 만들어진 표현 → 비슷한 문맥에서 등장하는 단어들은 비슷한 의미를 가진다.

        ex) 강아지라는 단어는 귀엽다, 예쁘다, 애교 등의 단어와 주로 등장하는데, 이 단어들을 벡터화를 하면 해당 단어 벡터들은 유사한 값을 가진다

        이렇게 표현한 단어들은 원-핫 벡터처럼 벡터의 차원이 단어 집합의 크기일 필요 X

      • 벡터의 차원이 저차원으로 줄어듦

        예시

        ex) 갖고 있는 텍스트 데이터에 단어가 10,000개 있고 강아지란 단어의 인덱스는 4였다면 강아지란 단어를 표현하는 원-핫 벡터는 다음과 같다

        Ex) 강아지 = [ 0 0 0 0 1 0 0 0 0 0 0 0 ... 중략 ... 0]
      • 1이란 값 뒤에 9,995개의 0의 값을 가지는 벡터가 됨

        하지만 Word2Vec으로 임베딩 된 벡터는 굳이 벡터 차원이 단어 집합의 크기가 될 필요가 X

        강아지란 단어를 표현하기 위해 사용자가 설정한 차원의 수를 가지는 벡터가 되며 각 차원의 값은 실수값을 가진다.

        Ex) 강아지 = [0.2 0.3 0.5 0.7 0.2 ... 중략 ... 0.2]

        요약

      • 희소 표현(Sparse Representation)이 고차원에 각 차원이 분리된 표현 방법이었다면, 분산 표현은 저차원에 단어의 의미를 여러 차원에다가 분산 하여 표현

      • 이런 표현 방법을 사용하면 단어 벡터 간 유의미한 유사도를 계산할 수 있다.

        • 이를 위한 대표적인 학습 방법이 Word2Vec

결과

  • neural network를 기반으로 한 언어 모델은 N-gram 모델보다 더 뛰어난 결과를 얻었다.

1.1 Goals of the Paper

이 논문의 메인 목표

  • 수십억개의 거대한 단어셋으로부터 high-quality의 word vector를 표현하는 기술을 소개하는 것
  • 이전에 제안된 아키텍처 중 어느 것도 단어 벡터의 적당한 차원(50에서 100 사이)으로 몇 억 개 이상의 단어에 대해 성공적으로 훈련되지 않았다.

유사한 단어가 서로 근접하는 경향이 있을 뿐만 아니라, 단어가 여러 수준의 유사성을 가질 수 있을 것으로 예상하여 최근에 제안된 vector representation의 quality를 측정하는 기술을 사용한다.

  • 이건 inflectional languages(변화성 어미)에서 찾을 수 있음
  • 예를 들어서, 명사는 여러가지 어미를 가질 수 있는데, origin vector space의 subspace에서 유사한 단어를 검색하면 유사한 의미를 갖는 단어를 찾을 수 있다.
    • 명사가 여러가지 어미를 가질 수 있는데, 이러한 언어에서는 같은 어미를 가진 단어들이 서로 유사하다고 볼 수 있다.
      • -의(소유격을 나타내는 조사) : 친구 책, 선생님 가방
      • -에(장소나 시간을 나타내는 조사) : 학교 가다, 집 있어요
    • origin vector space랑 subspace는 뭔말;; subspace는 원래의 벡터 공간에서 특정한 속성(예: 단어의 어미)에 초점을 맞춘 작은 공간을 의미 즉, 이는 단어 벡터 표현을 사용하여 특정 언어적 특성(여기서는 단어의 어미)에 기반한 단어들의 유사성을 탐색할 수 있다는 것을 나타냄

그리고 word representation의 유사성은 단순한 구문적인 규칙성을 넘어선다. word vector에 대해 간단한 대수 연산을 수행하는 word offset을 사용하면

  • vector(king)vector(Man)+vector(Woman)vector(”king”) - vector(”Man”) + vector(”Woman”)의 결과는 vector(Queen)vector(”Queen”)의 결과와 가깝다는 결과를 볼 수 있다.

그래서 이 논문에서는 단어 사이의 linear regularities를 보존하는 새로운 모델 구조를 개발함으로써, vector operations의 정확도를 극대화하기 위해 노력한다.

  • Syntatic : 언어의 문장 구조 (문법 규칙, 단어 순서, 구조)
  • Semantic : 단어나 문장이 가지는 의미와 개념 한 것
    1. Syntatic과 Semantic 규칙성 전부를 측정하는 test set을 만든다.
    2. 그리고 이런 규칙성이 더 높은 정확도로 학습될 수 있음을 보여준다.
    3. training time과 accuracy가 얼마나 벡터의 차원과 training data의 양에 연관되어있는지를 보여준다.

1.2 Previous Work

2. Model Architectures

논문에서는 neural networks에 의해서 학습되어진 distributed representations of word에 집중할 것

  • 이전에 연구된 단어 사이의 linear regularities를 보존하는데 LSA보다 성능이 더 좋다.
    • linear regularities
      • 단어 벡터들 사이의 일관된 선형 관계
        • 왕(king) - 남자(man) + 여자(woman) = 여왕(queen) → 단어 벡터들 사이에 존재하는 일관된 선형 관계를 보여줌
        • 유사한 단어들은 벡터 공간에서 서로 가까이 위치
  • LDA는 대규모 데이터셋에서 계산비용이 너무 비싸다.
💡 모델을 전체적으로 학습할때 **필요한 파라미터 수를 모델의 계산복잡도**라고 정의 💡 정확도는 maximize, 계산복잡도는 minimizing하려고 할 것

우선 이 모델의 training complexity는 다음과 같다.

O=E× T×QO = E \times \ T \times Q
  • E : training의 epoch 수이며 일반적으로 E는 3에서 50으로 설정된다.
  • T : training dataset의 단어 수이며 10억개 이상으로 설정된다.
  • Q : 모델의 특성에 따라서 결정된다.
  • 모델은 stochastic gradient descent 와 backpropagation 사용

2.1 Feedforward Neural Net Language Model (NNLM)

  • NNLM

    NNLM의 구성요소

    • input, projection, hidden, output layers로 구성

    • projection layer
      - hidden layer는 활성화함수로 비선형성을 띔
      - projection layer는 가중치와 행렬의 연산만 이루어질 뿐, 활성화 함수가 존재하지 않아 linearity가 그대로 유지

      모델링 학습 과정

    • "what will the fat cat sit on" 문장 → "what will the fat cat on" 의 빈칸을 예측하는 문제

    • "will", "the", "fat", "cat"의 네가지 단어로 다음 단어를 예측하고자 함.

    • window: 특정 단어를 예측하기 위해 앞(또는 뒤)의 단어 몇 개를 참고할 것인지의 지표.
      - 여기서 window size = 4

      Untitled

    1. input layer
    • input 단어들을 one-hot-encoding
    1. input layer → projection layer

      Untitled

    • input의 원-핫 벡터와 projection의 가중치가 곱해져 W의 특정 행을 그대로 읽어온 lookup table이 만들어짐
      • lookup table이 뭔데;
        • 원-핫벡터와 가중치 W 행렬의 곱은 W행렬의 i번째 값을 그대로 읽어오는 것(lookup)과 동일 → 그래서 lookup table이라고 부른다.
    • input layer [N×VN \times V] → WW [V×M][V \times M] → projection layer [N×M][N \times M]
      • N : 입력받은 input의 수
      • V : 단어 집합의 크기
      • M : projection vector의 크기
      • input이 projection layer를 거치면서 차원 수가 줄어든다. Untitled
    • 이렇게 만들어진 efate_{fat}은 학습을 계속하면서 값이 변경이 되는데, 이것을 embedding vector라고 한다.
      • projction layer는 활성화 함수가 없어서 이 값이 hidden layer로 그대로 들어감
    1. projection layer → hidden layer
    • projection에서 받은 값을 W,bW,b를 이용해 행렬곱을 하고 activation function을 거친다.

      Untitled

    1. hidden layer → output layer
      1. 행렬 곱과 softmax function을 수행해서 얻은 y^\hat{y}을 실제 yy값과 cross entropy로 비교
      2. loss 계산
      3. back propagation으로 가중치들을 학습

      헷갈리는 점 짚고 가기

    • 이건 다음 올 단어를 예측하는 classification 문제임

    • NNLM의 핵심
      - 충분한 양의 훈련 코퍼스를 위와 같이 학습하면, 수많은 문장에서 유사한 목적으로 사용하는 단어들은 결국 유사한 임베딩 벡터를 얻게 된다는 것

      이점과 한계

    1. 이점 : 기존 모델에서의 개선점
    • NNLM은 단어를 표현하기 위해 임베딩 벡터를 사용하므로서 단어의 유사도를 계산할 수 있었다.
    • 이를 통해 희소 문제(sparsity problem)를 해결
    1. 한계 : 고정된 길이의 입력(Fixed-length input)
    • NNLM은 n-gram 언어 모델과 마찬가지로 다음 단어를 예측하기 위해 모든 이전 단어를 참고하는 것이 아니라 정해진 n개의 단어만을 참고할 수 있다.
    • 한계 극복 → RNNLM

NNLM같은 경우, projection layer는 dense하기때문에 projection layer와 hidden layer사이에 연산이 복잡함

  • 일반적으로 N=10으로 선택이 되면, projection layer PP는 500에서 2000 사이, hidden layer size HH는 500에서 1000 사이가 된다.
  • 그리고 hidden layer는 전체 단어에서 해당 단어가 다음 단어일 확률 분포를 계산하는데 사용되어진다.
    • 결과적으로 차원이 V인 output layer가 생성됨

training example의 계산 복잡도

Q=N×D+N×D×H+H×VQ = N \times D + N \times D \times H + H \times V

Untitled

💡 $**N \times D$** : **input layer → projection layer**
  • 단어들을 projection

H×V**H \times V** : hidden layer → output layer

  • 모든 단어에 대한 확률 분포를 계산하는데, 이를 줄이기 위해 hierarchical softmax를 사용하여 H×log2(V)H \times log_2(V)로 만들거나 normalized model의 사용을 피한다.
    • hierarchical softmax
      • output layer에서 softmax 계산시 계산 비용을 줄이는 방법
      • binary tree representation을 통해 log2(V)log_2(V)로 줄어든다.
    • 이 방법을 통해 N×D×HN \times D \times H에서 대부분의 복잡도를 일으키게 됨

N×D×H**N \times D \times H : projection layer → hidden layer**

  • Huffman binary tree
    • 빈번하게 등장하는 단어들에 짧은 binary tree를 할당하여 bit 수를 줄이는 방법
  • balanced binary tree는 log2(V)ouputlog_2(V) ouput이 evalute 할 때 필요하지만
  • Huffman tree based hierarchical softmax는 log2(Unigram_perplexity(V))log_2(Unigram\_perplexity(V))가 필요함.
    - 유니그램(unigram) : n-gram을 사용할 때 n이 1일 때를 말하는 것
    - unigram_perplexity : 1개 토큰으로 이뤄진 문장에 대해서 V 단어를 예측할 때 얼마나 혼란도 (낮을수록 좋음)
    - 필요한 출력수를 줄인다.

2.2 Recurrent Neural Net Language Model (RNNLM)

Untitled

feedforward NNML의 한계점을 극복한 것이 바로 RNNLM

  • context length의 길이를 고정하지 않아도 됨

    • RNN이 shallow neural network(얕은 신경망)에 비해 자연어 처리와 같은 분야에서 더 복잡한 패턴을 효과적으로 표현할 수 있기 때문
  • RNNLM

    RNNLM은 time step 개념을 도입하여 RNN을 언어 모델에 적용

    Untitled

    RNNLM 구성요소

    • RNN 모델은 projection layer가 필요 X

    • 오직 input, hidden state, output layer만 필요

      모델링 학습 과정

    • "what will the fat cat sit on"이라는 문장이 있을 때, 이전 시점의 출력이 현재 시점의 입력으로 들어옴

    • test 할 때 "what will the fat"이 입력으로 들어오면 "sit"을 예측한다.
      - teacher forcing
      - RNN의 train 과정에서 모델이 t 시점에서 예측한 값을 t+1 시점에 입력으로 사용하지 않고, t 시점의 레이블. 즉, 실제 알고있는 정답을 t+1 시점의 입력으로 사용
      - 훈련 과정에서도 이전 시점의 출력을 다음 시점의 입력으로 사용하면서 훈련 시킬 수도 있으나, 이는 한 번 잘못 예측하면 뒤에서의 예측까지 영향을 미쳐 훈련 시간이 느려지게 되므로 교사 강요를 사용하여 RNN을 좀 더 빠르고 효과적으로 훈련시킬 수 있다.

      Untitled

    1. input layer
      • input을 one hot encoding 한다.
    2. input layer → embedding layer
      • NNLM의 projection layer를 RNNLM에서는 embedding layer라고 한다.
    3. embedding layer → hidden layer
      • embedding vector인 ete_t를 이전 시점의 hidden state인 ht1h_{t-1}과 함께 현재 시점의 은닉 상태인 hth_t를 계산한다.
    4. hidden layer → output layer
      • 행렬곱을 하고 softmax를 한 yt^\hat{y_t}을 실제 y값과 비교하여 loss를 계산하고 back propagation으로 가중치들을 update

이러한 유형의 모델에서 특별한 점은 time-delayed connections를 사용하여 hidden layer를 자신에게 연결하는 recurrent matrix이다. 이러한 recurrent model은 short term memory를 형성하며, 이 과거의 정보는 이전의 time step에서의 hidden layer의 state와 현재 input을 기반으로 업데이트를 한 hidden layer state로 표현될 수 있다. (=RNN)

RNN의 training example의 계산 복잡도는 다음과 같다.

Q=H×H+H×VQ = H \times H + H \times V
💡 time-delayed connection을 사용하여 hidden layer에 **recurrent** 한 연결이 있어서 이전의 정보에 대한 단기기억을 가질 수 있다.

H×H**H \times H**: hidden(t-1) → hidden(t)

H×VH \times V : hidden → output

  • hierarchical softmax로 H×VH \times V 대신 H×log2(V)H \times log_2(V) 사용 가능
  • 대부분의 계산 복잡도는 여기서 나오게 됨

2.3 Parallel Training of Neural Networks

거대한 데이터셋을 학습하기 위해서는 DistBelief라고 불리는 large-scale distributed framework 위에 feedforward NNLM이나, 여기서 제안한 새 모델을 포함한 여러 모델들을 구현한다.

  • 모델들의 복제본을 만들어서 병렬적으로 실행할 수 있게 해줌
  • 복제본들은 모든 파라미터를 유지하면서 중앙 서버에서 동시적으로 기울기를 업데이트

이 병렬적인 training을 위해서, mini-batch asynchronous gradient descent를 Adagrad라는 adaptive learning rate procedure를 이용하여 최적화한다.

이 프레임워크에서는 100개 이상의 모델 복제본을 사용하고, 데이터 센터의 서로 다른 machine에서 multi-core를 사용한다.

Untitled

3. New Log-linear Models

이 섹션에서는 단어의 학습되는 distribute representation의 계산 복잡도를 최소화하기 위한 두가지 모델이 제안된다. 앞에서 봤다싶이 모델의 복잡도는 non-linear hidden layer에서 발생된다. 그래서 우리는 neural network보다 더 정확히 표현할 수는 없지만, 더 많은 데이터에 대해 더 효율적으로 훈련할 수 있는 모델을 탐구한다.

새로운 아키텍쳐는 이전 연구를 따라가는데, 이전 neural language model은 성공적으로 2단계로 학습되었다.

  1. 간단한 모델로 연속적인 워드 벡터를 학습한다.
  2. 이러한 distributed representations 위에서 N-gram NNLM이 학습된다.

3.1 Continuous Bag-of-Words Model (CBOW)

NNLM이랑 비슷한 구조인데, 여기서 non-linear hidden layer를 제거하고 → projection layer를 전체 단어와 공유

  • 그러므로, 모든 단어가 같은 포지션으로 project 된다 = 모든 단어가 동일한 메커니즘을 통해 임베딩 공간에 표현된다는 것
  • 이러한 구조를 bag-of-word 모델이라고 하는데, 단어의 이전 순서가 projection에 영향을 주지 않기 때문이다.
    • 언어 모델에서는 hidden layer가 단어의 순서와 문맥을 인식
    • 모델에서 단어의 순서나 문맥이 고려되지 않는다는 것
    • 문장 내에서 단어가 나타나는 순서는 임베딩 또는 투영 과정에 영향 X Untitled
  • CBWM CBWM 모델 구성
    • input layer, projection layer, output layer

    • projection layer에 activation function이 없어서 linearity가 유지

      모델링 학습 과정

    • "The fat cat ___ on the mat"의 빈칸에 "sat"이 들어감을 예측하기

      • 주변 단어 (context word): "fat, cat, on, the" (window size=2일 때)
      • 중심 단어 (center word): "sat"
      • window : 중심단어 앞뒤로 몇 개의 문장으로 예측할 것인지 ?
      • sliding window : training 과정에서 중심단어와 주변단어를 바꿔가며 window 크기에 따라 training set을 바꾸는 과정 Untitled
      1. input layer

        • input에서 window size만큼 주변단어를 선택하여 one hot vector를 만든다.
        • 하나의 중심 단어에 대해 여러 개의 주변 단어들이 input으로 들어온다.

        Untitled

        • 입력층과 투사층 사이의 가중치 W는 V × M 행렬이며, 투사층에서 출력층사이의 가중치 W'는 M × V 행렬
          • V : 단어 집합의 크기를 의미
          • 위의 그림처럼 원-핫 벡터의 차원이 7이고, M은 5라면 가중치 W는 7 × 5 행렬이고, W'는 5 × 7 행렬이 될 것
          • 주의할 점은 이 두 행렬은 동일한 행렬을 전치(transpose)한 것이 아니라, 서로 다른 행렬
          • 인공 신경망의 훈련 전에 이 가중치 행렬 W와 W'는 랜덤 값을 가지게 됨
          • 가중치 벡터가 두개 !! input → projection / projection → output
      2. input layer → projection layer

        • 각 input에 대해 가중치가 곱해지고 input 개수만큼 look up table이 생성됨
        • n개의 input이 들어오면 생성된 n개의 look up vector를 평균 내주어야 함
        • look up table을 거쳐 생성된 vfatv_{fat}, vcatv_{cat}, vonv_{on}, vthev_{the}를 분자로, 2 * (window size)를 분모로 넣어줘서 v 벡터를 만들어준다. 여기에 activation function은 거치지 않는다.
          • 만약 윈도우 크기 n=2라면, 입력 벡터의 총 개수는 2n이므로 중간 단어를 예측하기 위해서는 총 4개가 입력 벡터로 사용

          • 이것의 의미
            - “나는 사과가 좋다”, “나는 포도가 좋다” 라는 문장이 있고 그걸 주변 단어들을 평균내서 임베딩하면, 주변 단어가 비슷한 것들은 유사한 임베딩을 가지고 있으므로, 유사 단어끼리 유사한 배열을 가지게 됨

            Untitled

            Untitled

      3. projection layer → output layer

        • 평균 벡터는 두번째 가중치 행렬 W'와 곱해지는데, 곱셈의 결과로는 원-핫 벡터들과 차원이 V로 동일한 벡터가 나옴
        • 행렬곱을 하고 softmax 함수를 취하여 구한 y^\hat{y}을 실제 y값과 cross entropy로 비교하여 loss를 계산하고 back propagation으로 가중치를 update Untitled

        Untitled

그러면 훈련 복잡도는 다음과 같다.

Q=N×D+D×log2(V)Q = N \times D + D \times log_2(V)
💡 $**N \times D**$ : **input → projection** $D \times log_2(V)$ : **projection → output**

bag-of-word와 다르게, CBOW는 단어의 맥락을 파악해서 사용한다.

중요한점은, input과 projection layer 사이에 weight matrix는 NNLM과 같은 방식으로 전체 단어 position과 공유되어진다는 점!

Untitled

3.2 Continuous Skip-gram Model

각각 현재 단어를 연속적인 projection layer의 log-linear classifier의 input으로써 사용한다. 그리고 현재 단어의 전후에 일정 범위 내의 단어를 예측한다.

  • Skip-gram Untitled CBOW와 반대 방향의 모델로, 중심 단어로부터 주변 단어를 예측하는 모델 Untitled
    • CBOW와 다르게 벡터들의 평균을 구하는 과정이 불필요

      • 왜냐면 하나의 단어만 입력벡터로 사용해서 output을 내기 때문에 평균을 구할 필요 X
    • window size를 늘려서 word vector 결과의 퀄리티를 높일 수 있지만 계산 비용이 증가한다.

    • 단어의 거리가 멀수록 보통 단어의 거리가 가까운 것보다는 더 연관성이 적기 때문에, 멀리 떨어진 단어들에 대해 가중치를 적게 둘 수 있다.

      Untitled

이러한 아키텍쳐의 훈련 복잡도는 다음과 같다.

A=C×(D+D×log2(V)),A = C \times (D+D\times log_2(V)),
  • CC : maximun distance of the words (단어 사이의 최대 길이)
    • 만약, C=5C=5로 선택하게 되면, 각각의 training word에 대해서 <1;C><1;C>의 범위의 숫자 RR을 랜덤하게 선택하게 되고
    • 그리고 과거의 R개 단어, 미래의 R개 단어를 correct label로 사용하게 된다.
    • 이렇게 하려면 현재 단어를 인풋으로 하고, R+RR+R 단어를 출력으로 하여 이것은 R×2R \times 2의 word classifications를 해야한다. (여기서는 C=10을 사용)

4. Results

4.1 Task Description

Untitled

word vector의 퀄리티를 측정하기 위해서, 데이터를 5개의 의미론적 질문과, 9가지 문법적 질문을 포함하는 종답 테스트 셋을 정의했다. 전체적으로 8869개의 의미론적 10675개의 문법적 질문을 만들었다.

각각 카테고리 안에 질문들은 2 step으로 만들어지는데,

  1. 유사한 단어쌍 리스트를 수동으로 만든다.
  2. 그리고 질문 리스트는 두개의 단어쌍을 연결하면서 만들어진다.
  • ex) 우리의 68개의 미국 대도시들과 그에 속한 state에 대한 리스트를 만들었고, 각각의 단어 쌍을 뽑아서 2.5K개 정도의 질문을 만들었다.
  • 테스트 셋에서는 single token word만 포함시켰고, multi-word는 포함시키지 않았다.
    • New York은 떨어져 있으므로 두개의 토큰으로 구성 → multi-word
    • Greece는 하나의 토큰으로 구성 → test set에 포함

위 방법을 사용하여 계산된 벡터에 가장 가까운 단어가 정답과 정확히 일치하는 경우에만 문제가 정확하게 대답된 것으로 가정한다.

  • 동의어 같은 경우에는 오답으로 처리했다.
  • 그리고 단어 형태에 대한 입력 정보가 없기 때문에 정확도가 100%에 달한다는건 불가능하다. → 단어의 구조, 특히 구문 질문에 대한 정보를 통합함으로써 추가적인 발전을 이룰 수 있다.

4.2 Maximization of Accuracy

Untitled

CBOW 구조의 서로 다른 word vector 차원과 훈련 data set의 크기에 따른 결과

  • 벡터의 차원과 훈련 데이터를 키우면 점점 정확도가 향상됨을 보여주고 있음
  • 따라서 벡터의 차원과 훈련 데이터의 크기를 함께 키워야만 한다.

4.3 Comparison of Model Architectures

Untitled

각각 모델에 대해서 Semantic-Syntatic Word Relationship test set으로 정확도를 비교한 결과

  • 서로 다른 모델을 비교하기 위하여 똑같은 데이터와 모든 모델을 640차원의 word vector로 맞춰서 실험
  • 더 나아간 실험에서는 우리는 모든 Semantic-Syntactic Word Relationship test set을 사용
    • 즉, 3만개의 단어 제한을 두지 않았다. (밑에서부터는 단어 셋을 제한 하지 않았다. 여기서는 3만개로 제한)
  • 의미론적, 구문론적 결과 차이나는 이유
    • 여기서 CBOW보다 Skip-gram이 높은 성능을 보이는 이유가 나타난다. 언뜻 생각하기에는 주변의 네 개 단어(윈도우=2인 경우)를 가지고 중심단어를 맞추는 것이 성능이 좋아보일 수 있다. 그러나 CBOW의 경우 중심단어(벡터)는 단 한번의 업데이트 기회만 갖는다.
    • 반면 윈도우 크기가 2인 Skip-gram의 경우 중심단어는 업데이트 기회를 4번이나 확보할 수 있다. 말뭉치 크기가 동일하더라도 학습량이 네 배 차이난다는 이야기!
      • 이 때문에 요즘은 Word2Vec을 수행할 때 Skip-gram으로 대동단결하는 분위기이다.

Untitled

오직 하나의 CPU를 사용하여 공적으로 사용 가능한 word vector들과 비교하여 평가하였다.

  • 더 적은 단어 셋으로도 성능이 훨씬 좋음

Untitled

  1. 각 모델을 같은 데이터로 3 epoch로 훈련한 결과 비교
    • CBoW 모델은 Google News data의 sub set으로 약 하루동안 training
    • Skip-gram 모델은 약 3일동안 training
  2. 같은 모델을 1 epoch로 비교한 결과 비교
    • 1 epoch를 사용하여 두 배나 많은 데이터에 대해 모델을 훈련하면 3 epoch 동안 동일한 데이터에 대해 반복하는 것보다 유사하거나 더 나은 결과를 얻을 수 있으며 속도도 조금 향상된다.

4.4 Large Scale Parallel Training of Models

Untitled

DistBelief distribute framework에서 모델 훈련한 것 비교

  • 50~100개의 복제본을 이용하여 CPU의 갯수에 따른 훈련 결과
  • Google News 60억개를 mini-batch 비동기화와 Adagrade를 이용하여 훈련
    • NNLM을 1000-dimension으로 하면 너무 시간 오래 걸림

4.5 Microsoft Research Sentence Completion Challenge

Untitled

Microsoft Research Sentence Completion Challenge에서 모델 비교 및 조합한 성능 결과

  • Microsoft Research Sentence Completion Challenge
    • advancing LM과 다른 NLP 기술에 대한 task
    • 1040문장 존재
    • 문장에 단어 하나가 누락되어 있고 5개의 보기들이 주어질 때, 문장과 가장 일치하는 단어를 골라야 됨
    • Skip-gram model은 LSA기반의 model보다 좋은 성능을 보이지 못했다.
    • 이전까지 SOTA는 55.4%였는데, Skip-gram + RNNLMs가 성능이 58.9%가 나오면서 성능이 제일 좋았다.

5. Examples of the Learned Relationships

Untitled

relationship이라는건 두 word vector를 뺀 것, result는 거기에 다른 단어를 더하는 것으로 정의 됨

  • ex) Paris - France + Italy = Rome

여기서 차원을 더 확장한 큰 데이터셋으로 학습하면 더 성능 좋아질것이고, relationship의 예시를 하나 이상 더 제공한다면 성능 더 좋아질 것이다.

  • relationship 데이터를 사용하기 위해서 10개 이상의 예시를 사용하니까 정확도가 10%정도 올랐음

이러한 벡터 연산은 다른 태스크를 푸는데도 적용될 수 있는데, 예를 들어, 우리는 단어 목록에 대한 평균 벡터를 계산하고 가장 먼 단어 벡터(연관 없는 벡터)를 찾아 목록에서 찾는데 도움이 된다.

6. Conclusion

이 논문에서는 다양한 모델을 통해 파생된 단어의 벡터 표현의 품질을 구문적 및 의미적 언어 작업 모음에 대해 연구했다.

연구 결과, 인기 있는 신경망 모델(feedforward and recurrent 모델 전부 포함)과 비교했을 때, 매우 단순한 모델 아키텍처를 사용하여도 고품질의 단어 벡터를 훈련시킬 수 있음을 확인했다.

훨씬 낮은 계산 복잡성으로 인해, 훨씬 큰 데이터 세트에서 매우 정확한 고차원 단어 벡터를 계산할 수 있다.

DistBelief 분산 프레임워크를 사용하면, 기본적으로 어휘 사이즈에 제한 없이 1조 단어가 넘는 코퍼스에 대해서도 CBOW와 Skip-gram 모델을 훈련시킬 수 있다. 이는 유사한 모델에 대해 이전에 발표된 최고의 결과보다 몇 단계 더 큰 규모이다.

단어 벡터가 최근에 이전의 최상의 기술을 크게 능가하는 것으로 나타난 흥미로운 작업은 SemEval-2012 Task 2에서이다. 공개적으로 이용 가능한 RNN 벡터들이 다른 기술들과 함께 사용되어 이전 최고 결과보다 스피어만의 순위 상관관계를 50% 이상 향상시켰다.

신경망 기반의 단어 벡터는 이전에도 많은 다른 NLP 작업에 적용되었다.

  • ex) 감성 분석과 문장 재구성 검출 등에 사용되었다. 이 논문에서 설명하는 모델 아키텍처로부터 이러한 응용 분야들이 혜택을 받을 수 있을 것으로 기대된다.

우리의 진행 중인 작업은 단어 벡터가 지식 베이스에서 사실의 자동 확장과 기존 사실의 정확성 검증에 성공적으로 적용될 수 있음을 보여준다. 기계 번역 실험 결과 또한 매우 유망하다.

profile
눈물 콧물 흘리면서 배우는 코딩

0개의 댓글

관련 채용 정보