[논문 번역] Efficient Estimation of Word Representations in Vector Space 번역

이홍규
25 min readOct 16, 2016

--

Word2Vec 관련 논문을 직역한 것입니다.

(의역이 아닙니다!)

짧은 영어라 오역이 있을 수 있으니 발견시 피드백 부탁드립니다.

벡터 공간에서 단어 표현의 효율적인 예측

(Efficient Estimation of Word Representations in Vector Space)

초록

우리는 대량의 데이터로부터 계산된 단어의 연속적인 벡터 표현을 위한 새로운 모델 구조를 제안한다.

이 표현들의 성능은 단어 유사도로 측정되며 이 결과는 이전에 최고 성능을 보이던 다른 타입의 신경망구조를 기반으로한 기술과 비교한다.

우리는 아주 적은 게산 복잡도로 매우 큰 정확도 향상을 관측했다.

이것은 16 억 단어 데이터 셋으로 부터 높은 품질의 단어 벡터를 학습하기 위해서 하루도 걸리지 않는다.

더욱이 우리는 이 벡터들이 구문과 의미 측면에서 단어의 유사도를 측정하기 위해 우리의 테스트 셋에서 최신의 성능을 제공한다는 것을 증명한다.

도입

현재의 많은 NLP(자연 언어 처리(Natural language processing)) 시스템과 기술들은 단어를 하나의 작은 단어로 취급한다.

이것은 단어 간의 유사도에 대한 사고는 들어있지 않다.

그것들은 어휘의 색인(번호)으로 표현되는 것이다.

이 선택은 몇가지 좋은 이유를 갖는다.

> 단순성, 탄탄함 그리고 관측

성능 면에서 엄청난 양의 데이터로 훈련된 간단한 모델들이 적은 데이터로 훈련된 복잡한 모델을 능가한다.

그 예시는 통계학적인 언어 모델링을 위해 많이 사용되는 N-gram 모델이 있다.

N-gram이란 문자열을 N개의 길이를 기준 단위로 절단하는 방법이다.

(I am student > ‘I_a’, ‘_am’,’am_’,’m_s’,’_st’,’stu’,’tud’, ‘ude’,’den’,’ent’)

오늘날 가상의 모든 유효한 데이터들로 N-grams를 훈련하는게 가능하다.

하지만 간단한 기술들은 많은 작업에서 한계를 갖는다.

예를들어 자동 음성 인식을 위한 많은 관련된 영역의 데이터는 제한된다.

성능은 보통 높은 수준의 말로 표현된 데이터의 크기에 지배를 받는다.

(가끔 오직 수백만의 단어)

기계 번역에서는 많은 언어를 위해 존재하는 말뭉치(단락)는 오직 몇십억의 단어 혹은 더 적은 수를 포함한다.

그러므로 지금 기본적인 기술의 간단한 확장으로 의미있는 진전의 결과를 얻지 못하는 상황이고 우리는 더욱 발전된 기술에 집중해야한다.

최근의 머신러닝 기술의 발전과 함께 더욱 복잡한 모델을 매우 대량의 데이터 셋으로 학습 가능해졌고 그것은 일반적으로 성능면에서 간단한 모델을 능가한다.

아마도 가장 성공적인 컨셉은 단어의 분포를 표현한 것이다. 예를 들어 언어 모델을 기반으로 하는 신경망 구조는 N-gram을 상당히 능가한다.

1.1 논문의 목표

이 논문의 목표는 수십억의 단어와 어휘집에 존재하는 수백만의 단어들로 이루어진 매우 많은 데이터로 부터 높은 수준의 단어 벡터 학습을 하는 기술을 소개하는 것이다.

우리가 알기로는 어떤 이전의 논문들도 단어 벡터의 차원을 보통의 50- 100 차원으로하며, 수백만의 단어보다 많은 데이터를 이용해 성공적으로 훈련하지 못했다.

우리는 결과 벡터 표현의 수준을 평가하기 위해 최근에 제안된 기술을 사용한다.

그 예측은 오직 비슷한 단어가 서로 근접하는 것 뿐만 아니라 단어가 복수의 유사도를 갖도록 한다.

이것은 굴절어(라틴어 등등)의 문맥에서 먼저 관측되고 있다.

