Deep Learning/Natural Language Processing

[W13D3] NLP : 단어 모델

makeitworth 2021. 7. 29. 00:07

언어모델

  • 다음 문장 다음에 이어질 단어는? Please turn your homework -> "in" or "out"?
  • 다음 두 문장 중에 나타날 확률이 더 높은 것은?
    • all of a sudden I notice three guys standing on the sidewalk 
    • on guys all I of notice sidewalk three a sudden standing the
  • 목표: 문장이 일어날 확률을 구하는 것
    • 다음 문장 다음에 이어질 단어는?
    • 다음 두 문장 중 나타날 확률이 더 높은 것은?
  • 왜 필요한가?
    • 기계번역 (machine translation)
      • 중국어 大风을 영어로 번역한다면? 
      • P(high winds tonight) > P(large winds tonight)
    • 맞춤법검사 (spell correction)
      • The office is about fifteen minuets from my house
      • P(about fifteen minutes from) > P(about fifteen minuets from)
    • 음성인식 (speech recognition)
      • P(I saw a van) > P(eyes awe of an)
  • 언어모델: 연속적인 단어들에 확률을 부여하는 모델
    • $P(W) = P(w_1, w_2, …, w_n)$
  • 관련된 일: 연속적인 단어들이 주어졌을 때 그 다음 단어의 확률을 구하는 것
    • $P(w_n|w_1, w_2, …, w_{n-1})$

P(W) 구하기

  • 결합확률(joint probability) 구하기
    • $P(its, water, is, so, transparent, that)$
    • its, water, is, so, transparent, that의 단어 시퀀스가 나타날 확률  (빈도수로 구하기 힘들다 정확히 똑같은 sequence가 나오는 빈도가 높진 않을 것이므로
  • 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_3|x_1,x_2)...P(x_n|x_1,x_2,...,x_{n-1})$
    • $P(w_1, w_2,...,w_n)= \Pi_{i}P(w_i|w_1,w_2,...,w_{i-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) (h: history)

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)  
    • 위와 같이 근사화할 수 있다. (직전 k개의 단어)
    • $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)$
  • 이 모델로 문장을 생성해보면, 가장 빈도가 많은 단어들 (the, and, a...)이 나타나고, 단어들의 문맥이 매끄럽지 않다
  • 계산하기 편하다

Bigram 모델 

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

N-gram 모델

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

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})}$
    • 두 단어가 연속적으로 나타나는 빈도수/한 단어가 나타나는 빈도수
    • 왜 이것이 MLE인가?

Bigram 확률 계산 - MLE 유도



Bigram 확률 계산 - 예제

  • $P(w_i | w_{i-1}) = {c(w_{i-1}, w_i) \above 1pt c(w_{i-1})}$
  • </s>는 문장이 끝나는 부호. 안 붙여주면 같은 길이를 가진 문장들끼리만 확률이 제대로 정의된다. vocabulary에 나타나지 않는 특수 기호로 지정한다. 
<s> I am Sam </s>
<s> Sam I am </s>
<s> I do not like green eggs and ham </s>
  • <s>이 있는 문장 중에서 <s> 다음에 I가 오는 경우 (문장 제일 처음에 온 경우)
    • $P(I | <sam>) = \frac{2}{3} = .67$
  • $P(Sam | <sam>) = \frac{1}{3} = .33$
  • $P(am | I) = \frac{2}{3} = .67$ 
  •  Sam이 있는 문장 중에서 Sam 다음에 </s>가 오는 경우 (문장의 마지막에 온 경우)
    • $P(</s> | Sam) = \frac{1}{2} = .5$

버클리 지역 식당 관련된 문서 dataset

C(i,want) = 827 

C(want, to) = 608

P(<s> | I want english food </s> = 

P(I | <s>) x P(want | I)  x P(english | want) x P(food | english) x P( </s> | food)

= .25 x .33 x .0011 x .5 x .68

= .000031   

모델평가

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

Perplexity

  • 언어모델이 얼마나 테스트 데이터를 높은 확률로 예측하는지를 평가하기 위한 지표
  • 좋은 언어모델이란?
    • 테스트 데이터를 높은 확률로 예측하는 모델
    • Perplexity: 확률의 역수를 단어의 개수로 정규화한 값
    • $PP(W) = P(w_1w_2...w_n)^{-\frac{1}{N}}$
    • Perplexity를 최소화하는 것이 확률을 최대화하는 것