[NLP]언어모델

2 minute read

자연어 처리: 언어모델

언어모델

  • 목표: 문장이 일어날 확률을 구하는 것
    • 다음 문장 다음에 이어질 단어는?
    • 다음 두 문장 중 나타날 확률이 더 높은 것은?
  • 왜 필요한가?
    • 기계번역
    • 맞춤법검사
    • 음성인식
  • 언어모델: 연속적인 단어들에 확률을 부여하는 모델
    • $P(W) = P(w_1, w_1, …, w_n)$
  • 관련된 일: 연속적인 단어들이 주어졌을 때 그 다음 단어의 확률을 구하는 것
    • $P(w_n|w_1, w_1, …, w_n)$

P(W) 구하기

  • 결합확률(joint probability) 구하기
    • $P(its, water, is, so, transparent, that)$
    • its, water, is, so, transparent, that의 단어 시퀀스가 나타날 확률
  • Chain rule을 사용해보자

Chain Rule

  • 조건부확률
    • $P(B A) = P(A, B)/P(A)$
    • $P(A, B) = P(A)P(B A)
  • 두 개 이상의 확률변수들의 경우
    • $P(A, B, C, D) = P(A)P(B A)P(C A, B)P(D A, B, C)$
  • 일반적인 경우
    • $P(x_1, x_2, …, x_n) = P(x_1)P(x_2 x_1)…P(x_n x_1, …, x_{n-1})$
  • P(“its water is so transparent”) = P(its) * P(water|its) * P(is | its water) * P(so | its water is) * P(transparent | its water is so)

조건부 확률 P(w|h)

P(the | its water is so transparent that) = Count(its water is so transparent that the) / Count(its water is so transpatent that)

  • 문제
    • 가능한 문장의 개수가 너무 많음
    • 이것을 계산할 수 있는 충분한 양의 데이터를 가지지 못할 것임
      • 보유한 말뭉치 중에서 its water is so transparent that 혹은 its water is so transparent that the를 정확하게 갖고 있는 문장이 거의 없을 수 있다.

Markov Assumption

  • 한 단어의 확률은 그 단어 앞에 나타나는 몇 개의 단어들에만 의존한다 라는 가정
    • P(the its water is so transparent that) $\approx$ P(the that)
    • P(the its water is so transparent that) $\approx$ P(the transparent that)
    • 위와 같이 근사화할 수 있다.
    • $P(w_1, w_2, …, w_n) \approx \prod_i P(w_i | w_{i-k} … w_{i-1})$

Unigram 모델

  • Markov Assumption을 극단적으로 사용
  • 어떤 단어가 나타날 확률은 이전의 단어에 의존하지 않는다
  • $P(w_1 w_2 … w_n) \approx \prod_i P(w_i)$

Bigram 모델

  • $P(w_i w_1 w_2 … w_{i-1}) \approx P(w_i w_{i-1})$
  • 한 단어가 주어졌을 때 바로 직전의 단어에만 의존하는 조건부 확률을 다 곱하는 것.
  • Unigram에 비해 자연스럽다.

N-gram 모델

  • 이것을 trigrams, 4-grams, 5-grams로 확장할 수 있다.
  • 멀리 떨어진 단어들간의 관계를 완벽하게 모델링하진 못한다.
  • 하지만 많은 경우 n-gram만으로도 좋은 결과를 얻을 수 있다.

Bigram 확률 계산

  • Maximum likelihood estimation
    • $P(w_i w_{i-1}) = {count(w_{i-1}, w_i) \above 1pt count(w_{i-1})}$
    • $P(w_i w_{i-1}) = {c(w_{i-1}, w_i) \above 1pt c(w_{i-1})}$
    • 두 단어가 연속적으로 나타나는 빈도수/한 단어가 나타나는 빈도수

Bigram 확률 계산 - MLE 유도

png

Bigram 확률 계산 - 예제

  • </s>는 문장이 끝나는 부호. vocabulary에 나타나지 않는 특수 기호로 지정한다.
<s> I am Sam </s>
<s> Sam I am </s>
<s> I do not like green eggs and ham </s>
  • $P(I ) = {2 \above 1pt 3} = .67$
    • <s>이 있는 문장 중에서 <s> 다음에 I가 오는 경우
  • $P(Sam ) = {1 \above 1pt 3} = .33$
  • $P(am I) = {2 \above 1pt 3} = .67$
  • $P(</s> Sam) = {1 \above 1pt 2} = .5$
    • Sam이 있는 문장 중에서 Sam 다음에 </s>가 오는 경우
  • $P(Sam am) = {1 \above 1pt 2} = .5$
  • $P(do | I) = {1 \above 1pt 3} = .33$

모델평가

  • 외재적 평가
    • 언어모델은 일반적으로 그 자체가 목표이기보다 특정 과제(맞춤법 검사 등)를 위한 부분으로서 쓰여진다
    • 따라서 언어모델이 좋은지 판단하기 위해선 그 과제의 평가지표를 사용하는 경우가 많다.
  • 내재적 평가
    • 외재적 평가는 시간이 많이 걸리는 단점
    • 언어모델이 학습하는 확률자체를 평가할 수 있다: Perplexity(언어모델이 얼마나 학습을 잘 하고 있는지 그 자체를 평가)
    • 이 기준으로 최적의 언어모델이 최종 과제를 위해서는 최적이 아닐 수도 있다.
    • 하지만 언어모델의 학습과정에 버그가 있었는지 빨리 확인하는 용도로 사용할 수 있다.

Perplexity

  • 언어모델이 얼마나 테스트 데이터를 높은 확률로 예측하는지를 평가하기 위한 지표
  • 좋은 언어모델이란?
    • 테스트 데이터를 높은 확률로 예측하는 모델
    • Perplexity: 확률의 역수를 단어의 개수로 정규화한 값
    • Perplexity를 최소화하는 것이 확률을 최대화하는 것