Efficient Estimation of Word Representations in Vector Space

멋쟁이토마토·2024년 2월 18일
0

Paper Review - NLP

목록 보기
1/7

논문 원본 - https://arxiv.org/pdf/1301.3781.pdf

Abstract

large data set으로부터 단어들의 연속적인 벡터 표현을 계산하기 위해 두 가지 새로운 모델 구조를 제안함.

representation의 quality는 단어 유사도 측정되어지고 결과는 이전에 가장 성능이 좋았던 다른 타입의 신경망 기반으로 한 기술과 비교되어짐.

➡ 더 낮은 연산 비용을 사용해서 정확도에서 큰 성능 향상을 관찰 + 16억 단어 데이터셋에서 high quality word vectors를 학습하는 데 하루가 안 걸림.

vectors가 syntactic and semantic word similarities를 측정하기 위한 테스트셋에서 SOTA 달성

Introduction

현재(2013년 기준) 많은 NLP system과 techiniques에서 단어를 atomic unit으로 취급함.
➡ 단어 간 유사성의 개념 X / vocabulary에서 index로 표현됨.

📌 word embedding

one-hot encoding
표현하고자 하는 단어를 1, 나머지 단어를 0으로 채운 (1, 단어 개수) 크기의 벡터

✅ 한계점
▶ 단어 간의 상관관계 및 유사도 판단 X
(W)TW=(W)TW=0(W^귤)^TW^배 = (W^귤)^TW^감 = 0