예를들어 명사는 여러 어미를 가질수 있다. 그리고 만약 우리가 기존 벡터 공간의 부분공간에서 비슷한 단어를 찾을 때 , 비슷한 어미를 갖는 단어를 찾을 수 있을 것이다.

놀랍게도 간단한 구문 규칙을 넘어서는 단어의 유사도를 발견한다는 것이다.

단어 간격 기술을 이용해 단어 벡터의 대수적 연산을 실행할 수 있다. 예를 들어 ‘King’ - ‘Man’ + ‘Woman’ = ‘Queen’ 과 같은 계산이 가능한 것이다.

이 논문에서 우리는 단어의 선형 규칙들을 보존하는 새로운 모델 구조를 개발하는 것으로 벡터 계산의 정확도를 높이려한다.

우리는 구문 그리고 의미론적인 규칙을 측정하기 위하여 새로운 종합적인 테스트 셋을 설계한다.

우리는 그러한 많은 규칙들이 높은 정확도로 학습되어지는 것을 보일 것이다.

나아가 우리는 학습 시간과 정확도가 단어 벡터의 차원과 학습데이터의 양에 의존하는지 토의할 것이다.

1.2 사전 작업

연속 벡터로서의 단어 표현은 긴 역사를 가지고 있다.

매우 유명한 모델 구조인 NNLM(neural network language model)은 [A neural probabilistic language model. Journal of Machine Learning Research]논문에서 제안되었다.

이것은 Linear Projection Layer와 Non-Linear Hidden Layer 를 기반으로 하는 Feedforward Neural Network로 단어 벡터 표현과 통계학적인 언어 모델의 결합을 학습하는데 사용된다.

이 작업은 많이 사용되었다.

또 다른 흥미로운 구조인 NNLM은 [Language Modeling for Speech Recognition in Czech ][Neural network based language models for higly inflective languages] 논문에 제시된다.

단어 벡터들은 single hidden layer를 갖는 Neural network에 의해 처음 학습 된다.

그 단어 벡터들은 NNLM을 학습하는데 사용된다.

그러므로 단어 벡터들은 비록 전체 NNLM을 구성하지 않아도 학습되어 진다.

이 작업으로 우리는 구조를 직접적으로 확장한다. 그리고 단어 벡터가 간단한 모델에 의해 학습되어지는 첫번째 단계에 주목한다.

이 단어 벡터들은 훗날 많은 NLP 프로그램들의 상당한 향상과 단순화에 사용될 수 있을 것이다.

단어 벡터의 예측은 다른 모델 구조을 사용하는데 실행된다 그리고 다양한 단어 뭉치를 학습한다.

그리고 단어 벡터 결과의 일부는 미래 연구와 비교를 위해 사용 가능하게 된다.

하지만 우리가 알기로는 이 구조들은 학습을 하기 위해 매우 계산 복잡도가 커진다. [Language Modeling for Speech Recognition in Czech]에 소개 된 것보다 더욱 비싸다.
대각 가중치 행렬이 사용되는 log-bilinear 모델의 어떤 버전의 예외와 함께 // (?)

2. 모델 구조

잘 알려진 LSA(Latent Semantic Anlysis)와 LDA(Latent Dirichlet Allocation)을 포함하여 연속적인 단어표현을 예측하는 모델들의 다양한 타입들이 제안되었다.

이 논문에서 우리는 신경망 구조에 의해 학습된 단어의 분포 표현에 집중할 것이다.

이것은 단어의 선형 규칙들을 보존하는 LSA 보다 훨씬 좋은 성능을 보여준다.

게다가 LDA는 많은 데이터 셋에서 계산 복잡도가 매우 크다.

[Strategies for Training Large Scale Neural Network Language Models]와 비슷하게, 다른 모델 구조를 비교하기 위하여 우리는 완전히 학습된 모델에 접근하기 위해 필요한 파라미터의 수자로서 모델의 계산 복잡도를 정의한다.

다음에 우리는 계산 복잡도를 최소화 하면서 정확도 최대화를 시도할 것이다.

앞으로 설명할 모델들을 위해 훈련 복잡도는 아래와 같이 정의한다.

O = E × T × Q

(E — 훈련 Epoch의 수 — 보통 3 ~ 50)

(T — 훈련 셋에 있는 단어의 수 — 보통 10억)

(Q — 각각 모델 구조를 위해 정의 됨)

모든 모델들은 SGD(Stochastic Gradient Descent)와 Backpropagation을 사용해서 학습한다.

