언어모델
- 다음 문장 다음에 이어질 단어는? 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)
- 기계번역 (machine translation)
- 언어모델: 연속적인 단어들에 확률을 부여하는 모델
- $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를 최소화하는 것이 확률을 최대화하는 것
'Deep Learning > Natural Language Processing' 카테고리의 다른 글
한국어 오픈소스 말뭉치 활용 라이브러리 코포라 Korpora (0) | 2022.03.14 |
---|---|
자연어 처리 왕초보 가이드 (3) | 2021.12.08 |
[W13D5] NLP : 단어 임베딩 (0) | 2021.08.02 |
[W13D4] NLP : 문서분류 (0) | 2021.07.30 |
[W13D2] NLP 텍스트 전처리 (0) | 2021.07.29 |