언어모델
1. 개요
- 문장을 시작하는 단어 몇개가 주어질 때, 그 단어들로 시작하는 하나의 완성된 문장을 만들어낼 확률을 구하는 모델을 언어모델이라 한다.
- 언어모델을 이용하여 기계번역, 맞춤법 검사, 맥락에 의존하여 정확도가 높은 음성인식 등의 문제를 풀 수 있다.
2. 언어모델의 확률식
- 어떤 문장 \(W\)를 만들어낼 확률이 \(P(W)\)이며, \(W\)는 총 \(n\)개의 token으로 이루어져 있고 각 token은 \(w_i\) (\(i=1, \cdots, n\))이라 하자. 그러면 \(P(W) = P(w_1, \cdots, w_n)\)으로 쓸 수 있다.
- \(w_1, \cdots, w_{n-1}\)이 주어진 상황애서 그 다음에 \(w_n\)이 올 확률을 \(P(w_n | w_1 \cdots w_{n-1})\)이라 하면, \(P(W) = \prod_i P(w_i | w_1 \cdots w_i-1)\)이다.
3. Markov assumption과 언어모델 사례들
1) Markov assumption
- \(P(w_n | w_1 \cdots w_{n-1})\)의 값은 \(w_1, \cdots, w_n\)로 시작하는 모든 문장의 개수와 \(w_1, \cdots, w_{n-1}\)로 시작하는 모든 문장의 개수를 세서 계산할 수 있으나, 이는 불가능하다. 따라서 실제로 언어모델을 계산할 때에는 ‘완성되지 않은 문장의 어떤 단어 다음에 어떤 단어가 올 확률은 그 앞에 있는 단어 전체가 아니라 앞에 있는 단어 중 몇개에 의해서만 결정된다’(Markov assumption의 언어모델에의 적용)라고 가정하고 계산을 한다.
2) Unigram 모델
- Unigram 모델은 Markov assumption의 극단적 형태로, ‘어떤 문장이 만들어질 확률은 그 문장을 구성하는 단어들의 corpus 내 등장 빈도의 곱’이라는 모델이다. 이 모델에 기반하여 생성모델을 만들 경우 이 모델로 만들어지는 문장은 어법이 거의 맞지 않는 모습을 보인다.
3) Bigram 모델
- Bigram 모델은 ‘어떤 문장이 만들어질 확률은 바로 앞 단어 다음에 바로 다음 단어로 그 단어가 올 확률의 곱’이라는 모델이다. 이 모델에 기반한 생성모델로 문장을 만들 경우 Unigram 모델에 비하면 가끔씩 어법에 맞는 자연스러운 구문이 등장하기도 하나, 전체적으로 어법에 맞는 문장을 만들지는 못한다.
4) N-gram 모델
- N-gram 모델은 ‘어떤 문장이 만들어질 확률은 바로 앞 N개의 단어 다음에 바로 다음 단어로 그 단어가 올 확률의 곱’이라는 모델이다. 이러한 모델에 기반한 생성모델로 문장을 만들 경우 Bigram 모델에 비해 어법에 맞는 구문의 길이가 훨씬 길어지지만, 이 역시 문장 내 아주 멀리 떨어진 단어 사이 별 상관이 없는 단어가 등장할 확률이 여전히 높아 전체적으로 어법에 맞는 문장을 만들지는 못한다. (단, 짧은 길이의 문장은 완벽한 문장을 만들 수 있다.)
4. 언어모델 평가
1) extrinsic evaluation
- 언어모델을 이용하여 실제 해결하고자 하는 과제를 얼마나 잘 수행하는지를 기준으로 모델을 평가하는 것을 extrinsic evaluation이라 한다.
- 실제 해결하고자 하는 과제를 기준으로 성능평가를 하니 목적에 맞는 평가가 가능하지만, 시간이 많이 걸린다는 단점이 있다.
2) intrinsic evaluation
- 언어모델이 학습하는 확률 자체(perplexity)를 평가하는 것을 intrinsic evaluation이라 한다. 이 기준에 따를 때, 테스트 데이터와 유사한 예측 결과를 내놓을수록 좋은 모델이다.
- perplexity: 확률의 역수를 단어 개수로 정규화한 값. \(PP(W) = P(w_1, \cdots, w_n)^{- {1 \over n} }\)
- extrinsic evaluation에 비해 빠른 시간 내에 성능평가가 가능하고 학습 과정에서 어떤 문제가 있는지 빨리 파악할 수 있지만, 이 방식으로 좋은 평가 결과를 갖는 모델이 실제 해결하고자 하는 과제를 해결하는 데도 최적이라는 보장이 되지는 않는다.