논문 제목 : 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(”Queen”)의 결과와 가깝다는 결과를 볼 수 있다.
그래서 이 논문에서는 단어 사이의 linear regularities를 보존하는 새로운 모델 구조를 개발함으로써, vector operations의 정확도를 극대화하기 위해 노력한다.
- Syntatic : 언어의 문장 구조 (문법 규칙, 단어 순서, 구조)
- Semantic : 단어나 문장이 가지는 의미와 개념 한 것
- Syntatic과 Semantic 규칙성 전부를 측정하는 test set을 만든다.
- 그리고 이런 규칙성이 더 높은 정확도로 학습될 수 있음을 보여준다.
- 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×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](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/ecffd072-2de8-4596-aef3-e9ea16bdbd6d/Untitled.png)
- input layer
- input 단어들을 one-hot-encoding
-
input layer → projection layer
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/041135bf-afc7-4a49-b8f6-a5a9fea3cdf1/Untitled.png)
- input의 원-핫 벡터와 projection의 가중치가 곱해져 W의 특정 행을 그대로 읽어온 lookup table이 만들어짐
- lookup table이 뭔데;
- 원-핫벡터와 가중치 W 행렬의 곱은 W행렬의 i번째 값을 그대로 읽어오는 것(lookup)과 동일 → 그래서 lookup table이라고 부른다.
- input layer [N×V] → W [V×M] → projection layer [N×M]
- N : 입력받은 input의 수
- V : 단어 집합의 크기
- M : projection vector의 크기
- input이 projection layer를 거치면서 차원 수가 줄어든다.
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/92969fee-c227-44da-9f6d-c5720a0fa519/Untitled.png)
- 이렇게 만들어진 efat은 학습을 계속하면서 값이 변경이 되는데, 이것을 embedding vector라고 한다.
- projction layer는 활성화 함수가 없어서 이 값이 hidden layer로 그대로 들어감
- projection layer → hidden layer
-
hidden layer → output layer
1. 행렬 곱과 softmax function을 수행해서 얻은 y^을 실제 y값과 cross entropy로 비교
2. loss 계산
3. back propagation으로 가중치들을 학습
헷갈리는 점 짚고 가기
-
이건 다음 올 단어를 예측하는 classification 문제임
-
NNLM의 핵심
- 충분한 양의 훈련 코퍼스를 위와 같이 학습하면, 수많은 문장에서 유사한 목적으로 사용하는 단어들은 결국 유사한 임베딩 벡터를 얻게 된다는 것
이점과 한계
- 이점 : 기존 모델에서의 개선점
- NNLM은 단어를 표현하기 위해 임베딩 벡터를 사용하므로서 단어의 유사도를 계산할 수 있었다.
- 이를 통해 희소 문제(sparsity problem)를 해결
- 한계 : 고정된 길이의 입력(Fixed-length input)
- NNLM은 n-gram 언어 모델과 마찬가지로 다음 단어를 예측하기 위해 모든 이전 단어를 참고하는 것이 아니라 정해진 n개의 단어만을 참고할 수 있다.
- 한계 극복 → RNNLM
NNLM같은 경우, projection layer는 dense하기때문에 projection layer와 hidden layer사이에 연산이 복잡함
- 일반적으로 N=10으로 선택이 되면, projection layer P는 500에서 2000 사이, hidden layer size H는 500에서 1000 사이가 된다.
- 그리고 hidden layer는 전체 단어에서 해당 단어가 다음 단어일 확률 분포를 계산하는데 사용되어진다.
- 결과적으로 차원이 V인 output layer가 생성됨
training example의 계산 복잡도
Q=N×D+N×D×H+H×V
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/03c64b8e-61ef-4989-9e44-af53c46b7d5e/Untitled.png)
💡 $**N \times D$** : **input layer → projection layer**
∗∗H×V∗∗ : hidden layer → output layer
- 모든 단어에 대한 확률 분포를 계산하는데, 이를 줄이기 위해 hierarchical softmax를 사용하여 H×log2(V)로 만들거나 normalized model의 사용을 피한다.
- hierarchical softmax
- output layer에서 softmax 계산시 계산 비용을 줄이는 방법
- binary tree representation을 통해 log2(V)로 줄어든다.
- 이 방법을 통해 N×D×H에서 대부분의 복잡도를 일으키게 됨
∗∗N×D×H : projection layer → hidden layer**
- Huffman binary tree
- 빈번하게 등장하는 단어들에 짧은 binary tree를 할당하여 bit 수를 줄이는 방법
- balanced binary tree는 log2(V)ouput이 evalute 할 때 필요하지만
- Huffman tree based hierarchical softmax는 log2(Unigram_perplexity(V))가 필요함.
- 유니그램(unigram) : n-gram을 사용할 때 n이 1일 때를 말하는 것
- unigram_perplexity : 1개 토큰으로 이뤄진 문장에 대해서 V 단어를 예측할 때 얼마나 혼란도 (낮을수록 좋음)
- 필요한 출력수를 줄인다.
2.2 Recurrent Neural Net Language Model (RNNLM)
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/2b198a3e-013a-463c-a931-37067489841c/Untitled.png)
feedforward NNML의 한계점을 극복한 것이 바로 RNNLM
이러한 유형의 모델에서 특별한 점은 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×V
💡 time-delayed connection을 사용하여 hidden layer에 **recurrent** 한 연결이 있어서 이전의 정보에 대한 단기기억을 가질 수 있다.
∗∗H×H∗∗: hidden(t-1) → hidden(t)
H×V : hidden → output
- hierarchical softmax로 H×V 대신 H×log2(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](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/6028eb4a-a22d-4bec-93ae-8ed6e58c8cec/Untitled.png)
3. New Log-linear Models
이 섹션에서는 단어의 학습되는 distribute representation의 계산 복잡도를 최소화하기 위한 두가지 모델이 제안된다. 앞에서 봤다싶이 모델의 복잡도는 non-linear hidden layer에서 발생된다. 그래서 우리는 neural network보다 더 정확히 표현할 수는 없지만, 더 많은 데이터에 대해 더 효율적으로 훈련할 수 있는 모델을 탐구한다.
새로운 아키텍쳐는 이전 연구를 따라가는데, 이전 neural language model은 성공적으로 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](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/8760edba-12a6-4129-80fb-0ddd18874592/Untitled.png)
- 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](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/e9d1a4d8-35da-4932-9f40-5eab4ccb6eb2/Untitled.png)
-
input layer
- input에서 window size만큼 주변단어를 선택하여 one hot vector를 만든다.
- 하나의 중심 단어에 대해 여러 개의 주변 단어들이 input으로 들어온다.
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/6c28a593-3b43-49c6-b623-8c24629b082f/Untitled.png)
- 입력층과 투사층 사이의 가중치 W는 V × M 행렬이며, 투사층에서 출력층사이의 가중치 W'는 M × V 행렬
- V : 단어 집합의 크기를 의미
- 위의 그림처럼 원-핫 벡터의 차원이 7이고, M은 5라면 가중치 W는 7 × 5 행렬이고, W'는 5 × 7 행렬이 될 것
- 주의할 점은 이 두 행렬은 동일한 행렬을 전치(transpose)한 것이 아니라, 서로 다른 행렬
- 인공 신경망의 훈련 전에 이 가중치 행렬 W와 W'는 랜덤 값을 가지게 됨
- 가중치 벡터가 두개 !! input → projection / projection → output
-
input layer → projection layer
- 각 input에 대해 가중치가 곱해지고 input 개수만큼 look up table이 생성됨
- n개의 input이 들어오면 생성된 n개의 look up vector를 평균 내주어야 함
- look up table을 거쳐 생성된 vfat, vcat, von, vthe를 분자로, 2 * (window size)를 분모로 넣어줘서 v 벡터를 만들어준다. 여기에 activation function은 거치지 않는다.
-
만약 윈도우 크기 n=2라면, 입력 벡터의 총 개수는 2n이므로 중간 단어를 예측하기 위해서는 총 4개가 입력 벡터로 사용
-
이것의 의미
- “나는 사과가 좋다”, “나는 포도가 좋다” 라는 문장이 있고 그걸 주변 단어들을 평균내서 임베딩하면, 주변 단어가 비슷한 것들은 유사한 임베딩을 가지고 있으므로, 유사 단어끼리 유사한 배열을 가지게 됨
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/a4089a35-48d3-43a1-a839-268f71924ccc/Untitled.png)
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/80ae35cf-2a59-427d-bef8-fa48b20c8111/Untitled.png)
-
projection layer → output layer
- 평균 벡터는 두번째 가중치 행렬 W'와 곱해지는데, 곱셈의 결과로는 원-핫 벡터들과 차원이 V로 동일한 벡터가 나옴
- 행렬곱을 하고 softmax 함수를 취하여 구한 y^을 실제 y값과 cross entropy로 비교하여 loss를 계산하고 back propagation으로 가중치를 update
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/5a399d07-0eeb-41cd-b639-6806f2e1f753/Untitled.png)
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/9ddd10e7-6269-4c44-a70f-434d193645bc/Untitled.png)
그러면 훈련 복잡도는 다음과 같다.
Q=N×D+D×log2(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](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/a13a2549-e0c3-460f-8f01-9e7123ea6480/Untitled.png)
3.2 Continuous Skip-gram Model
각각 현재 단어를 연속적인 projection layer의 log-linear classifier의 input으로써 사용한다. 그리고 현재 단어의 전후에 일정 범위 내의 단어를 예측한다.
- Skip-gram
CBOW와 반대 방향의 모델로, 중심 단어로부터 주변 단어를 예측하는 모델 ![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/bd9d38dc-fecb-4b6b-8107-6824b7695ece/Untitled.png)
-
CBOW와 다르게 벡터들의 평균을 구하는 과정이 불필요
- 왜냐면 하나의 단어만 입력벡터로 사용해서 output을 내기 때문에 평균을 구할 필요 X
-
window size를 늘려서 word vector 결과의 퀄리티를 높일 수 있지만 계산 비용이 증가한다.
-
단어의 거리가 멀수록 보통 단어의 거리가 가까운 것보다는 더 연관성이 적기 때문에, 멀리 떨어진 단어들에 대해 가중치를 적게 둘 수 있다.
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/1d579bb6-828d-4b9a-b883-b37046cb1fac/Untitled.png)
이러한 아키텍쳐의 훈련 복잡도는 다음과 같다.
A=C×(D+D×log2(V)),
- C : maximun distance of the words (단어 사이의 최대 길이)
- 만약, C=5로 선택하게 되면, 각각의 training word에 대해서 <1;C>의 범위의 숫자 R을 랜덤하게 선택하게 되고
- 그리고 과거의 R개 단어, 미래의 R개 단어를 correct label로 사용하게 된다.
- 이렇게 하려면 현재 단어를 인풋으로 하고, R+R 단어를 출력으로 하여 이것은 R×2의 word classifications를 해야한다. (여기서는 C=10을 사용)
4. Results
4.1 Task Description
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/c4cd3a8f-efa6-4a77-9212-5217b34e8547/Untitled.png)
word vector의 퀄리티를 측정하기 위해서, 데이터를 5개의 의미론적 질문과, 9가지 문법적 질문을 포함하는 종답 테스트 셋을 정의했다. 전체적으로 8869개의 의미론적 10675개의 문법적 질문을 만들었다.
각각 카테고리 안에 질문들은 2 step으로 만들어지는데,
- 유사한 단어쌍 리스트를 수동으로 만든다.
- 그리고 질문 리스트는 두개의 단어쌍을 연결하면서 만들어진다.
- ex) 우리의 68개의 미국 대도시들과 그에 속한 state에 대한 리스트를 만들었고, 각각의 단어 쌍을 뽑아서 2.5K개 정도의 질문을 만들었다.
- 테스트 셋에서는 single token word만 포함시켰고, multi-word는 포함시키지 않았다.
- New York은 떨어져 있으므로 두개의 토큰으로 구성 → multi-word
- Greece는 하나의 토큰으로 구성 → test set에 포함
위 방법을 사용하여 계산된 벡터에 가장 가까운 단어가 정답과 정확히 일치하는 경우에만 문제가 정확하게 대답된 것으로 가정한다.
- 동의어 같은 경우에는 오답으로 처리했다.
- 그리고 단어 형태에 대한 입력 정보가 없기 때문에 정확도가 100%에 달한다는건 불가능하다. → 단어의 구조, 특히 구문 질문에 대한 정보를 통합함으로써 추가적인 발전을 이룰 수 있다.
4.2 Maximization of Accuracy
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/7d26e88c-70db-4cdc-a2be-6cd923b9ab91/Untitled.png)
CBOW 구조의 서로 다른 word vector 차원과 훈련 data set의 크기에 따른 결과
- 벡터의 차원과 훈련 데이터를 키우면 점점 정확도가 향상됨을 보여주고 있음
- 따라서 벡터의 차원과 훈련 데이터의 크기를 함께 키워야만 한다.
4.3 Comparison of Model Architectures
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/504e9b79-e6fb-42f6-b3ce-9b184aca5eca/Untitled.png)
각각 모델에 대해서 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](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/177cae35-6d3f-470c-837c-ab412887197c/Untitled.png)
오직 하나의 CPU를 사용하여 공적으로 사용 가능한 word vector들과 비교하여 평가하였다.
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/3ccfb560-648d-40e4-a422-5103be79ecf8/Untitled.png)
- 각 모델을 같은 데이터로 3 epoch로 훈련한 결과 비교
- CBoW 모델은 Google News data의 sub set으로 약 하루동안 training
- Skip-gram 모델은 약 3일동안 training
- 같은 모델을 1 epoch로 비교한 결과 비교
- 1 epoch를 사용하여 두 배나 많은 데이터에 대해 모델을 훈련하면 3 epoch 동안 동일한 데이터에 대해 반복하는 것보다 유사하거나 더 나은 결과를 얻을 수 있으며 속도도 조금 향상된다.
4.4 Large Scale Parallel Training of Models
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/50818c0b-2250-46ca-b333-40f6070f52da/Untitled.png)
DistBelief distribute framework에서 모델 훈련한 것 비교
- 50~100개의 복제본을 이용하여 CPU의 갯수에 따른 훈련 결과
- Google News 60억개를 mini-batch 비동기화와 Adagrade를 이용하여 훈련
- NNLM을 1000-dimension으로 하면 너무 시간 오래 걸림
4.5 Microsoft Research Sentence Completion Challenge
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/2d4abd35-39a8-4e44-8520-362ad4ff0509/Untitled.png)
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](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/c57e9fbc-71e6-4bdd-bd35-c0635d04fdf4/Untitled.png)
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) 감성 분석과 문장 재구성 검출 등에 사용되었다. 이 논문에서 설명하는 모델 아키텍처로부터 이러한 응용 분야들이 혜택을 받을 수 있을 것으로 기대된다.
우리의 진행 중인 작업은 단어 벡터가 지식 베이스에서 사실의 자동 확장과 기존 사실의 정확성 검증에 성공적으로 적용될 수 있음을 보여준다. 기계 번역 실험 결과 또한 매우 유망하다.