데이터과학/자연어처리

[자연어처리][paper review] NNLM : A Neural Probabilistic Language Model

섭구
반응형

 

본 논문을 통해 처음 소개된 NNLM(Neural Network Language Model)은 word2vec의 기초가 되는 논문으로 2003년 발표되었습니다.

 

count based word representation이 많이 사용되면 당시, language modeling을 어렵게 하던 가장 큰 요소는 바로

차원의 저주 "curse of dimensionality" 였습니다. 

bag of words 혹은 one-hot encoding과 같이 하나의 단어를 하나의 discrete random variable으로 나타내는 경우에,

문장을 모델링하기 위해서는 vocabulary size V 만큼의 joint distribution을 고려해야 하는 상황이 발생하게 됩니다.

특히 예를들어, 10개의 연속된 단어로 이루어진 joint distribution을 사용하여 문장을 모델링하기 위해서는 \(V^{10}\)에 가까운 free parameter가 발생합니다.

discrete variable을 통한 word representation은 이처럼 어떠한 task보다 nlp에게 있어 차원의 저주를 내리게 되는 것 입니다.

또한 discrete variable은 continuous variable에 비교하여 변화에 민감하기 때문에 generalization 성능 또한 떨어집니다.

NNLM의 목적은 discrete variable로 인한 차원의 저주를 distributed representation을 학습하여 해결하는 것 입니다.

1.Statistical language model

statistical language model은 기본적으로 count based의 discrete word representation을 활용합니다.

문장이 발생할 확률은 위와 같이 joint distribution의 조건부 확률 곱으로서 표현됩니다. 조건부 확률의 'Chain rule'을  떠올리시면 됩니다.

$$``한화는\, 우승\,할\, 것이다."$$

$$P(우승|한화는) \times P(할|한화는,우승)\times P(것이다|한화는,우승,할)$$

하지만 일반적으로 chain rule을 적용할 시, training set에 없는 시퀀스가 한번이라도 발생하면, 그 확률값은 0으로 나타날 것 입니다. 라플라스 스무딩과 같이 0확률에 작은 수를 더해주는 등, 이를 방지하기 위한 방법이 존재하기는 하지만 차원의 저주와 더불어 문제가 됨은 분명합니다.

 

이러한 방법의 어려움을 덜어준 것이 바로 n-gram입니다.

n-gram은 각각의 단어들이 주변 단어에 조금 더 큰 영향을 받는다는 가정 하에,

마지막 n개의 단어로 부터 얻는 조건부 확률값이 전체 단어로 부터 얻는 조건부 확률값과 거의 같다는 것을 전제로 조건부 확률을 계산합니다.

상대적으로 짧은 시퀀스를 계산하기 때문에 out-of-sample에 조금 덜 민감해 질 것이며 계산 효율성도 상대적으로 좋습니다.

 

하지만 n-gram에도 해결돼야할 문제가 있습니다

problem 1.

n-gram은 멀어야 2개 까지의 단어만을 고려합니다. 짧은 시퀀스를 사용하는 만큼 얻는 trade-off 입니다.

 

problem 2.

n-gram 방법 역시, discrete word representation을 사용합니다.

따라서 n-gram(Statistical language model)은 단어간의 유사성을 반영하지 못합니다.

단적인 예 로서,

삼겹살 [0,0,0,0,0,1] , 목살 [0,0,0,1,0,0] , 연필 [0,1,0,0,0,0] 세 개의 discrete representation 단어가 있을 때,

$$(W^{삼겹살})^T W^{목살} = (W^{삼겹살})^T W^{연필} = 0 $$

세 단어간의 유사 관계가 전혀 반영되지 않는 것을 확인할 수 있습니다.

 

2.NNLM(Neural Probabilistic Language Model)

count based Statistical language model은 차원의 저주에서 벗어나지 못했습니다.

따라서 본 논문의 저자들을 신경망 기반의 Distributed Representation을 통하여

Statistical language model에서 발생한 문제들을 해결합니다.

NNLM의 object는 \(f(w_t,...,w_{t-n+1}) = \hat{P}(w_t|{w_1}^{t-1})\)를 만족하는 좋은 모델 \(f\)를 얻는 것 입니다.

 

\(f\)의 조건은 다음 두가지 입니다.

condition 1

\(f\)의 결과는 문장 시퀀스에 대한 확률값이기 때문에 0 이상입니다. : \(f>0\)

condition 2.

또한 모든 vocabulary의 단어 words의 \(f\)값의 합은 1이어야 합니다. : \(\sum_{i=1}^{|V|}f(i,w_{t-1},...,w_{t-n+1}) = 1\)

 

이 과정에서 \(f\)를 두가지 part \(C,g\)로 나누어 표현합니다.

process 1. projection matrix C

우선, NNLM은 discrete representation이 아닌 \({\mathbb{R}}^m\) 의 distributed feature vector로서 단어를 표현합니다.  \((m<|V|)\)

이를 위하여 \( w \in {\mathbb{R}}^{|V|} \)인 one-hot vector \(w\)에

