원 핫 인코딩을 사용하면서도 단어 간 유사도를 반영할 수 있도록 단어의 의미를 벡터화하는 방법
자세히 말하면, 모든 단어를 vector로 표현하여 단어 사이의 유사성과 차이점을 계산하여 결과를 바탕으로 그 주변 단어와의 관계를 통해 예측하는 것

Word2Vector에는 두 가지 방식이 있다.
CBOW(Continuous Bag of Words)
Skip-Gram
저자는 매우 큰 데이터 세트에서 단어의 연속 벡터 표현을 계산하기 위해 두 가지 새로운 모델을 제안한다. 이러한 표현의 질은 단어 유사성 작업에서 측정되며, 다양한 유형의 신경망을 기반으로 한 이전의 최고 성능 기술들과 비교된다. 새로 제안한 모델들은 기존의 최고 성능 기술들보다 훨씬 더 낮은 계산 비용을 가진다.
현재 많은 NLP 시스템과 기술들은 단어를 원자 단위로 다룬다. 단어들은 어휘에서 인덱스로 표현되기 때문에 단어간의 유사성에 대한 개념이 없다. 이러한 것은 여러 이유가 있다. simplicity(단순성), robustness(견고성), 그리고 방대한 양의 데이터로 훈련된 단순 모델이 적은 데이터로 훈련된 복잡한 시스템보다 뛰어나다는 관찰 등이 그 이유이다.
그러나 단순한 모델들은 여러 작업에서 한계가 있다. 예를 들어 자동음성 인식을 위한 관련 도메인 내 데이터 양이 제한되어 있으며, 성능은 보통 고품질 전사된 음성 데이터의 크기에 의해 지배된다. 즉, 기본 기술은 단순하게 학장해도 큰 진전을 이루지 못하는 상황이 발생하며, 우리는 더 발전된 기술에 집중해야 한다.
최근 몇년 간 기계 학습 기술의 발전으로 훨씬 더 큰 데이터 세트에서 더 복잡한 모델을 훈련시키는 것이 가능해졌으며, 이는 일반적으로 단순 모델보다 뛰어나다. 아마 가장 성공한 개념은 단어의 분산 표현을 사용하는 것일 것이다.
이 논문의 주요 목표는 "수십억 개의 단어와 수백만 개의 단어가 포함된 방대한 데이터 세트에서 고품질의 단어 벡터를 학습하는 데 사용할 수 있는 기술을 소개하는 것"이다. 이 당시에는 50-100차원 이상의 단어 벡터를 사용하는 것은 불가능했다. 단어들을 벡터 공간에서 유사한 것 끼리 묶는 것 뿐만 아니라 여러 관점에서 유사한 표현을 측정하는 최근에 제안된 기술을 사용했다.
놀랍게도 단어 표현의 유사성은 단순한 구문 규칙성을 넘어선다는 것이 밝혀졌다.
vector(King) - vector(Man) + vector(Woman) = vector(Queen)
king에서 Man을 빼면 왕위가 남고 왕위와 여자를 더하면 여왕이다.
이 논문에서, 저자는 단어 간의 선형 규칙성을 유지하는 새로운 모델 아키텍처를 개발하여 이러한 벡터 연산의 정확성을 극대화하려 한다. '구문 규칙성'과 '의미 규칙성'을 모두 측정하기 위한 새로운 종합 테스트 세트를 설계하고, 이러한 규칙성을 높은 정확도로 학습할 수 있음을 보여준다. 또한, 학습 시간과 정확성이 단어 벡터의 차원성과 학습 데이터의 양에 어떻게 의존하는지 논의한다.
Word Embbeding를 통해 단어 표현은 처음이 아니다. 신경망 언어 모델(NNLM)을 추정하기 위한 매우 인기 있는 모델 아키텍처가 [A neural probabilistic language model. Journal of Machine Learning Research] 에서 제안되었다. 여기서 선형 투영층과 비선형 은닉층을 가진 feedforward 신경망을 사용하여 단어 벡터 표현과 통계 언어 모델을 공동으로 학습했다.
NNLM의 또 다른 흥미로운 아키텍처는 [Language Modeling for Speech Recognition in Czech] , [Neural network based language models for higly inflective languages] 에서 제시되었고, 이 논문에서 단어 벡터는 단일 은닉층을 가진 신경망을 사용하여 처음 학습되었다. 그 다음 단어 벡터는 NNLM을 훈련하는 데 사용된다. 따라서 전체 NNLM을 구성하지 않고도 단어 벡터를 학습한다. 이 연구에서 해당 아키텍처를 직접 확장하고, 간단한 모델을 사용하여 단어 벡터를 학습하는 첫 번째 단계에만 집중한다.
이후 단어 벡터가 많은 NLP 응용 프로그램을 크게 개선하고 단순화하는 데 사용될 수 있음을 보여주었다.
단어의 연속 표현을 추정하기 위해 잘 알려진 잠재 의미 분석(LSA)과 잠재 디리클레 할당(LDA)을 포함한 다양한 유형의 모델이 제안되었다. 본 논문에서는 신경망이 학습한 단어의 분산 표현에 중점을 두며, 이는 단어들 간의 선형 규칙성을 유지하는 데 있어 LSA보다 훨씬 우수한 성능을 보인다는 것을 이전에 보여주었다. 또한 LDA는 대규모 데이터 세트에서 계산 비용이 매우 많이 든다.
[Strategies for Training Large Scale Neural Network Language Models, In: Proc. Automatic Speech Recognition and Understanding] 과 유사하게, 다양한 모델 아키텍처를 비교하기 위해 먼저 모델의 계산 복잡성을 모델을 완전히 훈련시키기 위해 접근해야 하는 매개변수 수로 정의한다. 다음으로, 계산 복잡성을 최소화하면서 정확성을 최대화하려고 노력할 것이다.
계산 복잡도: O = E x T x Q
E: 훈련 에포크 수, T: 훈련 집합 내 단어 수, Q: 각 모델 아키텍처에 대해 추가로 정의
(일반적으로 E = 3-50, T는 최대 10억 개)
모든 모델은 확률적 경사 하강법과 역전파를 사용하여 훈련된다.
확률적 feedforward 신경망 언어 모델은 [A neural probabilistic language model. Journal of Machine Learning Research] 에서 제안되었다. 이 모델은 입력층, 투영층, 은닉층 및 출력층으로 구성된다.