2.1 Feedforward Neural Net Language Model(NNLM)

확률적 feedforward neural network 언어 모델은 [A neural probabilistic language model. Journal of Ma- chine Learning Research ] 에서 제안 되었다.

이 모델은 입력, Projection, Hidden, 출력층을 갖는다.

입력층에서는 1-V 방식(V개의 사전의 단어)으로 인코딩된 N개의 이전 단어이다.

입력층은 서로 공유하는 하나의 투영행렬로 만든 N x D 차원의 projection 층으로 투영된다.

단지 N개의 입력만이 특정 시간에 활성화 된다는 점에서, projection 층(P)의 구성은 비교적 값싼 작용(가변운 연산)이다.

NNLM 구조는 projection과 hidden 층 사이의 연산 때문에 복잡해졌다. 이는 projection 층의 값들이 매우 많기 때문이다.

일반적인 선택으로 N = 10으로 하면 P = 500 ~ 2000 정도이다.

나아가 hidden 층은 모든 사전의 단어에 대한 확률 분포를 계산한다. 그 결과로 V 차원의 출력층을 갖는다.

결국 각각 훈련 마다의 계산 복잡도는

Q = N×D + N × D × H + H × V

(가장 큰 부분은 H × V)

하지만 몇몇의 실험적인 해법은 이것을 회피하도록 해준다.

계층적 softmax를 사용하거나 정규화 되지 않는 모델에서 정규 모델을 사용하지 않는 것이 바로 그 예이다.

어휘의 이진 트리 표현으로 검증되어야 하는 결과값의 크기가 log2(V) 에 가깝게 작아질 수 있다.

그러므로 가장 큰 복잡도는 N × D × H 에 의해 생긴다.

우리 모델에서는 어휘가 Huffman 이진 트리로 표현되고 계층적 softmax를 사용한다.

이것은 신경망 구조에서 단어의 구조가 특징을 추출하는데 효과적이라는 과거의 관찰 결과를 따른다.

Huffman 트리는 단어의 빈도에 짧은 이진 코드를 할당한다. 그리고 검증되어야 하는 결과값의 수를 줄인다.

Balanced 이진 트리가 log2(V) 결과값을 요구하는 반면에 Huffman 트리는 오직 log2(Unigram_perplexity(V)) 크기를 요구하는 계층적 softmax를 기반으로 한다.

예를 들어 어휘의 크기가 100만개 일 때 이 결과들은 거의 두배의 속도 차이를 보인다.

이런 차이가 NNLM의 계산 병목의 주원인인 N x D x H에 영향을 주는 중요한 속도 향상은 아니지만 우리는 후에 hidden 층을 사용하지 않는 구조를 제안할 것이다.

그것은 softmax 표준화(sigmoid) 성능에 크게 영향을 받습니다.

cf — 유니그램 : 입력문자를 한 글자씩 잘라서 사용 perplexity : 결과값을 평가하는 방법

2.2 Recurrent Neural Net Language Model(RNNLM)

언어 모델 기반의 RNN은 NNLM의 몇가지 한계(특정 단락의 길이의 필요와 같은)를 극복한 것으로 제안되었다.

그리고 이론적으로 RNN은 얕은 신경망 구조 보다 복잡한 패턴을 더욱 효과적으로 표현할 수 있다.

RNN 모델은 projection 층을 갖지 않고 입력, hidden 그리고 출력 층을 가진다.

이 모델의 특별한 점은 시간의 흐름에 따른 연결을 위해 자신의 hidden 층에 연결된 반복되는 행렬이다.

이것은 반복적인 모델이 현재의 입력과 과거의 hidden 층의 상태를 기반으로 hidden 층의 상태를 갱신하는 것으로 과거의 정보를 표현하는 짧은 기간의 기억을 가능하게 한다.

RNN 모델 훈련의 계산 복잡도는 아래와 같다.

Q = H × H + H × V

(D 는 hidden layer와 같은 차원을 가지는 단어의 표현이다.)

H × V 항은 계층적인 softmax를 이용해 효율적으로 H × log2(V)로 줄어든다.

가장 큰 복잡도는 H × H에 의해 생긴다.

2.3 Parallel Training of Neural Networks

