https://arxiv.org/pdf/1301.3781
0. Abstract
- 우리는 매우 큰 데이터 세트로부터 단어의 연속 벡터 표현을 계산하기 위한 두 가지 새로운 모델 아키텍처를 제안합니다.
1. Skip - Gram
2. Bag-of-words
- 이러한 표현의 품질은 단어 유사성 작업에서 측정되며, 다양한 유형의 신경망에 기반한 기존 최고의 성능 기법과 비교됩니다. 우리는 계산 비용이 훨씬 낮으면서도 정확도에서 큰 개선을 관찰했습니다.
1. Introduction
1.0. 기존 기술 방식(N-gram)
1.1. N-gram 정의
- 어느 문장 이후에 나올 단어를 예측하고 싶을 때, 전체의 문장이 아닌 이전의 n-1개의 단어에 의존하여 코퍼스 내부에 등장 확률을 통해 다음 단어를 예측하는 방식
1.2. N-gram 한계
1. 희소 문제
- 데이터가 부족하거나 문장의 길이가 길어질수록, 특정 N-gram 조합이 훈련 데이터에 포함되지 않을 확률이 높아져 모델의 일반화 능력이 저하
- 음성 인식 및 기계 번역 같은 영역에서는 데이터를 단순히 늘리는 것으로는 성능 향상이 어렵다.
2. n trade-off
1.3. 대체 기술
1. 기계 학습의 발전으로 인해 더 복잡한 모델을 대규모 데이터에 학습시키는 것이 가능
2. 단어의 분산 표현
- 단어의 분산 표현을 활용하면 기존 기술을 뛰어넘는 성과를 거둘 수 있음.
1.1. 논문의 목표
1. 목표
1. 대규모 데이터 세트에서 고품질 단어 벡터를 학습할 수 있는 새로운 기술(수십억의 단어와, 수백만의 단어 어휘집)
2. 단어 간의 선형 규칙성을 보존하는 새로운 모델 아키텍처를 개발하여 이러한 벡터 연산의 정확도를 극대화
3. 구문적/의미적 규칙성을 측정하기 위한 새로운 테스트 세트 설계
4. 학습 데이터 양 및 차원에 따른 정확도와 효율성 분석
2. 기대 효과
1. 단어들이 여러 가지 유사성을 가질 수 있다는 점을 기대
2. 구문적 유사성을 넘어 대수적 연산으로 의미적 관계를 표현(word offset)
1.2. 기존 연구(NNLM)
- 본 논문은 이 구조를 확장하여 단어 벡터 학습 단계에 집중
2. Model Architectures
2.0. 기존 방법의 한계
1. LSA
- 단어 간의 선형 규칙성을 잘 보존하지 못함
2. LDA
- 대규모 데이터 세트에서 계산 비용이 매우 높음.
3. 결론
- 분산 표현 사용
2.1. 계산 복잡성
- 다양한 모델 아키텍쳐를 비교하기 위해 사용
O = E × T × Q
- E는 훈련 에포크(epoch)의 수, T는 훈련 세트의 단어 수, Q는 각 모델 아키텍처
2.2. 피드포워드 신경망 언어 모델(NNLM)
2.2.1. 구성
1. 입력
- N개의 이전에 사용된 단어를 V개의 vocabulary를 기준으로 1-of-V 로 원 핫 인코딩
2. 투영층( N × D )
- 입력에서 원 핫 인코딩된 각각의 N개의 단어를 가중치 행렬을 통해 임베딩 벡터로 변환
- 임베딩 벡터를 concentrate을 통해 N × D의 projection layer을 만든다.
3. 은닉층( H × N × D )
- projection layer P와 가중치 행렬과의 곱 이후 활성화 함수를 거쳐 은닉층을 형성한다.
h = f ( W(h) P + b(h) )
4. 출력층( H × V )
- 은닉층에서 vocabulary의 모든 단어에 대해 확률 분포 계산
y^ = softmax( W(y) h + b(y) )
2. 계산 복잡도
1. 전체 계산 복잡도
Q = N × D + N × D × H + H × V
2.3. 순환 신경망 언어 모델 (RNNLM)
1. NNLM의 한계
- 문맥 길이를 사전에 지정(N)
2. RNNLM
1. 정의
- 순환 신경망(RNN)을 기반으로 한 언어 모델
2. 특징
1. 문맥 길이 제한 제거
- 시간에 따라 은닉층 상태를 갱신하며, 동적인 문맥 처리가 가능
2. 은닉층의 자기 연결 (Recurrent Matrix)
3. 투영층 없음
3. 계산복잡도
1. 은닉층 재귀( H × H )
h = f(W(hh)h(t-1) + W(xh)x(t) + b(h))
- W(hh) : 은닉층 간의 가중치 행렬( H × H )
- h(t-1) : 이전 은익 상태의 벡터( H )
2. 출력층( H × V )
y^ = softmax( W(hv) h + b(v) )
- W(hv) h : 은닉층-출력층 가중치 행렬과 은닉층에서의 벡터와의 계산( H × V )
3. 계산 복잡도
Q = H × H + H × V
2.4. 새로운 로그-선형 모델
1. 목적
- 단어의 분산 표현을 학습하면서 계산 복잡성을 최소화
- 비선형 은닉층의 계산 복잡성 해소
- 훨씬 더 많은 데이터를 효율적으로 훈련할 수 있는 단순한 모델을 탐구
2. 방식(NNLM)
1. 단순한 모델을 사용해 연속적인 단어 벡터를 학습합니다.
2. 분산 표현을 기반으로 N-gram NNLM을 훈련
3. New Log-Linear Models(로그-선형 분류기 모델)
3.1. Bag-of-Words 모델 (CBOW)
1. 정의
- 계산 복잡성을 줄이기 위해 은닉층을 제거, 하나의 단어에 대해 이전 단어들과 이후 단어들을 통하여 투영, 투영 이후 평균화, 이를 softmax를 통하여 확률값으로 나타낸다.
2. 특징
1. 과거 단어뿐만 아니라 미래 단어도 사용
2. 비선형 은닉층을 제거
3. 사용된 모든 단어가 같은 위치로 투영되고, 단어 벡터가 평균됩니다.
3. 계산 복잡도
1. 입력(원-핫 인코딩)
2. 입력 -> Projection layer( N × D )
- N개의 입력을 가중치 행렬을 통해 임베딩 후 합쳐서 평균과
3. Projection layer -> Output( D × log2V )
- 평균화된 벡터를 출력 가중치 행렬과의 곱 및 softmax를 통해 확률로 나타내준다.
- 계층적 소프트 맥스를 사용하여 D × V를 D × log2V로 계산 복잡도를 줄였다.
Q = N × D + D × log2V
3.2. Skip-gram 모델 (Continuous Skip-gram Model)
1. 정의
- CBOW와 유사하지만, 문맥을 기반으로 현재 단어를 예측하는 대신, 동일 문장에서 한 단어를 통해 주변 단어를 예측, 분류하는 방식
2. 특징
1. 범위 증가와 품질
- 하나의 단어를 원 핫 벡터를 거쳐 입력으로 사용하여 주변 여러 단어를 예측한다. 하지만 계산 복잡성이 증가한다.
2. 효율성
- 현재 단어와 멀리 떨어진 단어일수록 적게 샘플링하여 가중치를 줄인다.
3. 로그-선형 분류기 사용
3. 계산 복잡도
1. 입력(원 핫 인코딩)
- 하나의 단어에 대해서 원 핫 인코딩
2. 입력 -> Projection layer
- 하나의 단어를 가중치 행렬을 거쳐 투사, 하나의 단어이기 때문에 D의 복잡도를 가지게 된다.
3. Projection layer -> output
- 이후의 과정은 CBOW와 같은 과정이기에 같은 복잡도를 가진다.
4. C
- C의 경우는 현재 단어를 기준으로 [1 - C)의 개수 중 임의의 숫자(R)를 골라 이전 R개의 단어와, 이후 R개의 단어를 레이블로써 사용하기에 복잡도에 영향을 준다.
- R이 1 - (C-1) 사이 Random 값임에도 C를 복잡도로 곱해준 이유는 랜덤값 범위의 기댓값과 수행 횟수의 곱이 C로 수렴하기 때문이다.
Q = C × ( D + D × log2V )
4. Result
4.0. Result
- 이전 논문의 평가 방식으로는 특정 단어에 대해 유사한 단어를 통해 직관적으로 평가하는 방식이었다면, 본 논문에서는 단어 벡터를 구조적 방식을 통해여 대수적으로 계산이 가능하여 유사성 관계를 파악하였다.
Previous | Present |
France - Italy | X = vector(biggest) - vector(big) + vector(small) |
4.1. Task Description
1. 질문 구성
1. 5가지 유형의 의미적 질문(semantic questions) - 반의어 등
2. 9가지 유형의 구문적 질문(syntactic questions) - 시제 변화 등
- 비슷한 단어의 쌍을 바탕으로 두 단어 쌍을 연결 질문을 생성
2. 평가 방식
- 정답과 일치할때만 정답, 동의어는 오답으로 처리하기에 100%의 정확도는 달성하기 어려웠다.
4.2. Maximization of Accuracy
1. 훈련 데이터
- 3만 개의 단어로 제한
- 차원 D를 증가시키면서 훈련 데이터를 추가하면서 성능을 비교
2. 차원 증가 및 데이터 추가의 효과
- 표를 보면 특정 시점 이후에는 차원을 늘리거나 훈련 데이터를 추가해도 성능 향상이 점점 줄어든다.
- 따라서 벡터 차원과 훈련 데이터 양을 함께 증가시켜야 최적의 결과를 얻을 수 있다.
4.3. Comparosion of Model Architectures
4.4. Large Scale Parallel Training of Models
1. 훈련시 모델 복제본을 사용(병렬적 학습)
- 대규모 데이터의 분산학습, 비동기적 방식의 경사하강법을 통해 업데이트
2. Adagrad 활용
4.5. Microsoft Research Sentence Completion Challenge
1. Microsoft Research Sentence Completion Challenge
- 언어 모델링과 NLP 기술을 발전시키기 위한 과제로써 1040개의 문장이 주어지며 각 문장에서 단어가 하나 누락되어 있는데, 주어진 5개의 단어 중에서 문장과 가장 일관성 있는 단어를 선택하는 것이 목표
2. 결과
- Skip-gram 모델 단독으로는 LSA 유사성보다 성능이 낮다.
- Skip-gram과 RNNLM의 가중치 조합으로 새로운 최고 성능인 58.9% 정확도를 달성
5. Examples of the Learned Relationships
5.1. Relationship
- Relationship은 두 단어의 벡터를 빼고, 결과는 다른 단어를 더함으로써 정의된다.
- Paris - France + Italy = Rome.
5.2. Accuracy
- 정확도는 60퍼로 개선의 여지가 많다.
- 단일 예제 대신 여러 예제를 평균화하여 더 정확한 관계 벡터를 생성 하면 성능이 10% 개선된다.
- 큰 데이터셋과 차원 증가를 통해 향상 가능
6. Conclusion
1. 간단한 모델 구조를 통한 개선
- 기존 신경망(RNN 등)과 비교해서 간단한 모델 구조를 통해 성능 향상
2. 분산 프레임워크
- 모델 복제 & 분산 병렬 작업을 통해 대규모 데이터 처리