▶ sparse한 representation vector (실제로 의미있는 표현이 희소함 - 희소 표현 문제)

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

  • 단어 벡터간 유사도 및 Syntactic regularities 계산 가능
  • '비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다'는 가정
  • word2vec (https://word2vec.kr/search/)

이러한 방식의 장점

① simplicity

② robustness

③ 대량의 데이터에서 훈련된 simple model이 적은 데이터로 학습된complex system보다 좋은 성능

예를 들어, 통계적 언어 모델링에 사용되는 N-gram 모델

📌 N-gram
n개의 연속적인 단어 나열

example> An adorable little boy is spreading smiles
unigrams : an, adorable , little , boy , is , spreading , smiles
bigrams : an adorable , adorable little , little boy , boy is, is spreading , spreading smiles
trigrams : an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
4-grams : an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles

그러나 simple technique은 많은 task에 한계가 있음.

예를 들어, automatic speech recognition 관련 도메인 데이터의 양이 제한적임. 성능은 보통 high quality transcribed speech data의 크기에 영향을 받는데, machine translation에서 많은 언어에 대한 corpora는 몇 십억 단어 이하임.

➡ basic technique의 simple scaling up에 의미있는 진전 X, more advanced technique에 집중해야 함.



최근 몇 년간 machine elarning technique의 발전으로 더 많은 데이터셋을 더 복잡한 모델에 학습시키는 것이 가능해졌고 이는 일반적으로 단순한 모델에 비해 좋은 성능을 보임.

단어의 분포 표현을 사용하는 것이 가장 성공적인 컨셉임. (ex. 언어 모델 기반 신경망은 N-gram model을 능가함.)


Goals of the Paper

✅ 연구의 주요 목표

: 수십억 단어의 큰 데이터셋과 수백만 단어의 vocabulary에서 high-quality word vector를 학습하는데 사용한 기술 소개

(이전 연구에서는 이렇게 큰 데이터셋으로 훈련한 사례❌, 단어 벡터의 차원도 50-100이었음.)

비슷한 단어들이 서로 가까이 위치하도록 기대 ➕ 단어 간에 다양한 유사성 정도를 고려함

이러한 다양한 유사성 정도는 inflectional language의 context에서 이전에도 관찰됨.

example> 명사는 multiple word endings를 가질 수 있고, original vector space의 subspace에서 비슷한 단어를 찾을 때 similar endings를 찾을 수 있음.


단어 표현의 유사성은 simple syntactic regularities을 뛰어넘음. 단어 벡터에 수행하는 word offset technique을 사용해서 vector(”King”) - vector(”Man”) + vector(”Woman”) = vector("Queen") 와 같은 연산 수행

단어 간의 선형 규칙을 유지하는 새로운 모델 아키텍쳐를 개발하여 벡터 연산의 정확도를 극대화하고자 함.

syntactic & semantic regularities를 측정하기 위한 new comprehensive test set 설계하고, 많은 regularities이 높은 정확도로 학습될 수 있음.

훈련 데이터의 양과 단어 벡터의 차원이 학습 시간과 정확도에 어떤 영향을 미치는지 논의하고자 함.

Privious Work

① NNLM(neural network language model)을 추정하기 위한 모델 아키텍쳐

➡ linear projection layer와 non-linear hidden layer로 구성된 feedforward neural network 구성

➡ 단어 벡터 표현과 통계적 언어 모델을 학습하고자 함.

② single hidden layer로 구성된 neural network를 사용하여 단어 벡터 학습 → 단어 벡터를 사용하여 NNLM을 학습

➡ 전체 NNLM 구축 필요 X

Model Architecture

단어의 연속적 표현을 추정하기 위해 Latent Semantic Analysis (LSA)와 Latent Dirichlet Allocation (LDA) 같은 여러 모델이 제안됨.

본 논문에서는 neural networks에 의해 학습된 단어의 distributed representations에 집중하고자 함.

: 이전 연구에서 LSA에 비해 단어 간의 선형 규칙을 보존하는 데 더 나은 성능을 보였음.


모델을 완전히 훈련하기 위해 액세스해야 하는 파라미터의 수를 모델의 computational complexity로 정의함.

→ 정확도 최대화, 계산 복잡도 최소화

훈련 복잡도 O = E × T × Q (E : epoch(3-50), T : training set 내의 단어 수(최대 1B), Q : 각 모델 아키텍쳐에 따라 달라짐)

stochastic gradient descent와 backpropagation를 사용하여 모델 훈련

Feedforward Neural Net Language Model (NNLM)

probabilistic feedforward neural network language model

✅ input, projection, hidden, output layers로 구성됨.

✅ input layer : N 이전 단어는 1-of-V coding을 사용해서 인코딩 (V : vocabulary의 size)

✅ input layer는 shared projection matrix를 사용하여 차원수 NxD인 projection layer P로 투영됨.

각 training example당 computational complexity : Q = N × D + N × D × H + H × V (dominating term : HxV)

N x D: input data의 size와 관련된 항
N x D x H : 입력 데이터의 표현 크기와 은닉 레이어 크기를 곱한 값
모델의 파라미터 크기와 관련, 학습 및 예측 과정에서 계산이 많이 필요함
H x V (domination term) : output layer의 size와 관련된 항
출력 레이어의 크기가 모델의 복잡성에 큰 영향→ dominating term
computational complexit을 피하기 위한 해결책

✔ 소프트맥스의 hierarchical versions 사용

✔ 훈련 중에 정규화되지 않는 모델(non-normalized models)을 사용하여 정규화된 모델을 피하는 것

➡ vocabulary의 binary tree representations 사용하면 평가해야 하는 output unit 수를 log2(V)정도로 줄일 수 있음.

➡ 대부분의 complexity는 N x D x H 항에서 발생

Recurrent Neural Net Language Model (RNNLM)

언어 모델에 기반한 RNN은 feedforward NNLM의 한계를 극복하기 위해 제안됨.

✔ context length를 지정해줘야 함 → RNN은 context length 자동 처리

✔ 이론적으로 RNN은 shallow neural networks 보다 더 복잡한 패턴을 효율적으로 표현할 수 있음.

✔ RNN은 projection layer 존재 X / input, hidden, output layer만 존재


💡 time-delayed connections을 이용해 hidden layer를 자신에게 연결하는 recurrent matrix

이전 time step에서의 hidden layer state와 현재 input을 기반으로 업데이트된 hidden layer로 과거 정보를 나타냄 (과거의 정보가 현재에 영향)

➡ short term memory를 형성하도록 함.

각 training example당 computational complexity: Q = H × H + H × V

(단어 표현 D는 hidden layer 차원 H와 동일 → hierarchical softmax를 사용하면 H x V는 H × log2(V)로 줄일 수 있음.)

Parallel Training of Neural Networks

큰 데이터셋을 학습하기 위해 large-scale distributed framework인 DistBelief 위에 여러 모델 구현 (feedforward NNLM + α)

➡ 같은 모델의 multiple replicas를 병렬로 수행

➡ 각 replica는 gradient를 업데이트를 모든 파라미터를 관리하는 centralized server를 통해 동기화함.

New Log-linear Models

단어의 distributed representations를 학습하는 2가지 새로운 모델 아키텍쳐 제안 (computational complexity 최소화 시도)

Continuous Bag-of-Words Model

feedforward NNLM과 유사 - non-linear hidden layer 제거 / 모든 단어에 대해 공유된 projection layer 사용

➡ 모든 단어들은 동일한 위치에 투영 (분산 표현 평균화 / 단어의 순서 영향 ❌)

💡 CBOW (context의 continuous distributed representation 사용)

input> 현재 단어를 중심으로 각각 4개의 future words와 4개의 history words

training criterion> 현재 단어를 올바르게 분류

→ 단어 임베딩(단어의 분산 표현)을 학습하기 위해 log-linear classifier 구축

training complexity> N x D + D x log2(V)

input과 projection layer 사이의 가중치 행렬은 NNLM에서의 방식과 동일하게 모든 단어 위치에 공유됨.

CBOW : 주변 단어들을 통해 현재 단어 예측


Continuous Skip-gram Model

context를 기반으로 현재 단어를 예측X → 같은 문장에서 다른 단어에 기반하여 분류

각각의 현재 단어를 입력으로 사용하여 continuous projection layer와 log-linear classifier를 갖는 모델을 만들고, 현재 단어의 앞뒤로 일정 범위 내의 단어 예측

✅ 범위 증가 → resulting word vectors의 quality 🔺 , computational complexity 🔺

현재 단어와 더 멀리있는 단어는 가까이 있는 단어보다 관련성 🔻 (가까이 있으면 관련성 🔺 , 멀리 있으면 관련성 🔻)

→ 멀리 있는 단어들은 training examples에서 더 적게 샘플링하여 멀리 있는 단어에 가중치를 적게 줌

training complexity of this architecture: Q = C x (D + D x log2(V)) (C: 단어간의 최대거리)

Skip-Gram : 현재 단어를 통해 주변 단어 예측


Results

Conclusion

CBOW와 skip-gram이라는 새로운 word embedding 학습 방법 제안

많은 계산량을 요구하는 기존의 신경망 모델 구조를 사용하지 않고, 간단한 구조를 사용해서 높은 성능을 보임

높은 성능의 word vector가 NLP task에서 매우 중요한 요소가 될 것임

profile
better than yesterday !

0개의 댓글