큰 데이터 셋으로 모델을 훈련시키기 위해 우리는 DistBelief라고 불리는 큰 규모의 분산 framework 기반으로 NNLM과 논문에서 제시한 모델들을 실행했다.(DistBelief 는 구글의 첫번째 머신러닝 시스템, 두번째는 Tensorflow)

이 framework는 병렬로 같은 모델에 대한 여러개의 복제본을 실행할수 있게 한다. 그리고 각각의 복제본은 모든 변수를 보유하는 중앙 집중식 서버에서 gradient 갱신을 동기화한다.

이 병렬 훈련을 위해서 우리는 Adagrad라고 불리는 Adaptive learning rate 방식을 기반으로 하는 mini-batch 비동기식 gradient descent를 사용한다.

이 framework에서 100 혹은 더 많은 모델 복제본을 사용하는 것이 일반적이고 각각은 데이터 센터의 다른 머신에서 많은 CPU 코어를 사용한다.

3. New Log-linear Models

이 섹션에서 우리는 계산 복잡도를 최소화 하기 위해 단어의 분산 표현을 학습하기 위해 두가지 새로운 모델 구조를 제안한다.

이전 섹션에서의 핵심 관찰은 모델의 비선형 hidden layer가 가장 큰 계산 복잡도의 원인이라는 것이다.

신경망 구조가 매우 매력적이지만 우리는 간단한 모델을 도전하기로 했다.

그 모델이 신경망 구조처럼 간결하게 데이터를 표현할수 있고 또한 더많은 데이터를 효과적으로 학습할 수 있을 것이다.

새로운 구조는 직접적으로 우리가 이전에 제안한 작업들을 따른다.

이것은 언어 모델 신경망 구조에서 발견된 것으로 2가지 단계로 성공적인 훈련을 할 수 있다.

첫번째로 연속적인 단어 벡터들은 간단한 모델을 사용해서 학습할 수 있으며 N-gram NNLM은 이 단어의 분산 표현에 의해서 학습된다.

단어 벡터의 학습에 집중하는 상당한 작업 후에 우리는 [Language Modeling for Speech Recognition in Czech ]에서 제안한 접근이 매우 간단한 방법이라는 것을 고려하게된다.(?)

이와 관계된 모델은 또한 매우 간단해 질 것이다.

3.1 Continuous Bag-of-Words Model

첫번째 제안하는 구조는 비선형 hidden 층이 사라지고 projection 층이 모든 단어들에서 공유되는 것을 제외하고 feedforward NNLM과 유사하다.

우리는 이 구조를 단어의 순서가 projection에 영향을 주지 않는 것으로 bag-of-words 모델이라고 한다.

나아가, 우리는 앞으로 나올 단어들도 사용한다.

우리는 앞뒤로 4개씩의 단어를 입력으로 log선형 분류기를 이용해서 현재의 단어를 분류해내는데 최고의 성능을 내도록 했다.

그 훈련 복잡도는

Q = N × D + D × log2(V)

우리는 이 모델을 표준 bag-of-words 모델과 다른 모델로서 CBOW 라고 표현할 것이다.

이 모델은 문맥의 연속된 분산 표현을 사용한다.

이 모델 구조는 아래 그림과 같다.

NNLM에서와 같이 입력과 projection 층 사이의 가중치 행렬은 모든 단어들이 공유한다.

3.2 Continuous Skip-gram Model

두번째 구조는 CBOW와 비슷하지만 문맥을 통해서 현재 단어를 예측하는 것 대신 같은 문장에서의 다른 단어들을 기반으로 단어의 분류를 극대화한다.

구체적으로 우리는 각각의 현재 단어를 연속적인 projection 층과 함께 log-linear 분류기의 입력으로서 사용한다.

그리고 특정 범위의 앞 뒤 단어들을 예측한다.

우리는 범위를 늘리는 것이 단어 벡터의 결과의 품질을 향상시킨다는 것을 알았다. 하지만 이것은 계산 복잡도를 증가시킨다.

멀리 떨어진 단어일수록 보통 현재 단어와 적은 연관을 갖기 때문에 우리는 우리의 훈련 예시 단어에서 적은 샘플링을 하는 것으로 적은 가중치를 두었다.

이 구조의 훈련 복잡도는

Q = C × (D + D × log2(V))

(C : 단어의 최대 거리)

만약 C = 5이라면 각각의 훈련 단어를 위해서 우리는 <1:C> 범위에서 랜덤하게 숫자 R을 선택한다. 그리고 앞 뒤로 R개의 단어를 정답 라벨링한다.

