인공지능(AI)/자연어처리(NLP)

[NLP 개념] 언어모델(Language Model)

계속지나가기 2021. 5. 3. 20:47
반응형

언어모델이란?


단어들로 이루어진 문장에 대한 확률을 계산하는 일종의 언어에 대한 확률분포함수(Probability Distribution Function, PDF)

 

현재의 자연어 처리(Natural Language Processing, NLP)가 대세가 되기 전 가장 많이 사용된 개념으로, 처음에 Model을 구성하고 나면 그 다음부터는 굉장히 빠르게 문장의 확률을 계산, 현재 문장 다음에 올 단어를 예측 할 수 있으나 Out of vocabulary(OOV) 가 스무딩(Smoothing)과 같은 해결법에도 불구하고 큰 문제점으로 작용한다는 단점을 가지고 있다

 

하지만 NLP의 기본개념으로 언어모델을 필수로 꼽으므로 이번 게시글에서 다뤄보도록 하자

 

아래와 같이 영어문장이 있다고 하자

I don't like rainy days

이 문장에 대한 확률을 계산하기 위해서는 앞에서부터 차례대로 각각의 조건부 확률을 계산하고 이를 체인 룰(Chaine Rule)로 묶어주면 된다

P(I, don't, like, rainy, days)=P(days|I, don't, like, rainy)·P(rainy|I, don't, like)·P(like|I,don't)·P(don't|I)·P(I)

 

 

위의 식을 일반화하면 아래와 같다 

$P(w_1, \cdots, w_n) = \Pi_{i=1}^N P(w_i | w_1, \cdots, w_{n-1})$

 

 

이 후 다음과 같이 Train set에서 각 경우에 대해 카운트하고 이를 이용해 조건부 확률을 계산하여 곱하면 된다

P(days|I, don't, like, rainy)=count(I, don't, like, rainy, days)/count(I, don't, like, raniy)

 

이와 같이 짧은 문장에 대해서는 매우 간단하고 직관적이나 위와 같은 방법으로 언어모델(LM)을 구성하려면 매번 문장의 처음부터 각 단어에 대한 확률을 계산하며 늘려나가기 때문에 문장이 구성되는 모든 경우가 학습 데이터 셋에 있어야 하는데 이는 현실적으로 불가능하다

 

 

N-gram을 통한 Language Model 


LM의 OOV 문제를 해결한 방법

Markov Process

Stochastic Process (Random Process) 중 미래 사건에 대한 Conditional Probability가 오로지 현재의 State에 의존하는 Markov Property를 가진 process

  • The Markov process is called the process with memoryless property
  • stochstic process(확률 과정) : mathematical object usually defined as a family of random variables
    • can be represented by time series
    • may involve several related random variables
  • Conditional Probability : the probability of one event occurring with some relationship to one or more other events
    • formula : p(B|A) = P(A∩B) / P(A)

Markov Assumption

Markov property가 가정된 대상을 서술하기 위한 용어

  • The markov assumption is used to describe a model where the Markov property is assumed to hold, such as a hidden Markov model
  • Markov property : evolution of the Markov process in the future depends only on the present state and does not depend on past history

N-gram using LM

LM에 n-gram 개념을 적용해보면 이전처럼 현재의 단어 이전의 모든 단어에 대한 조건부 확률을 계산할 필요 없이 Markov assumption에 따라 현재 단어만 고려하거나 앞의 한 개 또는 두 개 이상의 단어들에 대해서만 조건부 확률을 계산하면 된다.

 

여기서 몇 개의 단어를 고려하느냐에 따라 아래와 같이 n-gram이 정해지게 된다

 

Uni-gram : 현재의 단어만 고려

P(w1,⋯,wn)=ΠiP(wi)

 

Bi-gram : 이전 단어 1개를 함께 고려

P(w1,⋯,wn)=ΠiP(wi|wi−1)

 

Tri-gram : 이전 단어 2개를 함께 고려

P(w1,⋯,wn)=ΠiP(wi|wi−1,wi−2)

N-gram을 통해 LM을 만드는 과정

  1. Train set에서 전체 단어를 통한 Vocab 구성
  2. Vocab의 단어들에 대한 Co-occurence matrix 생성
    • Generally speaking, a co-occurrence matrix will have specific entities in rows (ER) and columns (EC). The purpose of this matrix is to present the number of times each ER appears in the same context as each EC. As a consequence, in order to use a co-occurrence matrix, you have to define your entites and the context in which they co-occur.
    • In NLP, the most classic approach is to define each entity as a word present in a text, and the context as a sentence
      • Considering the following text
Roses are red. Sky it blue
          | Roses | are | red | Sky | is | blue
Roses | 1 | 1 | 1 | 0 | 0 | 0
are     | 1 | 1 | 1 | 0 | 0 | 0
red     | 1 | 1 | 1 | 0 | 0 | 0
Sky    | 0 | 0 | 0 | 1 | 1 | 1 
is       | 0 | 0 | 0 | 1 | 1 | 1
Blue   | 0 | 0 | 0 | 1 | 1 | 1

 

Estimation of Language Model


LM의 평가 방법은 아래와 같이 두 가지로 들 수 있다

  1. Extrinsic : 특정한 Task에 대해 End-to-End로 돌려보는 것으로 확실히 비교할 수 있지만 Task cost가 큼
  2. Intrinsic : Model만으로 바로 비교할 수 있는 척도를 계산하는 것으로 application에 무관하게 성능을 평가할 수 있다

해당 글에서는 task cost가 적고 application에 무관하게 성능을 평가할 수 있는 Intrinsic Method를 살펴보도록 하자

Intrinsic Method

Intrinsic method를 적용하기 위해서는 먼저 Train set과 구별된 (held-out) set을 얻을 필요가 있다. 모델 비교를 보다 객관적으로 하기 위함이며 보통 이 set을 test set이라고 한다. Intrinsic method를 이용하여 모델을 비교하는 과정은 다음과 같다

  1. 여러 모델들을 train set을 이용하여 구성
  2. 각 모델들을 train set과 구별된 별도의 test set에 대한 확률 계산
  3. Intrinsic Method 척도에 따라 최적의 모델 선별

단, Test set에만 최적화된 Model을 얻을 수 있기 때문에 중간 검토 set인 dev set을 만들어 가장 적절한 모델을 만들고 최종 비교를 test set로 하기도 한다

Perplexity

Perplexity(PP)는 Intrinsic method 중 가장 대표적인 method로 얼마나 확률 분포가 데이터를 잘 설명하는지에 대한 값으로 문장의 길이로 정규화된 문장 확률의 역수로 계산하며 그 값이 작을수록 좋은 모델로 고려한다

PP(W)=P(w1,⋯,wN)^−1/N

=(ΠiP(wi|wi−k,wi−1))^−1/N (For k-gram)

 

perplexity를 test set에 대해 계산하는 과정은 다음과 같다

  1. Test set을 하나의 긴 문장으로 잇는다
  2. 각 문장을 구분하기 위해 문장의 앞과 뒤에 <s> , <s /> 를 추가
  3. 문장 전체애 대해 pp를 계산

 

LM의 한계


LM은 보통 Train set에 전적으로 의존하기 때문에 만약 Test set이 다른 Domain이거나 dialect를 사용한다면 기존의 모델에서만 좋은 성능을 보일 뿐 다른 model에서의 성능은 현저히 낮을 수 있다.

 

또한 N-gram이더라도 항상 Train set에 모든 경우의 수가 있는 것이 아니기 때문에 co-occurence matrix에는 count가 0인 sparsity problem이 존재하게 된다 만약 새로운 데이터에 대해 확률을 계산하는 과정에서 해당하는 값에 대한 통계가 없으면 division by zero가 되어 LM을 적용할 수 없게 되는 문제점이 생긴다

 

이를 해결하기 위한 방법 중 대표적인 방법으로 count가 0인 Matrix 값에 대해 특정값을 더해주어 확률을 0이 되지 않게 만드는 Smoothing 기법이 있다. 해당 기법은 다음 글을 통해 알아보도록 하자

반응형