NLP: 언어모델
언어모델의 필요성
언어모델은 언어들이 등장할 확률이나 카테고리의 속할 확률을 계산하는 모델을 의미합니다.
여러 문제을 확률로 계산한다면, 답을 대략적으로 추측할 수 있습니다.
추측의 정확도를 높인다면 정답을 구하는 것과 비슷한 효과를 낼 수 있습니다.
기계번역
예시로 중국어에서는 바람이 많이 분다는 것을 이야기할 때 크다는 표현을 사용합니다.
그러나 영어에서는 high라는 단어를 사용합니다.
문장 전체적으로 보았을 때 적절한 단어의 사용을 판별할 때 확률모델을 사용하게 됩니다.
적절하게 학습된 모델은 다음과 같은 결과를 도출할 것 입니다.
P(high winds tonight) > P(large winds tonight)
맞춤법 검사
P(about fifteen minutes from) > P(about fifteen mineets from)
음성 인식
P(I saw a van) » P(eyes awe of an)
언어모델
언어모델은 연속적인 단어들에 확률을 부여하는 모델입니다.
이와 관련된 일로 연속적인 단어들이 주어졌을 때 그 다음 단어의 확률을 구하는 것이 있습니다.
P(W) 구하기
결합확률을 구하는 문제를 생각해봅시다.
P(its, water, is, so, transparent, that)
확률을 구하기 위해서는 분모가 무엇이 될지도 생각을 해봐야하며, 이벤트가 정확하게 일어날 확률을 고려할 경우 확률이 너무 작아지지는 않는지에 대해 생각을 해봐야합니다.
이러한 확률을 어떻게 추론할지 고려해봅시다.
Chain Rule
두개 이상의 확률 변수들의 경우 다음과 같은 chain rule을 적용시킬 수 있습니다.
\[P(A, B, C, D) = P(A)P(B\mid A)P(C\mid A,B)P(D\mid A,B,C)\]언어모델에서 이러한 조건부 확률을 구하는 것을 주요 목표로 삼을 수 있습니다.
P(“its water is so transparent”) =
P(its) x P(water|its) x P(is|its water)
x P(so|its water is) x P(transparent|its water is so)
문제점
- 가능한 경우의 수가 너무 많습니다.
- 이것을 계산할 수 있는 양의 데이터를 수집하기 어렵습니다.
Markov Assumption
한 단어의 확률은 그 단어 앞에 나타나는 몇개의 단어들에만 의존한다는 가정을 해봅시다.
그렇다면 다음과 같이 확률을 근사시킬 수 있습니다.
\(P(transparent \mid its water is so) \approx P(transparent \mid so)\) \(P(transparent \mid its water is so) \approx P(transparent \mid is so)\)
이렇게 선행되는 k개의 단어에만 의존하는 조건부 확률을 만들면 훨씬 적은 데이터로 빈도수를 계산할 수 있습니다.
Unigram 모델
이를 이용하면 단어를 생성하는 모델을 만들어 볼 수 있습니다.
\[P(w_1,w_2, ... ,w_n) \approx \prod_{i} P(w_i)\]위와 같은 모델은 계산은 용이하지만 단어간의 연관성이 잘 고려되지 않습니다.
Bigram 모델
조건부 확률을 적용시켜서 연관성을 확보할 수 있습니다.
\(P(w_i \mid w_1,w_2, ... ,w_{i-1}) \approx P(w_i \mid w_{i-1})\)
N-gram
이것을 trigrams, 4-grams 등등으로 확장 시켜볼 수 있습니다.
멀리 떨어진 단어들간의 관계를 완벽하게 모델링하지는 못하지만 많은 경우 n-gram 만으로도 좋은 결과를 얻을 수 있습니다.
항상 간단한 모델로 해결되는 문제인지를 먼저 고려해보는 것이 필요합니다.
Bigram : Maximum Likelyhood Equation 유도
D는 문장들의 집합
$D = {W_1, … , W_N}$
표현하고자 하는 공식은
$P(D\mid\theta)$
입니다.
두개의 단어 a, b 가 있는 경우,
P(a \bar b) = \alpha_{ab}
단어가 하나만 있는 경우,
P(a)=\beta_a
세타는 알파와 베타로 나타낼 수 있습니다.
$P(D\mid\theta) = \prod_{i=1}^{N}P(W_i)$
예시를 들어보겠습니다.
$W_1$ = “b a b”
$W_2$ = “a b a c”
$P(D\mid\theta) = P(W_1)P(W_2)$
= P(“b a b”) P(“a b a c”)
$= \beta_b \alpha_{ab} \alpha_{ba} \beta_a \alpha_{ba} \alpha_{ab} \alpha_{ca}$
전체적인 로그 likelihood 공식은 다음과 같아집니다.
$ln P(D\mid\theta) = 2 ln \alpha_{ab} $
$ + 2 ln \alpha_{ba} $
$ + ln \alpha_{ca} $
$ + \beta_a $
$ + \beta_b $
특정 단어 b에대해 뒤에 어떤 단어가 오거나 문장이 끝날 확률은 1이 되어야합니다.
위와같은 제약조건을 만족시켜야 합니다.
식에서 $\alpha_{ab}$ 관련항만 뽑아 정리해보겠습니다.
C(b,a) 는 a 가 b 뒤에 존재할 빈도 수를 의미합니다. 예제에서는 2를 가집니다.
$like_ab = C(b,a) ln \alpha_{ab} + \lambda(\sum_{a’}(\alpha_{a’b} - 1)$
\alpha_{ab} 에 대해 미분을 진행하면, $\lambda \alpha_{ab} = - C(b,a)$ 가 됩니다. 이 공식을 가능한 모든 a에 대한 합을 구하는 식으로 바꿔준다면 식이 좀 더 간단하게 변합니다. 좌변은 람다만 남게 되고 우변은 모든 a에 대한 C(a,b)의 합이 남게 됩니다. 이 식을 람다에 대입하면,
$P(w_i\mid w_{i-1}) = \frac{C(w_{i-1}, w_i)}{C(w_{i-1})}$
와 동일해지는 것을 볼 수 있습니다.
어떤 파라미터가 있는지 생각하고, likelihood를 파라미터로 어떻게 만들지
어떻게 최적화를 시킬지 고민하는 것은 중요한 문제입니다.
언어 모델의 평가
-
외재적 평가 (extrinsic evaluation) 언어모델은 일반적으로 특정 과제를 위한 부분으로 쓰여지게 됩니다. 따라서 언어모델 자체로 평가하는 것이 아닌 과제의 평가지표로 모델을 평가하는 방식으로 외재적 평가방식이라 합니다.
-
내재적 평가 (intrinsic evaluation) 외재적 평가는 시간이 많이 걸리는 단점이 있습니다.
언어모델이 학습하는 확률자체를 평가할 수 있습니다: Perplexity
이 기준으로는 언어모델이 최종 과제의 최적 모델인지 아닌지 검증할 수 없습니다.
그러나 언어모델의 학습과정에 버그가 있었는지 빠르게 확인하는 용도로 사용할 수 있습니다.
좋은 언어모델이란?
- 테스트 데이터를 높은 확률로 예측할 수록 좋은 모델이라 할 수 있습니다.
- Perplexity: 확률의 역수를 단어의 개수로 정규화한 값입니다.
- Perplexity를 최소화하는 것이 확률을 최대화 하는 것 입니다.
댓글남기기