계산 복잡도(Q): N x D + N x H + H x V
, H x V가 지배적인 항
가 지배적인 항, 이를 방지하기 위해 몇 가지 실용적인 해결책 제안
1.소프트맥스의 계층적 버전을 사용
hierachical softmax 사용 시 를 로 줄일 수 있고, 이때 전체 시간 복잡도를 지배하는 항은 가 된다.
2.훈련 중 정규화되지 않은 모델 사용하여 정규화된 모델을 피하기
저자는 모델에서 어휘가 허프만 이진 트리로 표현되는 hierachical softmax 1번을 사용한다. 이는 단어의 빈도가 신경망 언어 모델에서 클래스를 얻는 데 잘 작동한다는 이전 관찰에 따른다.
Huffman tree는 자주 등장하는 단어에 짧은 이진 코드를 할당하며, 이는 평가해야 하는 출력 단위 수를 더욱 줄인다. 균형 잡힌 이진 트리는 출력을 평가해야 하는 반면, huffman tree 기반 hierachical softmax는 오직 만 필요하다.
신경망 LM의 경우 병목 현상이 항에 있기 때문에 중요한 속도 향상은 아니지만, 나중에 hidden layer가 없어서 소프트맥스 정규화의 효율성이 크게 의존하는 아키텍처를 제안할 것이다.
RNNLM은 문맥 길이(모델 N의 순서)를 지정해야 하는 필요성과 이론적으로 RNN이 얕은 신경망보다 더 복잡한 패턴을 효율적으로 표현할 수 있기 때문에 feedforward NNLM의 특정 한계를 극복하기 위해 제안되었다.
RNNLM의 경우, Projeciton Layer(투영층)이 존재하지 않고 오직 input, hidden, output layer만 존재한다. 이 모델의 특별한 점은 은닉층을 어느정도 시간차를 두고 스스로 연결하는 구조이다. 이 구조는 일종의 단기 기억을 하도록 유지하고 이 정보가 현재에 영향을 미치면서 파라미터 업데이트를 할 수 있도록 해준다.