현재 단어를 입력으로 하는 이것은 R x 2 크기의 단어 분류기를 필요로 한다. 출력은 R + R 단어 이다.

우리의 실험에서는 C = 10 을 사용한다.

4. 결과

다른 버전의 단어 벡터들의 성능을 비교하기 위하여 이전의 논문들을 예시 단어와 가장 비슷한 단어를 표로 보여줄 것이고 이를 직관적으로 이해할 것이다.

비록 France라는 단어와 Italy의 단어가 비슷함을 보이는 것은 쉽지만 더 복잡한 유사도 판별에서 이 벡터들을 다루는 것은 매우 어려울 것이다.

우리는 단어들의 유사도에 매우 다양한 종류가 있을 것이라는 과거의 관찰 결과를 따를 것이다.

예를 들어 big과 bigger는 small과 smaller와 같은 이치로 유사도를 갖는다.

다른 관계의 예시는 big-biggest 와 small-smallest이다.

우리는 두 쌍의 단어들이 같은 관계를 갖는 것을 질문으로 정의해 볼 것이다.

“big이 biggest와 같은 이치로 small과 비슷한 단어는 무엇인가?”

놀랍게도 이 질문들은 단어의 벡터 표현의 간단한 산술 연산을 실행할 수 있다.

big이 biggest와 같은 이치로 small과 비슷한 단어를 찾기 위해서 우리는 간단하게 X = vector(“biggest”) — vector(‘big”) + vector(“small”) 로 계산할 수 있다.

그 다음 우리는 cosine 거리에 의해 측정된 가장 가까운 단어를 벡터 공간에서 찾을 수 있다. 그리고 이것이 지문의 답변이 되는 것이다.

(우리는 search 중에 입력 단어를 버릴 것이다. -> 벡터만 쓴다.)

우리의 단어 벡터가 훌륭하게 훈련된다면 정확한 단어를 찾는 것이 가능 할 것이다.(smallest)

마지막으로 우리는 매우 많은 데이터를 가지고 높은 차원의 단어 벡터를 학습할 때 결과 벡터는 매우 미묘한 의미의 관계를 답변하는데 사용될 수 있다는 것을 알았다.

예를 들어 국가와 도시의 관계이다. 프랑스 — 파리 는 독일 — 베를린 이다.

이렇게 의미적인 관계를 갖는 단어 벡터들은 이미 존재하는 많은 NLP 작업들의 성능 항샹에 사용될 수 있을 것이다.

이것들에는 기계 번역, 정보 검색, 질문 답변 시스템 그리고 아직 발명되지 않은 미래의 응용프로그램들이다.

4.1 작업 설명

단어 벡터의 품질을 측정하기 위해서 우리는 5가지 종류의 의미론적인 그리고 9 가지 종류의 구문론적인 질문들을 담는 종합적인 테스트셋을 정의했다.

각각 카테고리로 부터의 두가지 예시는 위의 표에서와 같다.

전체적으로 보아 8869개의 의미론적인 질문들과 10675개의 구문론적인 질문들이 있다.

각각의 카테고리에서 이 질문들은 두가지 단계에 의해 생성된다.

첫번쨰, 직접 유사한 단어들의 쌍의 목록을 작성한다.

그러면 질문들의 많은 리스트가 두 단어의 쌍의 연결로 구성된다.

예를들어 우리는 68 개의 미국 도시와 주들의 연결 리스트를 만들었다.

그리고 우리는 두 단어의 쌍을 랜덤으로 뽑아 2.5K 개의 문제를 제작했다.

우리는 우리의 테스트 셋에 하나의 단어로 된 단어만 넣었고 복수의 단어로 구성된 것은 넣지 않았다( New York 같은 경우 )

우리는 모든 타입에 대해서 그리고 각각의 타입에 대해서 모든 정확도를 평가한다.

질문은 위의 방법으로 얻어낸 오직 가장 가까운 단어 벡터가 정확하게 질문의 답변과 같을 때를 정확하게 답변된 것이라고 가정한다.

동의어는 실수로 추산한다.

이것은 또한 단어 형태학에 대한 정보가 입력되지 않는 현재의 모델로는 100%의 정확도가 불가능할 것이라는 것을 의미한다.

