Abstract
저자는 이 논문에서 단어들의 벡터표현을 계산하기위한 두가지 새로운 모델를 소개하였습니다. 벡터들의 문법적 및 의미적 단어의 유사도로 평가되며, 다양한 신경망을 기반의 모델로 훨씬 적은 계산 양에도 불구하고 정확도에서 큰 성능 향상을 보였습니다.
Introduction
많은 NLP모델들은 단어를 원자 단위로 취급하며 여기에는 단어들의 유사성이 없었습니다. 단어들의 어휘에서 인덱스로만 표현되기 때문입니다.하지만 이러한 방식은 제한적이고 한계가 있었습니다. 그러나 최근 머신 러닝 기술의 발전으로 더 복잡하고, 더 큰 데이터 세트를 훈련하는 것이 가능하게 되었습니다.
Goals of the paper
논문은 대규모 데이터 세트를 이용하여, 고품질의 단어 벡터를 학습할 수 있는 기술을 소개하는 것입니다. 벡터 연산의 정확도를 극대화하기 위해 단어들 간의 선형 규칙성을 유지하는 새로운 모델 아키텍처를 개발하고자 합니다. 예를 들어, 논문에서는 King, Man, Woman을 벡터공간에 표현하고 vector(King) - vector(Man) + vector(Woman)을 했을 때, vector(Queen)을 얻어내는 것에 성공했다고 했습니다. King에서 Man을 빼게 되면 어떤 왕위라는 의미만 남게 되고 그 의미를 여성에게 씌었을 때 여왕의 의미를 얻는 것입니다.
Previous work
단어를 연속적인 벡터로 표현하는것은 오랜 역사를 가지고 있습니다. 신경망 언어모델 NNLM은 선형 투영층과 비선형 은닉층을 가진 피드포워드 신경망을 사용하여, 단어 벡터표현과 통계적 언어모델을 학습하였습니다. NNLM은 단일 은닉층으로 신경망 학습이 가능하며, 이것은 전체 NNLM을 구축하지 않고도 단어 벡터를 학습 할수 있습니다.
Model architectures
이미 단어를 벡터로 표현하는 모델은 이미 존재했습니다. 대표 모델로는 LSA와 LDA가 있습니다. 하지만 본 논문핵심은 신경망을 통해 학습된 분산 표현이 단어들 간의 규칙성을 잘 유지하는 데 있어 LSA보다 훨씬 뛰어난 성능을 보였다는 것입니다. 또한LDA는 큰 데이터 세트를 처리할 때 계산 비용이 많이 들기 때문에 비효율적일 수 있습니다. 이 논문에서는 신경망을 통해 학습된 단어의 분산 표현(distributed representations) 에 중점을 두고 있습니다. 또한 논문에서는 계산 복잡도를 최소화하면서도 최대한의 정확도를 달성하는 모델을 찾는 것을 목표로 하고 있습니다.
Feedforward Neural Net Language Model (NNLM)
확률적 피드포워드 신경망 언어모델(NNLM)은 입력층, 투사층, 은닉층, 출력층으로 구성됩니다. 입력층에는 N개의 단어가 1 -of -V 코딩 방식으로 인코딩되며, V는 어휘크기 입력층은 N × D 차원의 투영층 P로 투영되며, 여기서 D는 차원 수입니다. NNLM 모델는 투영층과 은닉층 사이의 계산이 복잡해지는데, 이는 투영층의 값들이 밀집(dense)되어 있기 때문입니다. 일반적인 N = 10의 설정에서 투영층의 크기는 500에서 2000, 은닉층의 크기 H는 보통 500에서 1000 단위입니다. 은닉층은 어휘에 있는 모든 단어에 대한 확률 분포를 계산하는 데 사용되며, 출력층의 차원은 V입니다. 따라서 각 훈련 예제의 계산 복잡도는 다음과 같습니다 :
주요한 복잡도는 H×V항에서 발생합니다. 이를 해결하기 위해 여러 실용적인 솔루션이 제안되었으며, 그 중 하나는 계층적 소프트맥스(hierarchical softmax) 를 사용하는 방법입니다. 또한 훈련 중에 정규화되지 않는 모델을 사용하는 방법도 있습니다. 어휘를 이진 트리로 표현하면 평가해야 할 출력 단위 수를log2(V) 로 줄인후 복잡도는 N×D×N 항에서 발생합니다.
Recurrent Neural Net Language Model (RNNLM)
순환 신경망 기반 언어 모델(RNNLM)은 NNLM의 몇 가지 한계를 극복하기 위해 제안되었습니다. 모델의 맥락 길이(N)을 명시할 필요가 없으며, 이론적으로 순환 신경망(RNN)은 얕은 신경망보다 더 복잡한 패턴을 효율적으로 표현할 수 있습니다. RNN 모델은 투영층이 없으며, 입력층, 은닉층, 출력층으로만 구성됩니다. 이러한 모델의 특별한 점은 은닉층을 어느 정도의 시간차를 두고 스스로 연결시키는 구조이다. 이렇게 되면 일종의 단기기억을 하도록 유도할 수 있고, 이 정보가 현재에 영향을 미치면서 파라미터가 업데이트될 수 있다. RNNLM을 한번 학습하는 데 걸리는 시간 복잡도는 아래와 같습니다 :
NNLM에서는 단어들이 D차원의 벡터로 표현되었던 것과는 달리, RNNLM에서는 은닉층의 차원과 같은 H차원으로 만들어진다. 또한 NNLM과 마찬가지로 H×V의 시간 복잡도는 소프트맥스를 사용해서 Hlog2V로 줄일 수 있다. 이 경우 전체 시간 복잡도를 지배하는 항은 HXH이다.
Parallel Training of Neural Networks(신경망의 병렬 학습)
저자는 거대한 데이터 세트를 이용해서 모델을 훈련하기위해 딥러닝 프레임워크라는 DistBelief라고 불리는 대규모 분산 프레임워크 위에 여러 모델을 구현했습니다. 여기에는 피드포워드 NNLM과 이 논문에서 제안된 새로운 모델들이 포함됩니다. 이 프레임워크는 동일한 모델의 여러 복제본을 병렬로 실행할 수 있게 하며, 각 복제본은 중앙 서버를 통해 모든 파라미터를 유지하면서 그래디언트 업데이트를 동기화합니다. 이러한 병렬 학습을 위해, 미니 배치 비동기적 경사 하강법(mini-batch asynchronous gradient descent) 과 Adagrad라는 적응형 학습률(adaptive learning rate) 절차를 사용합니다.
이 프레임워크에서는 데이터 센터의 서로 다른 기계에서 수백 개 이상의 모델 복제본을 실행하는 것이 일반적이며, 각 복제본은 여러 개의 CPU 코어를 사용합니다.
NEW LOG-LINEAR MODELS
저자는 단어를 낮은 시간복잡도로 효율적으로 연속적인 벡터로 표현하는 2가지 새로운 모델을 소개였습니다. 위에서 보았듯이 주된 복잡도는 은닉층에서 발생하였다. 물론 이 은닉층이 신경망을 매우 매력적으로 만들어준 존재이긴 하지만, 신경망만큼 정확한 결과를 보여주지 못하더라도 효율적으로 계산이 가능한 단순한 모델을 찾기로 노력했습니다.
Continuous Bag-of-Words (CBOW) Model
첫 번째로 제안된 아키텍처는 NNLM과 유사하지만, 비선형 은닉층이 제거되고 투영층이 모든 단어에 대해 공유됩었습니다. 따라서 모든 단어는 동일한 위치에 투영되며, 그들의 벡터는 평균화되었습니다. 우리는 이 아키텍처를 Bag-of-Words 모델이라고 부르는데, 이는 과거 단어들의 순서가 투영에 영향을 미치지 않기 때문입니다. 또한, 미래의 단어들도 사용합니다. 우리는 네 개의 과거 단어와 네 개의 미래 단어를 입력으로 하여 로그-선형 분류기를 구축함으로써 다음 섹션에서 소개할 작업에서 최상의 성능을 얻었습니다.모델의 학습 복잡도는 다음과 같습니다:
이 모델을 CBOW이라고 하는데, 표준 Bag-of-Words 모델과 달리, 이 모델은 문맥의 연속적인 분산 표현을 사용하기 때문입니다.NNLM과 마찬가지로 입력층과 투영층 사이의 가중치 행렬이 모든 단어 위치에 대해 공유됩니다.
Continuous Skip-gram Model
두 번째 모델은 CBOW와 유사하지만, 문맥을 기반으로 현재 단어를 예측하는 대신, 동일한 문장 내 다른 단어를 기반으로 단어를 분류하는 것을 최대화하려고 합니다. 더 구체적으로는, 각 현재 단어를 연속 투영층이 있는 로그-선형 분류기의 입력으로 사용하고, 그 단어 앞뒤의 일정 범위 내에서 단어를 예측합니다. 우리는 범위를 늘리면 결과 단어 벡터의 품질이 향상된다는 것을 발견했지만, 이로 인해 계산 복잡도도 증가합니다. 더 먼 단어는 일반적으로 현재 단어와 덜 관련이 있기 때문에, 훈련 예제에서 이러한 단어들을 덜 샘플링함으로써 가중치를 줄입니다.
C는 단어들의 최대 거리입니다. 예를 들어, C=5를 선택하면 각 훈련 단어에 대해 1에서 C까지의 범위에서 무작위로 숫자 R을 선택하고, 현재 단어의 과거에서 R개의 단어와 미래에서 R개의 단어를 정답 레이블로 사용합니다.
Results
단어 벡터의 다양한 버전의 품질을 비교하기 위해, 이전 연구들은 주로 예시 단어들과 그와 가장 유사한 단어들을 보여주는 표를 사용하여 직관적으로 이해하려고 했습니다. 예를 들어, 'France'가 'Italy'와 유사하며 다른 국가들과도 유사하다는 것을 쉽게 보여줄 수 있지만, 이러한 벡터들을 더 복잡한 유사성 작업에 적용하는 것은 더 어려운 과제입니다. 이전 관찰에 따르면, 단어들 간의 유사성에는 여러 가지 유형이 있을 수 있습니다. 예를 들면 "biggest와 big이 유사한 단어라고 할 때, small과 유사한 단어는 무엇인가요?"와 같은 질문에 답을 하는 문제입니다.
놀랍게도, 이러한 질문들은 단어 벡터의 간단한 대수적 연산으로 답변할 수 있습니다. 'small'이 'biggest'와 'big'의 관계와 유사한 단어를 찾기 위해, 우리는 단순히 벡터 계산을 수행할 수 있습니다.
그 후, 벡터 공간에서 코사인 거리로 측정한 결과 X와 가장 가까운 단어를 검색하고 그 단어를 질문에 대한 답으로 사용합니다. 이 과정에서 입력 질문 단어들은 검색에서 제외합니다. 단어 벡터가 잘 훈련되었을 때, 이 방법을 통해 'smallest'라는 정답을 찾을 수 있습니다.
마지막으로, 고차원 단어 벡터를 대량의 데이터에서 훈련하면 결과 벡터가 매우 미묘한 의미적 관계를 답변하는 데 사용할 수 있다는 것을 발견했습니다. 예를 들어, 도시와 그 도시에 속한 국가 간의 관계에서 'France - Paris'와 'Germany - Berlin'처럼 관계를 파악할 수 있습니다. 이러한 의미적 관계를 가진 단어 벡터는 기계 번역, 정보 검색, 질의응답 시스템과 같은 많은 기존 NLP 응용 프로그램을 개선하는 데 사용될 수 있으며, 미래에 발명될 새로운 응용 프로그램을 가능하게 할 수도 있습니다.
Task Description
Maximization of Accuracy
Conclusion
CBOW와 Skip-gram이라는 새로운 word embedding 학습 방법을 제안했으며, 기존 여러 model들에 비해 계산 복잡도 낮고 대규모 데이터세트에서도 효과적으로 단어 벡터를 학습할 수 있었습니다. word embedding vector의 syntax, semantic 성능을 측정할 수 있는 새로운 dataset도 제시하였습니다.
연구 목표
이 논문은 단어 벡터 표현을 대규모 데이터 세트에서 효율적으로 학습할 수 있는 새로운 모델 아키텍처를 제안하고 연구하였으며, 주로 구문적 및 의미적 언어 작업에서 단어 간 유사성을 기반으로 벡터 품질을 평가하며, 기존 신경망 모델(NNLM, RNNLM) 과 비교해 낮은 계산 복잡도로도 높은 품질의 단어 벡터를 학습할 수 있는 간단한 모델을 제안했습니다.
연구의 배경지식
기존 연구에서는 주로 신경망 기반 모델이 사용되었고, 이 모델들은 복잡한 패턴을 학습할 수 있는 장점이 있지만 계산 비용이 매우 높았습니다.
논문에서 언급된 주요 기술 중 하나는 분산 표현(distributed representation) 을 사용하는 것으로, 이는 단어들이 벡터 공간에서 서로 유사성을 기반으로 위치하게 하는 방법입니다.
N-그램 모델 이나 LSA(Latent Semantic Analysis) 와 같은 기존 방법들과 비교해 신경망 기반 단어 벡터는 더 정교한 문법적 및 의미적 관계를 학습할 수 있음을 보여줍니다.
중점적으로 볼 것
CBOW(Continuous Bag-of-Words) 와 Skip-gram이라는 두 가지 새로운 모델 아키텍처를 제안합니다.
CBOW: 과거와 미래의 단어들을 사용하여 중간 단어를 예측하며, 단어 순서를 고려하지 않고 평균적으로 처리합니다.
Skip-gram: 주어진 단어를 바탕으로 주변 단어들을 예측하며, 더 넓은 범위를 사용할수록 더 좋은 벡터 품질을 얻을 수 있지만 계산 복잡도도 증가합니다.
이 모델들의 계산 복잡도를 줄이면서도 정확도를 최대화하는 방안을 탐구합니다.
이 논문에서 제안한 모델들은 기존 NNLM 및 RNNLM과 비교해 더 많은 데이터를 더 효율적으로 처리할 수 있습니다.
결론
간단한 모델 아키텍처(CBOW 및 Skip-gram)를 사용해 고품질의 단어 벡터를 효율적으로 학습할 수 있음을 입증했습니다.
DistBelief 분산 프레임워크를 활용하면 1조 개의 단어로 구성된 코퍼스에서도 훈련이 가능하며, 이는 기존의 성과보다 훨씬 큰 규모입니다.
이러한 단어 벡터는 기계 번역, 정보 검색, 질의응답 시스템 등 다양한 NLP 응용 프로그램에서 크게 향상된 성능을 제공할 수 있습니다.
참고:https://coshin.tistory.com/43
https://velog.io/@xuio/NLP-%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Sequence-to-Sequence-Learning-with-Neural-Networks-xikn77tw
논문링크:https://arxiv.org/abs/1301.3781