계산 복잡도(Q) : , 단어표현 D는 은닉층 H와 동일한 차원
다시 말해, 라는 용어 는 계층적 소프트맥스를 사용하여 로 줄일 수 있고, 대부분의 복잡성은 로 부터 온다.
저자들은 대용량 데이터셋을 사용하기 때문에, 대용량 데이터셋을 잘 학습하고 병렬 처리가 가능한 딥러닝 프레임워크인 DistBelief를 사용하였다. 이 병렬 훈련을 위해 Adagrad라는 적응형 학습 속도 절차를 갖춘 미니배치 asynchronous 그래디언트 하강법을 사용했다.
이 부분에서 우리는 계산적 복잡성을 최소화하려고 노력하는 단어의 분산 표현을 위한 두개의 모델을 제안한다.
이전 섹션에서는 주로 모델에서 비선형 레이어에 의해 야기되는 대부분의 복잡성에 대해 다루었다. 이 은닉층이 신경망을 매우 매력적으로 만들긴 하지만, 신경망만큼 정확한 결과를 보여주지 못하더라도 효율적으로 계산 가능한 단순한 모델을 찾기로 결심했다.
새로운 아키텍처는 이전 연구에서 제안한 신경망 모델은 두 단계로 성공적으로 훈련될 수 있다는 것과 직접적으로 일치한다. 먼저, 간단한 모델을 사용하여 연속적인 단어 벡터를 학습한 다음, 이러한 분산된 단어 표현 위에 N-gram NNLM을 학습한다.
처음으로 제안하는 아키텍처는 비선형 은닉층을 제거하고 모든 단어에 대해 투영층을 공유하는 피드포워드 NNLM과 유사하다. 따러서 모든 단어가 동일한 위치에 투영된다.(벡터는 평균화)
우리는 이 아키텍처를 단어의 순서가 투영에 영향을 미치지 않기 때문에 a bag-of-words model이라고 부른다. 게다가 우리는 미래의 단어를 사용한다. 우리는 입력에 네 개의 이전 단어와 네 개의 앞으로 등장할 단어가 포함된 로그-선형 분류기를 구축하여 최고의 성능을 얻었다. 여기서 훈련 기준은 현재(중간) 단어를 올바르게 분류하는 것이다.
훈련 복잡도(Q):
우리는 이 모델을 CBOW라 표기하고, 이 모델은 연속적인 분포 표현을 사용한다. 입력과 투영층 사이의 가중치 행렬을 NNLM에서와 동일한 방식으로 모든 단어 위치에 대해 공유한다는 점을 유의하라.
두 번째 아키텍처는 CBOW와 유사하지만, 문맥에 따라 현재 단어를 예측하는 대신 동일한 문장에 있는 다른 단어를 기반으로 단어의 분류를 최대화한다. 보다 정확하게는 각 현재 단어를 연속 투영 레이어가 있는 로그 선형 분류기의 입력으로 사용하여 현재 단어 전후의 특정 범위 내에서 단어를 예측한다.
범위를 늘리면 결과 단어 벡터의 품질이 향상되지만 계산 복잡도도 같이 증가한다. 거리가 먼 단어는 일반적으로 가까운 단어보다 현재 단어와 덜 관련이 있기 때문에 훈련 예제의 단어에서 덜 샘플링하여 먼 단어에 더 적은 가중치를 부여한다.
훈련 복잡성(Q): , C는 단어의 최대 거리

다양한 버전의 단어 벡터의 품질을 비교하기 위해 이전 논문들은 일반적으로 예제 단어와 가장 유사한 단어를 보여주는 표를 사용하여 직관적으로 이해한다. 단어 France가 Italy 및 다른 나라들과 유사하다는 것을 쉽게 보여줄 수 있지만, 이러한 벡터를 더 복잡한 유사성 과제에 포함시킬 때는 훨씬 더 어렵다. 우리는 단어들 사이에 많은 다양한 유형의 유사성이 있을 수 있다는 이전의 관찰을 따른다.
예를 들어, 단어 big-biggest와 small-smallest이 비슷하다. 우리는 "biggest와 big이 비슷하다는 의미에서 small과 비슷한 단어는 무엇이니?"라고 질문할 수 있다.
놀랍게도, 이러한 질문들은 단어의 벡터 표현을 사용하여 간단한 대수적 연산을 수행함으로써 답할 수 있다.
vector X = vector("biggest") - vector("big") + vector("small")를 계산하면 된다.
그러고 나서 우리는 벡터 공간에서 코사인 거리로 측정된 X에 가장 가까운 단어를 검색하여 질문에 대한 답으로 사용한다. 단어 벡터를 잘 훈련하면 이 방법으로 정답을 찾을 수 있다.
마지막으로 많은 양의 데이터에 대해 고차원 벡터를 훈련할 때 결과 벡터는 도시와 그 도시가 속한 국가와 같은 단어간의 매우 미묘한 의미 관계에 답하는데 사용된다. 이렇게 의미론적 관계를 가진 단어 벡터는 기계 번역, 정보 검색 및 질문 응답 시스템과 같은 기존의 많은 NLP 응용 프로그램 개선 뿐아니라 아직 발명되지 않은 다른 미래 응용프로그램을 가능하게 해준다.