하지만 이 정확성 측정 기준에 긍정적인 상관관계를 갖을 것으로 우리는 단어 벡터의 유용성을 믿는다.(단어 벡터에 의해서 정확성이 향상할 것이다)

앞으로의 진행은 단어의 구조, 특히 구문론적인 질문에 대한 정보들의 총합으로 달성할 수 있을 것이다.

4.2 정확도 최대화

우리는 구글 뉴스 말뭉치(단락)를 단어 벡터의 훈련에 사용하였다.

이 말뭉치들은 60억 단어들을 포함한다.

우리는 어휘의 크기를 가장 많이 사용되는 단어 100만으로 제한하였다.

명백하게, 우리는 많은 데이터, 높은 차원의 단어 벡터를 사용하는 것이 높은 정확도를 나타낼 것으로 예상되는 제한 최적화 문제의 문제를 직면하였다.

가능한 빠르게 결과를 얻기위한 가장 좋은 모델 선택을 예측하기 위해 우리는 가장 많이 사용된 3만 개의 단어로 어휘를 제한한 학습 데이터의 일부를 이용해 모델을 평가했다.

다른 단어 벡터 차원과 훈련 데이터의 크기를 증가시키며 CBOW 구조를 테스트한 결과는 아래 표와 같다.

이것은 어떤 지점 이후에 차원 증가 혹은 데이터 증가에 의한 향상이 절감됨을 볼 수 있다.(개별적으로 올렸을 때의 효과)

그러므로 우리는 동시에 벡터의 차원과 데이터의 양을 증가시켜야한다.

이 관찰이 사소한 것으로 보인다면, 이것은 부족한 크기의 (50–100 개 단어) 훈련이 아니라 매우 많은 양의 데이터로 하는 단어 벡터 학습을 위해 알맞은 것이라는 것을 반드시 주의해야 한다.

Continuous Bag-of-Words Model의 계산복잡도 함수는 훈련 데이터의 양을 두배로 늘렸을 때 벡터 크기를 두배 늘린 것 과 같은 계산 복잡도가 증가하는 결과 보인다.

위의 도표와 공식 규격과의 비교 시험 결과(뒷부분에 표시)는 우리가 Stochastic Gradien Descent와 Backpropagation을 3 cycle 진행한 결과이다.

우리는 학습률을 0.025로 선정하였고 선형적으로 감소한다.

결국 마지막 훈련 Cycle에서는 0에 근접하게 된다.

4.3 모델 구조의 비교

첫번째로 우리는 다른 모델에서 같은 훈련 데이터와 같은 640 차원의 단어 벡터를 사용하여 유도한 단어 벡터를 비교한다.

후의 실험에서 우리는 3만 개의 어휘에 제한되지 않은 의미론, 구문론적 단어 관계 테스트 셋의 질문 전부를 사용한다.

우리는 또한 단어 사이의구문론적 유사도에 초점을 둔 [Linguistic Regularities in Continuous Space Word Representations]에서 소개된 테스트 셋의 결과를 포함한다.

테스트 데이터는 몇몇의 LDC 말뭉치로 구성되었고 구체적으로 [Strategies for Training Large Scale Neural Network Language Models] 에 소개되어있다.(3억 2천만 단어와 8만 2천개의 어휘)

우리는 이 데이터를 한개의 CPU에서 8주간 훈련한 과거의 RNN 기반 언어 모델과 비교하는데 사용한다.

우리는 이전의 8개 단어들을 입력으로 하고 같은 크기의 640 hidden unist을 갖는 DistBelief 병렬 훈련으로 feedforward NNLM로 학습한다.

(그러므로 NNLM은 RNNLM 보다 많은 파라미터를 갖는다. projection lyaer의 크기는 640*8 이기 때문이다)

위 표에서 RNN 에서 얻어낸 구문론적인 질문에 좋은 성능을 갖는 것으로 보인다. RNN 데이터는 표의 오른쪽 데이터이다.[Linguistic Regularities in Continuous Space Word Representations ] 에서 얻은 정보

NNLM 벡터들은 RNN 보다 더 좋은 성능을 보인다.

이건 놀랍지 않은 것이 RNNLM의 단어 벡터들은 비선형 hidden 층에 연결되기 때문이다.

CBOW 구조는 NNLM 보다 구문론적인 작업에서 좋은 성능을 보인다.