\(|V|\times m\)인 projection matrix \(C\)를 곱하여 각 단어를 m차원의 distributed feature vector로 표현하게 됩니다.

\(C\)는 각각의 i번째 row가 \(w_i\)의 feature vector인 lookup-table 이라고 생각하시면 됩니다.

따라서 이후의 과정을 통해 학습이 완료된 \(\textbf C_i\)는 각각의 단어 \(\textbf w_i\)를 위한 m차원의 distributed word representation이 됩니다.

$$C(w_t) = Cw_t$$

$$(w_{t-n+1},...,w_{t-1}) \rightarrow(C(w_{t-n+1}),...,C(w_{t-1}))$$

 

process 2. probability mapping g

\(C\)를 통하여 discrete가 아닌 distributed feature vector를 얻었습니다.

두번째 part는 probability mapping function \(g\) 입니다.

\((C(w_{t-n+1}),...,C(w_{t-1}))\)를 확률로 mapping 해주는 함수 \(g\)를 적용합니다.

$$f(i, w_{t-1} ,...,w _{t-n+1} ) = g(C(w_{t-1}),...,C( w_{t-n+1} ))$$

\(g\)는 \(\theta = (C,\omega)\)를 파라미터로 가지는 feed-forward neural network를 사용하며,

이 때, 입력값을 확률값으로 매핑하기 위하여 output layer에는 softmax 활성화 함수를 사용하게 됩니다.

 

 

전체적인 구조를 다시한번 설명하면,

input layer는 one-hot encoding을 진행하며 이때 사전의 크기인 V차원으로 임베딩 합니다. 

proejction layer는 Input 된 N개의 단어에 대하여 D 차원으로 임베딩 합니다. 이때 projection Matrix \(C\)가 사용됩니다. 따라서 C는 모든 input에 대하여 공유됩니다. activation function은 존재하지 않습니다.

특이한 점이라면 projection을 거친 \(C_{t...}\)를 hidden layer를 거치지 않고 output layer단으로 보내는 skip-connection이 적용됩니다.

hidden layer는 tanh 활성화 함수를 사용하는 일반적 구조를 따르며,

output layer는 softmax 활성화 함수를 통해 각각 단어에 대한 확률 값을 결과로 내놓게 됩니다.

softmax output of \(f\)

 

objective function은 다음과 같습니다.

objective function

일반적인 MLE와 같이 neural network의 output log-likelihood를 최대화 합니다.

\(R(\theta)\)은 weight decay regularization term 입니다.

 

optimization은 Stochastic gradient ascent를 사용합니다.

Stochastic gradient ascent

이러한 일련의 학습과정을 통하여 distributed word representation table \(\textbf C\)가 완성됩니다.

3.Results

실험은 Perplexity를 사용하여 모델을 비교합니다.

$$Perplexity = \sqrt[N]{{1\over \prod_{i=1}^{N}{\hat{P}(w_t|{w_1}^{t-1})}}}$$

Perplexity는 식과 같이 주어진 문장에서 \(\hat{P}(w_t|{w_1}^{t-1})\)의 역수인 \(1\over \hat{P}(w_t|{w_1}^{t-1})\)의 기하평균이라고 생각하면 됩니다.

따라서 문장의 발생 확률이 높을수록 각각의 \(1\over \hat{P}(w_t|{w_1}^{t-1})\) 값은 낮아지기 때문에,

Perplexity가 낮다는 것은 주어진 문장의 발생 확률이 높아 언어 모델이 잘 학습되었음을 의미합니다.

 

실험 결과 MLP(neural network)를 사용한 모델이 n-gram based의 다른 모델과 비교하였을 때, 가장 낮은 test perplexity를 보이며 보다 양질의 언어모델을 학습하였음을 확인할 수 있습니다.

skip-connection(direct)이 유용한지, 아닌지에 대해서는 확실히 답을 내릴 수 없었습니다.

하지만 저자들이 skip-connection을 추가한 이유는 적은 데이터셋에 대해서는 분명한 generalization 효과를 보였기 때문입니다.

또한 perplexity가 약간 증가하는 손해는 있었지만, skip-connection은 수렴하기 위한 학습시간을 두배정도 더 빠르게 해주었다고 합니다.

 

 

마무리

NNLM은 당시 주류를 이루던 count-based의 Statistical n-gram model의 여러 문제를 제시하였으며,

Neural network를 활용하여 문장 sequence를 입력으로 각각 문장의 확률을 얻게 하였습니다.

그리고 이러한 과정을 통해 discrete word representation의 단점을 보완할 수 있는 distributed word representation을 얻을 수 있었습니다. 이 논문을 시작으로 Word2Vec,Doc2Vec, FastText와 같은 다양한 Neural network 기반의 언어모델이 등장하게 됩니다.

지금이 돼서야 정말 당연한 방법론이 되었지만, 2003년도라는 배경을 생각해 봤을 때, 벤지오 교수님이 왜 이 분야의 대가인지 새삼 느끼게 해주는 논문이었습니다. 

 

반응형