언어모델
- 목표 : 문장이 일어날 확률을 구하는 것
- 왜 필요한가?
- 기계번역 (machine translation)
- 맞춤법 검사 (spell correction)
- 음성인식 (speech recognition)
- 언어모델(Language Model) : 연속적 단어들(sequence of words)에 확률을 부여하는 모델
- P(W) = P(w_1, w_2, w_3 ..., w_n)
- 관련된 일 : 연속적 단어들이 주어졌을 때 그 다음 단어의 확률을 구하는 것
- P(w_n | w_1, w_2, ..., w_(n-1))
P(W) 구하기
- 결합확률(joint probability) 구하기
- P(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(A, B, C)P(D | A, B, C) = P(A, B)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("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(history))
P(the | its water is so transparent that) =
Count(its water is so transparent that the) / Count(its water is so transparent that)- 가능한 문장의 개수가 너무 많고, 이를 계산할 수 있는 충분한 양의 데이터를 가지지 못할 것이란 문제가 있음.
- 조건부 확률
- Markov Assumption
- 한 단어의 확률은 그 단어 앞에 나타나는 몇 개 단어들에만 의존한다는 가정
- P(the | its water is so transparent that) ≈ P(the | that)
p(the | its water is so transparent that ≈ P(the | transparent that)
- Unigram 모델 : 단어가 나타날 확률은 이전의 단어에 의존하지 않는다는 극단적 모델
- Bigram 모델 : 단어가 나타날 확률은 바로 이전의 단어에만 의존한다.
- 확률 계산
- Maximum likelihood estimation
- Maximum likelihood estimation
- 확률 계산
- N-gram 모델
- trigrams, 4-grams, 5-grams로 확장가능
- 멀리 떨어진 단어들간의 관계(long-distance dependencies)를 완벽히 모델링하진 못함
- 하지만 많은 경우 n-gram만으로도 좋은 결과를 얻을 수 있음
모델 평가
- 외재적 평가(exctrinsic evaluation)
- 언어모델은 일반적으로 그 자체가 목표이기보단 특정 과제(맞춤법 검사 등)를 위한 부분으로서 쓰여지게 된다.
- 따라서 언어모델이 좋은지 판단하기 위해선 그 과제의 평가지표를 사용하는 경우가 많다.
- ex) 맞춤법 검사를 위해 두 개의 언어모델 A, B를 사요할 때
- 각 모델을 사용해 얼마나 정확히 맞춤법 오류를 수정할 수 있는지 계산한다.
- 정확도가 높은 언어모델을 최종적으로 사용한다.
- 내재적 평가(intrinsic evaluation)
- 외재적 평가는 시간이 많이 걸리는 단점이 있다.
- 언어모델이 학습하는 확률자체를 평가할 수 있다. : Perplexity
- 이 기준에서의 최적의 언어모델이 최종 과제에서 최적은 아닐 수도 있다.
- 하지만 언어모델 학습과정에 버그가 있었는지 빨리 확인하는 용도로 사용할 수 있다.
- 좋은 언어모델이란?
- 테스트 데이터를 높은 확률로 예측하는 모델
- Perplexity(PP) : 확률 역수를 단어 개수로 정규화한 값
- Perplexity를 최소화하는 것이 확률을 최대화하는 것.
- Perplexity(PP) : 확률 역수를 단어 개수로 정규화한 값
- 테스트 데이터를 높은 확률로 예측하는 모델
'AI > KDT 인공지능' 카테고리의 다른 글
[07/30] NLP : 단어 임베딩 (0) | 2021.07.30 |
---|---|
[07/29] NLP : 문서분류 (0) | 2021.07.29 |
[07/27] NLP : 텍스트 전처리 (0) | 2021.07.28 |
[07/22] Spark 3 (0) | 2021.07.22 |
[07/21] Spark 2 (0) | 2021.07.21 |