그리고 의미론적으로는 거의 같다.

마지막으로 Skip-gram 구조는 CBOW 모델보다 구문론적으로는 약간 부족하다.(하지만 여전히 NNLM 보다는 좋다)

그리고 의미론적인 부분에서는 다른 모든 테스트보다 월등히 좋다.

다음에 우리는 우리 모델을 한개의 CPU 만으로 훈련하여 평가한다. 그리고 그 결과를 공식적인 규격인 단어 벡터와 비교한다.

그 비교는 표는 아래와 같다.

<공식 규격과의 비교 데이터>

Skip-gram 모델이 3일치, CBOW 모델은 하루 구글 뉴스 데이터의 일부로 훈련한다.

앞으로의 실험 결과에서 우리는 오직 하나의 훈련 Cycle를 사용한다.

(다시 말하면 우리는 점점 학습률을 낮춰서 최종적으로 0으로 수렴한다.)

같은 데이터로 3번의 Cycle을 훈련하는 것보다 두 배 이상의 데이터로 1번 Cycle을 훈련시키는 것이 더 좋은 데이터를 갖는다.

그리고 더 빠르다.

4.4 모델의 대규모 병렬 훈련

이전에 언급했듯이 우리는 DistBelief 라고 불리는 분산 framework에서 다양한 모델을 실행한다.(DistBelief는 구글의 첫 머신러닝 시스템 > 텐서 플로우가 두번째 시스템)

아래의 논문에서 우리는 Adagrad라고 불리는 adaptive learning rate 방식과 mini-batch 비동기 gradient descent를 사용하여 구글 뉴스의 60억 데이터 셋으로 훈련한 몇몇 모델의 결과를 보여줍니다.

[Adaptive subgradient methods for online learning and stochastic optimization]

우리는 훈련 시에 50~100 개의 복제 모델을 사용한다.

CPU 코어의 숫자는 다른 작업들과 사용법이 약간씩 변동할 수 있는 데이터 센터 머신의 추산이다.

분산 framework 위에 있기 때문에 CBOW 모델과 Skip-gram 모델의 CPU 사용은 한개의 머신에서 수행하는 것보다 더욱 각각에 가까워진다.

그 결과는 아래의 표로 보여준다.

4.5 마이크로소프트의 문장 채우기에 대한 연구(Microsoft Research Sentence Completion Challenge — 너무 길어서 앞으로 MRSCC로 쓰겠습니다.)

MRSCC는 향상된 언어모델과 또다른 NLP 기술을 위한 작업으로 최근 소개되었다.

이 작업은 각각 문장에 한개의 글자가 빠져있는 1040개의 문장을 사용한다.

그것의 목표는 5개의 합리적인 선택지 중에 문장에 가장 어울리는 단어를 선택하는 것이다.

몇몇 기술의 성능은 이미 알려져 있다.

> N-gram 모델, LSA 기반 모델과 log-bilinear 모델 그리고 RNN의 결합(현재 55.4% 정확도를 가지고 있다)

우리는 이 작업에서 Skip-gram 구조의 성능을 확인했다.

첫번째로 우리는 [MRSCC]에 있는 5천만개의 단어를 640 차원 모델로 훈련했다.

그리고 우리는 임의 단어의 주변 단어를 예측하여 각각 모르는 단어를 문장에 대한 답을 계산했다.

마지막 문장 답은 각각의 예측의 합이다.

문장 답을 이용해서 우리는 가장 비슷한 문장을 선택한다.

몇몇 이전의 결과들과 새로운 결과를 짧게 정리하여 아래 표로 표현했다.

Skip-gram 모델 자체로는 LSA 유사도 보다 좋은 성능을 내지 못하지만 RNNLM으로 얻은 값으로 이 모델을 보완하고 가중치 조합은 58.9%의 정확도를 나타낸다.

(개발 part — 59.2%, Test part — 58.7%)

5. 학습 관계의 예시

아래 표는 단어의 다양한 관계를 보여준다.

우리는 이와 같은 접근을 따른다.

두 단어 벡터의 뺄셈으로 관계가 정의된다.

그리고 결과는 다른 단어와 더해질 수 있다.

예를 들어

Paris — France + Italy = Rome

보시다시피 정확도는 훌륭하다. 비록 더 향상될 가능성을 많이 갖고 있지만 말이다.

