NLP/AI/Statistics

Language Model: 통계적 언어 모델 본문

NLP

Language Model: 통계적 언어 모델

Danbi Cho 2020. 9. 29. 14:21

언어 모델(language model)은 토큰들의 조합으로 가장 자연스러운 문장을 만들기 위해

 

연속된 각 토큰에 확률을 할당하는 것이다. 

 

즉, 연속된 토큰들의 확률을 이용하여 특정 단어 이후에 나올 토큰을 예측함으로써 가장 자연스러운 문장이 생성되도록 한다.

(이 때 토큰은 음절, 단어, 형태소 등등으로 활용이 가능하며, 기본적으로 '단어'를 사용하기 때문에

본 글에서는 '토큰' 대신 '단어'라는 용어를 사용하여 설명한다.)

 

언어 모델과 같이 연속된 단어에 확률을 할당하는 것은 자연어처리 task에서 중요한 역할을 한다. 

 

이는 기계번역, 오타 교정, 음성 인식 등의 task에서 가장 유사하고, 가장 높은 확률의 텍스트를 생성하도록 한다.

 

기본적으로 언어 모델은 조건부 확률을 이용하여 문장생성확률을 구하는 방식으로 처리된다.

 

연속된 단어$(w_1, w_2, ..., w_n)$가 나타내는 문장$S$의 확률은 아래와 같다.

 

$$P(S) = P(w_1, w_2, ..., w_n)$$ 

 

이 때, 특정 단어가 출현했을 때 다음 단어로 등장할 확률은 조건부 확률로 인해 

 

$$P(w_n|w_1, w_2, ..., w_{n-1})$$

로 표현된다.

 

위의 식은 $(w_1, w_2, ..., w_{n-1})$의 토큰열이 있을 때, 그 다음 단어인 $w_n$가 나타날 확률을 의미한다.

 

즉, 위에서 나타낸 $P(S)$는 아래와 같이 연속된 단어의 문장 확률을 아래와 같이 정의한다.

 

$$P(S) = P(w_1, w_2, ..., w_n) = \prod_{i=1}^{n}P(w_n|w_1, w_2, ..., w_{n-1})$$

 

예를 들어,

 

"나는 학교에 간다"라는 문장에 대하여

 

"나는 학교에" 라는 연속된 단어 이후에 "간다"라는 단어가 나올 확률은 $P(간다|나는 학교에)$와 같으며,

 

이러한 방식으로 "나는 학교에 간다"라는 단어에 대한 문장 확률은

 

$$P(나는 학교에 간다) = P(나는)*P(학교에|나는)*P(간다|나는 학교에)$$

 

와 같이 각 단어데 대한 예측확률들을 곱하여 나타낸다.


#. 조건부 확률

> [Statistics] - [수리통계]Chap.1 확률

 

사상 $A, B$에 대하여 아래와 같이 정의된다.

 

$$P(B|A) = \frac{P(A,B)}{P(A)}$$

$$P(A,B) = P(A)P(B|A)$$


위와 같이 조건부 확률을 이용하여 문장 생성 확률을 나타낸다.

 

이 때, 문장 생성 확률을 위해 각 단어가 문장 뒤에 나타날 확률은 빈도를 기반한 확률분포에 의해 계산된다.

 

즉, $P(간다|나는 학교에)$와 같이 "나는 학교에" 뒤에 "간다"라는 단어가 나타날 확률은 아래와 같다.

 

$$P(간다|나는 학교에) = \frac{count(나는 학교에 간다)}{count(나는 학교에)}$$

 

이는 학습 말뭉치로부터 "나는 학교에"라는 연속된 단어열이 나타난 빈도와 "나는 학교에 간다"라는 연속된 단어열이 나타난 빈도를 통해 실제로 "나는 학교에" 뒤에 "간다"라는 단어가 나타날 확률을 구하는 것이다.

 

이렇게 문장 생성 확률을 나타내는 방식은 학습 말뭉치에 따른 한계가 존재한다.

 

간단히 말해, 학습 말뭉치 안에 "나는 학교에", 혹은 "나는 학교에 간다"라는 연속된 단어열이 존재하지 않는다면

 

위의 식에서 나타나는 확률 값은 0으로, 정의되지 않는다.

 

이를 희소 문제(sparsity problem)이라고 하며, 이러한 문제를 해결하기 위해 자연어처리에서는 N-gram 언어모델을 활용하거나 스무딩(smoothing)기법을 활용한다.

 

 

Comments