Efficient Estimation of Word Representations in Vector Space
Word 2 Vector
Abstract
큰 data set로부터 만들어진 단어들의 continuous vector representation들을 연산하는 데에 사용하는 두 가지 새로운 model architecture를 제안한다. 정확도 면과 낮은 cost 면에서 큰 발전을 볼 수 있었다. 또한, 이 vector들은 syntatic, semantic word similarity 측정에서 test set에 대해서 SOTA(state of the art) 성능을 냈다.
1 Introduction
∘ 최근 NLP 시스템들과 기술들은 단어들 사이의 유사성은 인지하지 않은 채 단어들을 더 이상 쪼갤 수 없는 단위로 여기고 있음. 단어들 각각을 vocabulary 안에서 index로 구분할 뿐.
∘ 이런 방식은 단순함. 성능 면에서 큰 data로 학습한 단순한 모델이 적은 data로 학습한 복잡한 모델보다 우수함.
- ex. statistical language modeling에 사용되는 N-gram 모델
∘ 단순한 기술들이 여러 task에서 한계를 보임 → 논문에서 주목한 문제점
- ex. automatic speech recognition을 위한 관련된 in-domain data의 양이 부족함
∘ basic 기술들의 규모 확대만으로 상당한 발전을 이끌어내기가 어려운 상황이므로 심화된 기술에 집중해야 됨
1.1 Goals of the Paper
∘ 수십억 개의 단어들 로 이루어진 거대한 data set들과 수백만 개의 단어들로 이루어진 vocabulary로부터의 high-quality word vector들의 학습에 이용될 수 있는 기술들을 소개하는 것이 이 논문의 목표
∘ 결과 vector representation의 quality를 측정하는 기술
- 비슷한 단어들끼리 가까이 위치할 것이고, 단어들의 similarity가 여러 단계임
∘ word representation의 similarity가 단순한 syntatic regularity를 넘어섰음
vector("King") - vector("Man") + vector("Woman") 은 단어 "Queen"의 vector representation에 가까움
∘ 논문에서 단어들 간의 linear regularity들은 유지한 새로운 model architecture를 개발함으로써 이러한 vector 연산의 정확도를 높이려 했음
1.2 Previous Work
∘ word vector들이 한 개의 hidden layer를 가진 neural network로 처음에 학습되고 NNLM을 train하는 데에 사용된 연구. full NNLM을 구축하지 않고도 word vector들이 학습된 것. 이 architecture에서 나아가 단순한 모델로 word vector가 학습되는 첫 번째 단계에 집중했음.
∘ word vector들이 많은 수의 NLP의 적용의 상당한 발전과 단순화에 이용될 수 있음
∘ 특정 모델에 비해 cost가 많이 발생, 몇몇 diagonal weight matrix가 이용되는 log-linear model 을 제외하고는
2 Model Architecture
∘ 논문에서는 LSA, LDA와 같은 continuous representation을 평가하는 model이 아닌 neural network들로 학습된 distrubuted representation에 집중했음
∘ 첫 번째로 서로 다른 model architecture들을 비교하기 위해 computational complexity 정의. model을 fully 학습시킬 때 접근하게 되는 parameter의 개수로.
∘ 두 번째로 accuracy를 높임과 동시에 computational complexity를 줄이도록 시도
∘ computational complexity
O = E x T x Q (1)
- E : epoch 수
- T : training set에 있는 word의 개수
- Q : 각 model architecture에 맞게 이후에 정의되는 값
∘ 모든 model들은 stochastic gradient descent와 packpropagation을 이용하여 train되었음
2.1 Feedforward Neural Net Language Model (NNLM)
∘ feedforward neural network language model은 input, projection, hidden, output layer로 구성되어 있음
- input layer : 1-of-V(V는 vocabulary의 size) coding을 이용해서 N개의 previous word들을 encode함
- projection layer : N x D 차원. projection matrix를 이용해서 input layer가 project됨. projection layer의 값들이 dense해서 projection layer와 hidden layer 사이의 연산 때문에 NNLM architecture가 complex해짐.
- hidden layer : vocabulary의 모든 단어들에 대해 probability distribution을 연산하는 데에 사용됨. 그래서 output layer가 V 차원이 됨
∘ training example 당 computational complexity
Q = N x D + N x D x H + H x V (2)
- 여기서 dominating 항은 H x V인데 이걸 막기 위한 해결책들이 제시됐음
=> comlpexity가 N x D x H 항의 값에 큰 영향을 받게 됨
- D : word representation dimension
∘ 논문에서는 Huffman binary tree로 vocabulary가 표현된 hierarchical softmax를 이용
- neural net language model들에서 class들을 얻는 데에 word의 frequency가 중요한 역할을 함
- balanced binary tree는 log2(V) 개의 output를 요구 하는 반면, softmax는 log2(Unigram_perplexity(V))만 요구함
2.2 Recurrent Neural Net Language Model(RNNLM)
∘ RNN을 기반으로 한 language model은 context length를 명시해야 한다는 점 등의 feedforward NNLM의 한계를 극복했음.
∘ RNN은 얕은 neural network보다 더 복잡한 패턴들을 효과적으로 나타낼 수 있음
∘ RNN은 input, hidden, output layer만 가짐. projection layer 없음
∘ time-delayed connection을 이용해 hidden layer가 자기 자신에 연결하는 recurrent matrix
- 이로써 short term memory 비슷한 걸 둘 수 있게 됨
- 과거의 정보를 hidden layer state에 담고, 다음 time step으로 넘어갈 때마다 업데이트
∘ RNN model의 training example 당 complexity
Q = H x H + H x V (3)
- projection layer 제거됨. D는 H와 같아짐.
- H x H가 complexity에 가장 영향을 많이 주는 항
2.3 Parallel Training of Neural Networks
∘ 큰 data set들에서 model을 학습시키기 위해 DistBelief라는 large-scale distributed framework위에서 몇 model들을 실행했음
- framework를 이용해 동일 모델의 다수의 replica들을 병렬적으로 실행시킬 수 있음. 그리고 중앙의 서버를 이용해 각 replica가 gradient upate를 동기화할 수 있음.
- 병렬 학습을 위해 mini-batch asynchronous gradient descent와 Adagrad(adaptive learning rate) 적용
3 New Log-linear Models
∘ complexity의 대부분은 non-linear hidden layer가 원인이 됨
∘ neural network language model은 두 단계에 걸쳐 성공적으로 학습될 수 있음
- continuous word vector들이 simple model을 이용해 학습됨 → 만들어진 word들의 distributed representations에서 N-gram NNLM을 학습시킴
3.1 Continuous Bag-of-Words Model
∘ non-linear hidden layer가 없어졌고, projection layer가 모든 word들에 대해 공유된다는 점에서 feedforword NNLM과 비슷
∘ 단어의 순서가 projection에 영향을 주지 않음
∘ context word들(center word 앞, 뒤의 단어들)로 center word 예측
∘ center word 앞의 단어들 4개와 뒤의 단어들 4개 이용하는 log-linear classifier에서 좋은 성능 보임
∘ training complexity
3.2 Continuous Skip-gram Model
∘ 동일 문장의 다른 단어들을 이용하여 center(current) word를 예측
- center word를 continuous projection layer를 가진 log-linear classifier의 input으로 이용하여 center word 앞, 뒤로 특정 범위 내의 word들을 예측
- 이 범위를 늘리는 것이 결과로 나오는 word vector들의 quality를 높이지만 동시에 computational complexity를 높임
∘ center word에서 멀리 떨어진 단어들은 sampling을 적게 함으로써 멀리 있는 단어일수록 center word와의 관련성이 줄어듦을 반영
∘ training complexity
- C : maximum distance
- R : 1~C 사이의 랜덤 수
∘ input으로 current word 입력하면 output으로 2R 개의 단어가 나옴
4 Results
∘ word 간에 다양한 종류의 similarity가 있음
∘ "bigger : big
small : ???"
vector의 단순한 algebraic 연산으로 답할 수 있음
∘ 많은 양의 데이터로 high dimension의 word vector들을 학습시키면 word 간의 미묘한 의미적 관계도 답할 수 있음
4.1 Task Description
∘ 5종류의 semantic 질문들과 9종류의 syntatic 질문들로 포괄적인 test set을 구성했음
∘ 가장 가까운 word의 vector가 답일 때에만 정답으로 처리. 유의어는 mistake로 처리.
∘ word의 형변환에 대한 정보는 아직 model에 없음
4.2 Maximization of Accuracy
∘ 시간이 제한된 상황에서의 최적화 문제. 큰 데이터를 이용해 높은 차원의 word vector를 학습시킨다면 정확도를 더 높일 수 있을 것이라 예상해볼 수 있음 → 학습시키는 단어 수, 차원 수에 따른 정확도 측정
∘ 같은 데이터로 각각의 모델로 학습시킨 640차원의 word vector를 이용한 실험의 결과
4.3 Comparixon of Model Architectures
4.4 Large Scale Parallel Training of Models
4.5 Microsoft Research Sentence Completion Challenge
5 Examples of the Learned Relationships
6 Conclusion