단어 벡터의 품질을 측정하기 위해, 우리는 다섯 가지 유형의 의미론적 질문과 아홉 가지 유형의 구문적 질문을 포함하는 종합적인 테스트 세트 정의한다. 전체적으로 8869개의 의미론적 질문과 10675개의 구문적 질문이 있다. 각 범주의 질문은 두 단계로 나뉘어 생성되었다.
첫 번째로 유사한 단어 쌍의 목록을 수동으로 작성했다. 그 다음 두 단어 쌍을 연결하여 많은 질문 목록을 작성했다.
우리는 모든 질문 유형에 대해 전체적인 정확도를 평가하고, 각 질문 유형에 대해 부분족으로(의미론적, 구문론적) 질문 유형을 평가했다. 질문은 위의 방법을 사용해서 계산된 벡터에 가장 가까운 단어가 질문의 올바른 단어와 정확히 같은 경우에만 정답이고 동의어는 실수로 간주된다.
그러나 특정 분야에서 단어 벡터의 유용성은 이 정확도 지표와 양의 상관관계를 가진다고 믿는다. 특히 구문 질문에 대해 단어의 구조에 대한 정보 통합을 통해 추가적인 진전을 얻을 수 있다.

단어벡터 차원과 학습 데이터를 늘린것이 Table2이다.
어느 시점이 지나면 더 많은 차원 추가하거나 더 많은 학습 데이터를 추가해도 개선 효과가 감소한다. 따라서 벡터 차원과 학습 데이터 양을 함께 늘린다.
훈련 데이터의 양을 두 배로 늘리면 벡터 크기를 두 배로 늘리는 것과 거의 동일한 계산 복잡성ㅇ이 증가한다.
먼저, 동일한 훈련 데이터를 사용하여 640개의 단어 벡터의 동일한 차원을 사용하여 단어 벡터를 도출하기 위한 다양한 모델 아키텍처를 비교한다. 추가 실험에서는 30,000개의 어휘에 제한 없이 새로운 의미-구문적 단어 관계 테스트 세트의 전체 질문 세트를 사용한다.

저자는 DistBelief 병렬 훈련을 사용하여 동일한 수의 숨겨진 유닛 640개를 가진 피드포워드 NNLM을 훈련시켰다. 표 3에서 RNN의 단어 벡터가 대부분 구문 질문에서 우수한 성능을 보인다는 것을 알 수 있다. NNLM 벡터는 RNN보다 훨씬 더 나은 성능을 발휘하며, RNNLM의 단어 벡터는 비선형 은닉 레이어에 직접 연결되어 있기 때문에 이는 놀라운 일은 아니다. CBOW 아키텍처는 구문 작업에서 NNLM보다 더 잘 작동하며, 의미 작업에서도 거의 동일하게 작동한다. 마지막으로, Skip-gram 아키텍처는 CBOW 모델보다 구문 작업에서 약간 더 잘 작동하지만, 테스트의 의미적 부분에서 훨씬 더 잘 작동한다.
저자는 하나의 CPU만을 사용하여 훈련된 모델을 평가하고, 그 결과를 공개적으로 이용 가능한 단어 벡터와 비교했다.

CBOW 모델은 구글 뉴스 데이터의 하위 집합에 대해 약 하루 만에 훈련되었으며, Skip-gram 모델의 훈련 시간은 약 3일 정도였다. 추가 실험을 위해 우리는 학습 기간을 단축했습니다.

