Efficient Estimation of Word Representations in Vector Space(2013) 논문 읽기①

AI Scientist를 목표로!·2022년 11월 30일
0

0. Abstract

본 논문은 대량의 데이터로 부터 단어의 연속적인 벡터 표현을 계산하기 위해 2가지 새로운 모델 구조를 제안한다.

이 표현들의 성능은 단어 유사도로 측정되며, 이전에 가장 좋은 성능을 냈던 다른 유형의 신경망 구조와 비교한다.

본 논문은 매우 작은 계산 복잡도로 큰 성능 향상을 보여준다. 다시말해, 1.6 billion 개의 단어 데이터셋으로 부터 높은 품질의 단어 벡터를 배우는 데에 하루가 채 걸리지 않는다.

더욱이, 구문 유사도와 의미 유사도를 측정하기 위해 이 벡터들이 최첨단의 테스트셋을 제공한다는 것을 보여준다.


1. Introduction

많은 NLP 시스템과 기술들은 단어를 Atomic Unit으로 다룬다.

즉, 단어들이 어휘에서 indiced(색인)으로 표현되기 때문에 단어들 사이에 유사성에 대한 개념은 없다.

이러한 선택은 '많은 데이터를 가지고 훈련된 단순한 모델'이 '적은 데이터를 가지고 훈련된 복잡한 모델'보다 뛰어난 것이 관찰되는 등의 장점을 가진다.

위 예시로 N-gram이 있다. N-gram은 모든 데이터에 대해서 훈련이 가능하다.

그러나 N-gram은 많은 Task에서 제약이 존재한다.

예를 들면, 기계 번역에서 많은 언어를 위한 기존의 말뭉치는 단지 수십억개의 단어를 포함한다.

따라서, 단순히 기본 기법의 확대(말뭉치의 양 확대)는 큰 진전이 없을 수 있으며 우리는 보다 발전된 기법에 집중해야 한다.

최근 머신 러닝 기술이 진보하게 되면서, 우리는 더 많은 양의 dataset을 훈련할 수 있게 되었고, 이는 단순한 모델들의 성능을 뛰어 넘었다.

가장 성공적인 concept은 단어의 Distributed Representation을 사용한 것이다.

예를 들어, 언어 모델에 기반한 Nerual Network(인공 신경망)은 N-gram 모델을 뛰어넘는 성능을 보여줬다.

One-Hot Encoding의 문제점

  1. 어휘 집합의 크기가 커지면 계산 복잡성, 메모리 효울성 면에서 문제가 발생
    • 1만개로 구성된다면 1개만 1로 표현, 9999개는 0으로 표현
  2. 두 벡터의 내적 값은 항상 0으로 표햔
    • 두 벡터는 직교 한다는 뜻
    • 두 벡터는 독립적이라는 뜻이지만 실제로는 두 단어 사이의 관련성이 전혀 없지는 않다

Distributed Representation
One-Hot Vector의 문제점을 해결하기 위한 방법
Sparse한 Vector(이진 값)를 Dense한 (연속형의 실수 값)으로 표현


위 그림을 보면 9개의 개체가 존재해 One-Hot vector로 표현하면 9차원의 Vector가 도출 되나,
Distributed Representation로 표현하면, 색상과 모형을 기준으로 하면 2차원의 Vector로도 표현이 될 수 있으며, 2차원 Vector는 실수 값을 가지므로 공간상에서 Vector가 거리나 유사도를 구할 수 있다.


1-1. Goals of the Paper

본 논문의 목적은 수 억개의 단어로 구성된 매우 큰 데이터에서 퀄리티 높은 단어 벡터를 학습할 수 있는 기술을 소개하는 것이다.

유사한 단어가 서로 가까울 뿐 아니라, 단어가 multiple degrees of similarity(여러 단계의 유사성)을 가진다는 가정하에 벡터 표현의 퀄리티를 측정하는 기술을 제안한다.

예를 들어, 유사한 단어를 찾을 때, 명사는 다양한 어미를 가지는데 원래의 벡터 공간의 부분 공간(subspace)서 비슷한 어미를 갖는 단어들을 찾을 수 있다.

놀랍게도, word representation의 유사도는 단순한 synatactic regularities(구문 규칙)을 넘어선다.

단어 벡터에서 대수적 연산으로 word offset technique을 사용하면 vector("King")vector("Man")+vector("Woman")vector("Queen")vector("King")−vector("Man")+vector("Woman")은 vector("Queen")이라는 결과가 나온다.


1-2. Previous Work

이전에도 단어를 연속적인 벡터로 표햔하는 방법을 사용했으며, NMLM 모델에 관한 아키텍처들이 제안되어왔다.

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

또 다른 논문에서 제시된 모델을 보면 단어 벡터들은 single hidden layer를 갖는 Neural network에 의해 먼저 학습 된다.

해당 단어 벡터들은 NNLM을 학습하는데 사용되므로, 단어 벡터들이 전체 NNLM을 구성하지 않아도 학습된다.

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

단어 벡터 자체의 추정은 다양한 모델 아키텍처를 사용하여 수행되었고 다양한 말뭉치에 대해 훈련되었으며, 결과적인 단어 벡터 중 일부는 향후 연구 및 비교에 사용할 수 있게 되었다.


2. Model Architectures

본 논문에서는 인공신경망을 통해 학습된 단어의 Distributed Representation에 주목할 것이다.

training complexity는 다음과 같다

O=E×T×QO = E×T×Q