(우리가 가지고 있는 정확한 결과와 비교했을 때 위 표의 결과는 60% 정도 정확도이다)

우리는 더 많은 차워에서 더 큰 데이터를 가지고 학습된 단어 데이터가 훨씬 좋은 성능을 낼 것으로 믿고 이것은 새로운 혁신적인 개발로 이어질 것이다.

정확도를 높이는 또 다른 방법은 한개 이상의 관계를 공급하는 것이다.

관계를 형성하기 위해 한개가 아닌 10개의 예시를 주는 것으로 우리는 10% 정도의 정확도 향상을 관찰했다.

다른 문제를 해결하는 데 벡터 연산을 사용하는 것도 가능하다.

예를 들어 우리는 명단에서 빼내야할 단어를 선택하는데 높은 정확도를 보였다.

리스트의 평균 벡터를 계산하여 가장 먼 벡터를 찾아내는 것이다.

이것은 IQ 테스트 의 가장 인기있는 종류의 문제이다.

명백하게 이 기술을 이용해 수많은 발견들이 생길 것이다.

6. 결론

이 논문에서 우리는 의미론, 구문론적인 언어의 수집 작업의 다양한 모델에서 유도된 단어의 벡터 표현의 성능에 대해 연구했다.

우리는 인기있는 모델인 신경망 모델과 비교했을 때 매우 간단한 모델 구조를 사용하여 얻은 단어 벡터가 좋은 성능을 가질 수 있음을 확인했다.

거대한 데이터 셋이 있다면 매우 적은 계산 복잡도로 높은 차원의 단어 벡터를 정확하게 구할 수 있다.

DistBelief 분산 framework를 사용하여 일반적으로 크기의 한계가 없는 어휘들을 오직 1조개의 단어가 들어있는 말뭉치로 CBOW와 Skip-gram 모델을 학습할 수 있었다.

이것은 과거에 출판된 비슷한 모델의 결과들 보다 그 수의 비교가 크다.

단어 벡터가 이전의 작업들보다 월등한 성능을 보이는 때에 SemEval-2012 Task2는 흥미로운 작업입니다.[Semeval-2012 task 2: Measuring degrees of relational similarity. In: Proceedings of the 6th International Workshop on Semantic Evaluation ]

공개적으로 사용 가능한 RNN 벡터들은 다른 기술들과 함께 사용 되어지고 있다.

Spearman’s rank에서는 그전에 사용되던 최고의 결과보다 50% 향상을 이끌어내었다.

단어 벡터들을 기반으로 하는 신경망 구조들은 감정 분석이나 비유 탐색 등의 이전의 많은 NLP 작업들에 적용되었다.

이 논문에서 제시한 모델 구조가 이런 작업들에 도움을 줄것으로 예상해본다.

우리가 계속 진행 중인 작업은 단어 벡터가 지식의 자동적인 확장과 사실 검증의 증명을 통해 성공적으로 적용될 것을 증명한다.

기계 번역 실험의 결과들은 또한 매우 희망적이다.

미래에는 우리의 기술을 Latent Relational Analysis나 다른 기술들과 비교하는 것도 흥미로울 것이다.

우리는 우리의 종합적인 테스트 셋은 단어 벡터를 추정하는 현재 존재하는 결과를 향상시키는 것으로 연구원들을 도와줄 것으로 믿는다.

또한 우리는 높은 성능의 단어 벡터는 미래의 NLP 프로그램들을 만들때 중요한 가치가 될 것이다.

7. 앞으로의 작업

이 논문이 쓰인 초기버전 후에 우리는 단일 머신으로 multi-threaded C++로 작업하는 단어 벡터 계산 코드를 배포할 것이다.(continuous bag-of-word와 skip-gram 모두)

훈련 속도는 이전에 발표된 논문들 보다 확연히 빠를 것이다.

우리는 또한 독립적인 이름으로 표현되고 1억 단어 이상으로 훈련된 140만 개의 벡터를 배포할 것이다.

몇몇 우리의 작업은 곧 있을 NIPS 2013 논문에서 배포 될 것이다.

논문 출처 : https://arxiv.org/pdf/1301.3781.pdf

정리 출처 : https://shuuki4.wordpress.com/2016/01/27/word2vec-%EA%B4%80%EB%A0%A8-%EC%9D%B4%EB%A1%A0-%EC%A0%95%EB%A6%AC/

--

--