언어 모델

hyeony·2024년 10월 17일

NLP

목록 보기
2/12

1. Introduction

가. 언어 모델(Language Model)이란?

언어 모델이란 단어 시퀀스(문장)에 확률을 할당(assign)하는 모델이며, 가장 자연스러운 단어 시퀀스를 찾아내는 것에 목적이 있다. 예를 들어, 이전 단어들이 주어졌을 때 다음 단어를 예측하거나 주어진 양쪽의 단어들로부터 가운데 비어있는 단어를 예측하는 것이다. 이렇게 주어진 단어들로 아직 모르는 단어를 예측하는 작업을 언어 모델링(Language Modeling) 이라고 한다. 언어 모델을 만들기 위해서는 통계나 인공 신경망을 이용한다.

나. 단어 시퀀스의 확률 할당 사례

언어 모델을 다음과 같이 확률을 사용하여 보다 적절한 문장을 판단한다.

① 기계 번역(Machine Translation)
P(나는 버스를 탔다) > P(나는 버스를 태운다)

② 오타 교정(Spell Correction)
선생님이 교실로 부리나케
→ P(달려갔다) > P(잘려갔다)

③ 음성 인식(Speech Recognition)
P(나는 메롱을 먹는다) < P(나는 메론을 먹는다)

다. 언어 모델의 간단한 직관

예) 비행기를 타려고 공항에 갔는데 지각을 하는 바람에 비행기를 [?].
→ 놓쳤다

일반인의 지식에 기반하여 나올 수 있는 여러 단어들을 후보에 놓고, '놓쳤다'라는 단어가 나올 확률이 가장 높다고 판단한 것이다.

2. 통계적 언어 모델(Statistical Language Model, SLM)

가. 확률 적용

① 조건부 확률
다음은 조건부 확률의 연쇄 법칙이다.

P(x1,x2,x3,,xn)=P(x1)P(x2x1)P(x3x1,x2)P(xnx1xn1)P(x_1, x_2, x_3, \dots, x_n)=P(x_1)P(x_2|x_1)P(x_3|x_1, x_2)\dots P(x_n|x_1\dots x_{n-1})

② 문장에 대한 확률
P(w1,w2,w3,w4,w5,,wn)=n=1nP(wnw1,,wn1)P(w_1,w_2,w_3,w_4,w_5,\dots,w_n)=\prod_{n=1}^n P(w_n|w_1,\dots,w_{n-1})

P(An adorable little boy is spreading smiles) =
P(An) X P(adorable | An) X P(little | An adorable) X P(boy | An adorable little) X P(is | An adorable little boy) X P(spreading | An adorable little boy is) X P(smiles | An adorable little boy is spreading)

나. 카운트 기반의 접근

① 'An adorable little boy'가 나왔을 때, 'is'가 나올 확률
P(is | An adorable little boy) = count(An adorable little boy is) / count(An adorable little boy)

예를 들어, 기계가 학습한 코퍼스 데이터에서 'An adorable little boy'가 100번 등장했는데, 그 다음에 'is'가 등장한 경우는 30번이라고 하겠다. 이 경우, 위의 확률은 30%이다.

② 카운트 기반 접근의 한계
카운트 기반으로 접근한다면 가지고 있는 코퍼스, 다시 말해 기계가 훈련해야 될 데이터가 많이 필요하다. 그런데 기계가 훈련한 코퍼스에 'An adorable little boy is' 또는 'An adorable little boy'라는 단어 시퀀스가 없을 수도 있는 문제가 생길 수 있다. 이렇게 충분한 데이터를 관측하지 못하여 언어를 정확히 모델링하지 못하는 문제를 희소 문제(Sparsity Problem) 이라고 한다. 이러한 문제를 해결하기 위해 n-gram 언어 모델이나 인공 신경망 언어 모델이 제안된다.

3. N-gram 언어 모델(N-gram Language Model)

가. Why N-gram Language Model?

앞서 SLM의 한계로 다음 사항을 언급한 바 있다.
- 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있다.
- 문장이 길어질수록 가지고 있는 코퍼스에서 그 문장이 존재하지 않을 가능성이 높다.