OO는 training epochs의 수, TT는 training set의 단어 수, QQ는 각 모델의 아키텍처에 따라 다르게 정의 된다.

일반적인 선택은 E = 3 - 50이고 T는 최대 10억이다.

모든 모델은 확률적 그레이디언트 강하 및 역전파를 사용하여 훈련된다.


2-1. Feedforward Neural Net Language Model (NNLM)

NNLM 모델은 Input, Projection, Hidden, Output layer 로 구성되어 있다.

NNLM은 다음층인 투사층(projection layer)을 지나게 됩니다.
인공 신경망에서 입력층과 출력층 사이의 층은 보통 은닉층이라고 부르는데, 여기서 투사층이라고 명명한 이 층은 일반 은닉층과 다르게 가중치 행렬과의 곱셈은 이루어지지만 활성화 함수가 존재하지 않습니다.

투사층의 크기를 M으로 설정하면, 각 입력 단어들은 투사층에서 V × M 크기의 가중치 행렬과 곱해집니다. 여기서 V는 단어 집합의 크기를 의미합니다.
만약 원-핫 벡터의 차원이 7이고, M이 5라면 가중치 행렬 W는 7 × 5 행렬이 됩니다.

Input layer에서, NN개의 선행 단어들이 1ofV1-of-V coding으로 인코딩되며, 전체 vocabulary의 크기가 VV 인 경우 VV 크기의 벡터가 주어진다.

N×DN×D 벡터 크기를 가진 projection layer가 Input layer가 된다.

NNLM 구조는 projection layer가 촘촘할수록 projection layer와 hidden layer 간의 계산이 복잡하다.

NN=10일 때, PP는 500~2000이며, HH는 500에서 1000개이다.

게다가 hidden layer가 모든 단어의 확률 분포를 계산하는 데에 사용되기에 output layer의 차원은 VV가 된다.

따라서, 매 training example마다 계산 복잡도는 다음과 같다.

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

dominating term은 H×VH × V이며, 이를 해결하기 위한 방법으로는 Softmax의 계층적 버전(Hierarchical version of softmax)과 훈련 중에 정규화되지 않은 모델을 사용(avoiding normalized models)하여 정규화된 모델을 완전히 피하는 것이다.

단어의 이진 분류 표현을 사용하면 Output Unit의 수를 log2(V)log_2(V)까지 낮출 수 있다.

이에 따라 대부분의 복잡도는 N×D×HN × D × H에 의해 발생된다.

모델에서, 우리는 단어가 허프만 이진 트리로 표현되는 계층적 Softmax를 사용한다.
이는 단어의 빈도 수가 NNLM에서 class를 얻기위해 잘 작동한다는 이전의 관측들을 따른 것 이다.

Huffman trees는 빈도 높은 단어들에 짧은 이진 코드를 할당하고, 이는 평가되어야 하는 Output Unit의 수를 낮춰준다.

균형잡힌 이진 트리는 평가되어야 하는 log2(V)log_2(V)의 Output을 요구하는 반면,
Hierachical softmax에 기반한 huffman tree는 log2(Unigramperplexity(V))log_2(Unigram perplexity(V))정도만 필요로 한다.

예를 들어, 단어의 크기가 백만일때, 결과적으로 속도는 2배 더 빠른 속도를 낸다.

N×D×HN×D×H 식에서 계산의 병목현상이 일어나는 NNLM에서는 중요한 속도 향상은 아닐지라도,
본 논문에서는 hidden layer가 없고 softmax normalization의 효율성에 주로 의존하는 architectures를 제안할 것이다.


2-2. Recurrent Neural Net Language Model (RNNLM)

RNNLM은 문맥의 길이(the order of the model N)를 지정해야 하는 필요성과 이론적으로 RNN이 얕은 신경망보다 더 복잡한 패턴을 효율적으로 나타낼 수 있기 때문에 NNLM의 특정 한계를 극복하기 위해 제안되었다.

RNN 모델은 projection layer가 없고, input, hidden, output layer만 있다.

이 모델에 특별한 점은 recurrent matrix가 hidden layer 그 자체와 time-delayed connections을 갖고 연결되어 있다는 것이다.

과거의 정보는 이전 단계의 hidden layer의 상태와 현재의 input에 기반하여 업데이트 된 hidden layer의 state로 표현될 수 있기 때문에 recurrent model이 short term memory를 생성하는 것을 가능하게 한다.

RNN model의 훈련 복잡도는 다음과 같다.

Q=H×H+H×VQ=H×H+H×V

Word Represatation D는 hidden layer HH와 같은 차원을 갖고,
H×VH×V 는 계층적 소프트맥스를 사용해서 H×log2(V)H×log_2(V)로 효율적으로 줄일 수 있다.
대부분의 복잡도는 HXH에서 나온다.


2-3. Parallel Training of Neural Networks

거대한 데이터 세트에 대한 모델을 훈련하기 위해, 우리는 피드포워드 NNLM과 본 논문에서 제안된 새로운 모델을 포함하여 DistBelieve라는 대규모 분산 프레임워크 위에 여러 모델을 구현했다.

프레임워크를 통해 동일한 모델의 여러 복제본을 병렬(Parallel)로 실행할 수 있으며, 각 복제본은 모든 매개변수를 유지하는 중앙 서버(centralized server)를 통해 그레이디언트 업데이트를 동기화합니다.

우리는 Adagrad를 사용한 미니배치 경사하강법을 사용했다.


profile
딥러닝 지식의 백지에서 깜지까지

0개의 댓글