원 논문
Distributed Representations of Words and Phrases and their Compositionality
[소스코드]
[사전 학습]
- 읽기 전 아래의 포스트들을 읽어야 무슨소린지 알아듣기 편하다..!
Abstract
Introduction
분산 표현(Distributed representations)
벡터 공간에서 단어의 분산 표현(Distributed representations) 은 학습 algorithms이 유사한 단어를 그룹화하여 자연어 처리 작업에서 더 나은 성능을 달성하는 데 도움이 된다.
단어 표현의 가장 초기 사용 중 하나는 Learning representations by back-propagating errors 이다.
➡ 이 아이디어는 이후 통계 언어 모델링에 상당한 성공을 거두며 적용되었다. A Neural Probabilistic Language Model
➡ 후속 작업은 아래의 논문들이 포함된다.
- 자동 음성 인식 및 기계 번역에 대한 응용 프로그램
- 광범위한 NLP 작업
- A unified architecture for natural language processing: deep neural networks with multitask learning
- Domain adaptation for large-scale sentiment classification: a deep learning approach
- Linguistic Regularities in Continuous Space Word Representations
- Recursive Deep Models for Discourse Parsing
- From Frequency to Meaning: Vector Space Models of Semantics
- Distributional Semantics Beyond Words: Supervised Learning of Analogy and Paraphrase
- WSABIE: Scaling Up To Large Vocabulary Image Annotation
Skip-gram
최근에, 대량의 비정형 텍스트 데이터에서 단어의 고품질 벡터 표현을 학습하는 효율적인 방법인 Skip-gram 모델을 소개했다. (더 자세히 알아보기)
이전에 단어 벡터를 학습하기 위해 사용된 대부분의 신경망 아키텍처와 달리,
Skip-gram 모델[Figure 1]의 훈련은 조밀한 행렬 곱셈(dense matrix multiplications)을 수반하지 않는다.
이는 훈련을 매우 효율적으로 만든다.
최적화된 단일 기계 구현은 하루에 1,000억 개 이상의 단어를 훈련할 수 있다.
[Figure 1] The Skip-gram model architecture. 훈련 목표는 근처 단어를 예측하는 데 좋은 단어 벡터 표현을 배우는 것이다.
신경망을 사용하여 계산된 단어 표현은 학습된 벡터가 많은 언어적 규칙성과 패턴을 명시적으로 인코딩하기 때문에 매우 흥미롭다. 다소 놀랍게도, 이러한 패턴들 중 많은 것들이 선형 변환으로 표현될 수 있다.
ex) 벡터 계산 vec("마드리드") - vec("스페인") + vec("프랑스")
의 결과는 다른 단어 벡터보다 vec("파리")
에 더 가 가까움.
본 논문의 Skip-gram 개선
본 논문에서 우리는 원래의 Skip-gram model의 몇 가지 확장을 제시한다.
- 본 논문의 장점은 훈련 중 빈도가 높은 단어의 subsamplin이 상당한 속도 향상(약 2배 - 10배)을 가져오고,
빈도가 낮은 단어 표현의 정확도를 향상시킨다는 것을 보여준다. - 본 논문은 이전 연구에서 사용된 more complex hierarchical softmax에 비해 빈번한 단어에 대해 더 빠른 훈련과 더 나은 벡터 표현을 초래하는 스킵그램 모델을 훈련하기 위한 단순화된 Noise Contrastive Estimation (NCE)을 제시한다.
📜 Noise Contrastive Estimation (NCE) 란?
CBOW와 Skip-Gram 모델에서 사용하는 비용 계산 알고리즘을 칭한다.
전체 데이터셋에 대해 softMax 함수를 적용하는 것이 아니라 샘플링으로 추출한 일부에 대해서만 적용하는 방법을 말한다.
k개의 대비되는(contrastive) 단어들을 noise distribution에서 구해서 (몬테카를로) 평균을 구하는 것이 기본 알고리즘이다.
➡ Hierarchical SoftMax와 Negative Sampling 등의 여러 가지 방법이 있다.
일반적으로 단어 갯수가 많을 때 사용하고, NCE를 사용하면 문제를 (실제 분포에서 얻은 샘플)과 (인공적으로 만든 잡음 분포에서 얻은 샘플)을 구별하는 이진 분류 문제로 바꿀 수 있게 된다.
Negative Sampling에서 사용하는 목적 함수는 결과값이 최대화될 수 있는 형태로 구성한다. 현재(목표, target, positive) 단어에는 높은 확률을 부여하고, 나머지 단어(negative, noise)에는 낮은 확률을 부여해서 가장 큰 값을 만들 수 있는 공식을 사용한다.
[관용구 표현의 개선]
- 단어 표현은 개별 단어의 구성이 아닌 관용구를 표현할 수 없기 때문에 제한된다.
ex) “Boston Globe”는 신문이기 때문에 “Boston”과 “Globe”의 의미가 자연스럽게 결합된 것이 아니다. - 따라서 벡터를 사용하여 전체 구문을 표현하면 Skip-gram model이 훨씬 더 표현력이 뛰어나다.
- recursive autoencoders와 같이 단어 벡터를 구성하여 문장의 의미를 표현하는 것을 목표로 하는 다른 기술도 단어 벡터 대신 구문 벡터를 사용함으로써 더 나은 모델을 만들 수 있다.
[단어 기반 모델에서 구문 기반 모델로의 확장 방법]
- 단어 기반 모델에서 구문 기반 모델로의 확장 방법
1) 먼저 데이터 기반 접근 방식을 사용하여 많은 수의 구문을 식별
2) 훈련 중에 구문을 개별 토큰으로 처리 - 구문 벡터의 품질을 평가하기 위해 단어와 구문을 모두 포함하는 일련의 아날로그 analogy 작업을 개발했다.
테스트 세트의 일반적인 analogy 쌍은 “Montreal”:“Montreal Canadiens”::“Toronto”:“Toronto Maple Leafs”
vec(“Montreal Canadiens”) - vec(“Montreal”) + vec(“Toronto”)
에 가장 가까운 표현이vec(“Toronto Maple Leafs”)
이면 정답으로 간주된다.
[스킵그램 모델의 또 다른 흥미로운 특성]
- 마지막으로, 본 논문은 스킵그램 모델의 또 다른 흥미로운 특성을 설명한다.
우리는 간단한 벡터 추가가 종종 의미 있는 결과를 산출할 수 있다는 것을 발견했다. - ex)
vec(“Russia”) + vec(“river”)은 vec(“Volga River”)
에 가깝다.
vec(“Germany”) + vec(“capital”)은 vec(“Berlin”)
에 가깝다. - 이러한 구성성은 단어 벡터 표현에 대한 기본적인 수학적 연산을 사용하여 명확하지 않은 수준의 언어 이해를 얻을 수 있음을 시사한다.
2 The Skip-gram Model
Skip-gram model의 훈련 목표는 문장이나 문서에서 주변 단어를 예측하는 데 유용한 단어 표현을 찾는 것이다. 즉, sequence of training words \(w_1, w_2, w_3, ., w_T\)가 주어졌을 때, Skip-gram model의 목표는 평균 로그 확률을 최대화하는 것이다.