이러한 한계를 넘기 위해 N-gram 언어 모델이 제안되었다. N-gram 언어 모델은 카운트에 기반하여 통계적으로 접근한다. 그런데 모든 단어를 고려하는 것이 아니라 일부 단어만 고려하는 방식이다. 즉, 기준 단어의 앞 단어를 전부 카운트하는 것이 아니라, 앞 단어 중 임의의 개수(N-1)만 카운트하여 근사하는 것이다. 다만, 근사를 쓰기 때문에 정확도는 다소 떨어질 수도 있다.

예) 3-gram
P(is | An adorable little boy) ≒ P(is | little boy)

나. N-gram?

N-gram이란 N개의 단어를 연속적으로 나열한 것을 말한다. 예를 들어 다음 문장에 대해 살펴보겠다.

An adorable little boy is spreading smiles.

- unigrams: an, adorable, little, boy, is, spreading, smiles
- bigrams: an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
- trigrams: an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
- 4-grams: an adorable little boy, adorable little boy is, little boy is spreading, boy is spreading smiles

4-gram 방식을 적용하여 다음 문장의 빈칸을 예측한다고 해보겠다.

An adorable little boy is spreading __.

__ 을 제외하고 3개의 단어 'boy is spreading'만 고려한다.

P(w | boy is spreading) = count(boy is spreading w) / count(boy is spreading)

다. N-gram Language Model의 한계

n-gram 언어 모델을 사용해도 여전히 n-gram에 대한 희소 문제가 존재한다. 또한, n으로 무엇을 선택하느냐에 따라 trade-off가 존재한다. 예를 들어, n을 크게 선택하면 실제 훈련 코퍼스에서 해당 n-gram을 카운트할 수 있는 확률은 작아지므로 희소 문제는 더 심각해진다. 반대로, n을 작게 선택하면 훈련 코퍼스에서 카운트는 잘 되겠으나 근사의 정확도는 현실의 확률 분포와 멀어진다. n은 최대 5을 넘어서는 안 된다고 권장되고 있다. 이러한 한계에 대한 대안으로 인공 신경망을 이용한 언어 모델이 제안된다.

4. 펄플렉서티(Perplexity, PPL)

가. PPL?

PPL이란 어떤 언어 모델이 특정 시점에서 평균적으로 몇 개의 선택지를 가지고 고민하고 있는지를 의미한다. 예를 들어, 언어 모델에 어떤 테스트 데이터를 주고 측정했더니 PPL=10이었으면, 해당 언어 모델은 테스트 데이터에 대해 다음 단어를 예측하는 모든 시점(time step)마다 평균 10개의 단어를 가지고 어떤 것이 정답인지 고민하고 있는 것이다.

PPL은 문장의 길이로 정규화된 문장 확률의 역수로 표현되며, 식은 다음과 같다.

예) 문장 W의 길이가 N일 때
PPL(W)=P(w1,w2,w3,,wN)1N=1P(w1,w2,w3,,wN)NPPL(W)=P(w_1,w_2,w_3,\dots,w_N)^{-\frac{1}{N}}=\sqrt[N]{\frac{1}{P(w_1,w_2,w_3,\dots,w_N)}}

예) 문장의 확률에 연쇄 법칙 적용
PPL(W)=1P(w1,w2,w3,,wN)N=1i=1NP(wiw1,w2,,wi1)NPPL(W)=\sqrt[N]{\frac{1}{P(w_1,w_2,w_3,\dots,w_N)}}=\sqrt[N]{\frac{1}{\prod_{i=1}^NP(w_i|w_1,w_2,\dots,w_{i-1})}}

위 식에 n-gram을 적용할 수도 있다. 예를 들어, bigram 언어 모델의 경우, 다음과 같다.
PPL(W)=1i=1NP(wiwi1)NPPL(W)=\sqrt[N]{\frac{1}{\prod_{i=1}^NP(w_i|w_{i-1})}}

두 언어 모델을 비교한다고 했을 때, PPL이 낮을수록 그 성능이 좋은 것이다. 다만, 이는 테스트 데이터 상에서 높은 정확도를 보인다는 것이지, 실제 사람이 직접 느끼기에 좋은 모델인 것을 보장하지는 않는다.

<참고 문헌>
유원준/안상준, 딥러닝을 이용한 자연어 처리 입문
https://wikidocs.net/21694
박호현 교수님, 인공지능, 중앙대학교 전자전기공학부, 2024

profile
Chung-Ang Univ. EEE.

0개의 댓글