한 에포크를 사용하여 두 배의 데이터로 모델을 훈련하면 표 5에 나와 있는 것처럼 동일한 데이터를 세 에포크 동안 반복하는 것보다 비슷하거나 더 나은 결과를 얻을 수 있으며, 추가적인 작은 속도 향상을 제공한다.
저자는 분산 프레임워크인 DistBelief에서 다양한 모델을 구현했다. 아래에서는 GoogleNews6B 데이터셋에서 mini-batch asynchronous gradient descent 적응형 학습 속도 절차인 Adagrad을 사용하여 훈련된 여러 모델의 결과를 냈다. 훈련 중에 50~100개의 모델 복제본을 사용했다. CPU코어의 수는 데이터 센터 머신이 다른 생산 작업과 공유되고 사용량이 상당히 감소할 수 있기 때문에 추정치이다. 분산 프레임워크의 오버헤드로 인해 CBOW 모델과 Skip-gram 모델의 CPU 사용량이 단일 머신 구현보다 훨씬 더 가깝다는 점을 유의해야 한다. 결과는 표 6에 보고되어 있다.

Microsoft 문장 완성 챌린지는 최근 언어 모델링 및 기타 NLP 기법을 발전시키기 위한 과제로 소개되었다. 이 과제는 1040개의 문장으로 구성되어 있으며, 각 문장에서 하나의 단어가 누락되어 있으며, 목표는 다섯 가지 합리적인 선택 목록을 바탕으로 나머지 문장과 가장 일치하는 단어를 선택하는 것이다.
여기에는 N-그램 모델, LSA 기반 모델, 로그-이중선형 모델, 그리고 현재 이 벤치마크에서 55.4%의 정확도를 유지하고 있는 순환 신경망의 조합이 포함된다.
우리는 이 과제에서 Skip-gram 아키텍처의 성능을 탐구했다. 먼저, 제공된 50M 단어에 대해 640차원 모델을 훈련시켰다. 그런 다음 입력에서 알 수 없는 단어를 사용하여 테스트 세트의 각 문장 점수를 계산하고, 문장 내의 모든 주변 단어를 예측했다. 최종 문장 점수는 이러한 개별 예측의 합이 된다. 문장 점수를 사용하여 가장 가능성이 높은 문장을 선택한다. 몇 가지 이전 결과와 새로운 결과에 대한 요약은 표 7에 제시되어 있다.

Skip-gram 모델 자체는 이 과제에서 LSA 유사성보다 더 나은 성능을 보이지는 않지만, 이 모델의 점수는 RNNLM으로 얻은 점수와 상호 보완적이며, 가중치 조합은 새로운 최첨단 결과 58.9%의 정확도를 초래한다.

표 8은 다양한 관계를 따르는 단어들을 보여준다. 관계는 두 단어 벡터를 빼서 정의되며, 그 결과는 다른 단어에 추가된다. (예를 들어, 파리-프랑스 + 이탈리아 = 로마)
보다시피 정확도는 상당히 좋지만, 추가적인 개선의 여지는 분명히 많다. 저자는 더 큰 차원을 가진 더 큰 데이터 세트에서 훈련된 단어 벡터가 훨씬 더 나은 성능을 발휘할 것이며, 새로운 혁신적인 응용 프로그램의 개발을 가능하게 할 것이라고 믿는다.
정확도를 향상시키는 또 다른 방법은 관계의 여러 예를 제공하는 것이다. 관계 벡터를 형성하기 위해 하나의 예 대신 열 가지 예를 사용하여 (개별 벡터를 함께 평균화) 저자는 의미론적 synt 테스트에서 최고의 모델의 정확도가 약 10% 향상되는 것을 관찰했다.
이 논문에서 구문적이고 의미적인 언어 작업에서 다양한 모델이 도출한 단어의 벡터 표현 품질을 연구했다. 저자는 매우 간단한 모델 아키텍처를 사용하여 고품질의 단어 벡터를 훈련하는 것이 가능하다는 것을 관찰했다. 이는 훨씬 낮은 계산 복잡성을 가지고 있기 때문에 훨씬 더 큰 데이터 세트에서 매우 정확한 고차원 단어 벡터를 계산할 수 있었다.
고품질 단어 벡터가 향후 NLP 응용을 위한 중요한 구성 요소가 될 것으로 기대한다.