[TIL Day56] Natural Language Processing: 언어모델

이다혜·2021년 7월 28일
0

TIL

목록 보기
58/60

언어모델

언어모델의 목표는 주어진 문장이 나타날 확률을 구하는 것이다.

언어모델이 왜 필요한가?

  • 기계번역(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)

즉, 언어모델이란 연속적인 단어들(sequence of words)에 확률을 부여하는 모델로, P(W)=P(W1,W2,W3,W4,...,Wn)P(W) = P(W_1, W_2, W_3, W_4, ..., W_n)을 산출하는 모델이라고 할 수 있다. 이와 관련된 일은 연속된 단어들이 주어졌을 때 그 다음 단어의 확률P(WnW1,W2,...,Wn1)P(W_n|W_1, W_2, ..., W_{n-1})을 구하는 것이다.


결합확률 구하기

결합확률(joint probability) P(W)=P(its,water,is,so,transparent)P(W)=P(its, water, is, so, transparent)를 구해보자.

Chain Rule

  • 조건부 확률
    P(BA)=P(A,B)/P(A)P(B|A) = P(A, B)/P(A)
    P(A,B)=P(A)P(BA)P(A,B) = P(A)P(B|A)

  • 일반적인 경우
    P(x1,x2,x3,...,xn)=P(x1)P(x2x1)P(x3x1,x2)...P(xnx1,...,xn1)P(x_1, x_2, x_3, ..., x_n) = P(x_1)P(x_2|x_1)P(x_3|x_1,x_2)...P(x_n|x1, ..., x_{n-1})

  • Chain Rule

예문에 chain rule을 적용하면, P(its,water,is,so,transparent)=P(its)P(waterits)P(isits,water)P(soits,water,is)P(transparentits,water,is,so)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)

예측하고자 하는 다음 단어를 ww라고 하면, 그 앞에 나타나는 모든 단어를 hh(history)로 간주하고 조건부확률 P(wh)P(w|h)를 다음과 같이 계산할 수 있다.

하지만 문제는, 가능한 문장의 개수가 너무 많고, 이것을 계산할 수 있는 충분한 양의 데이터를 갖기가 어렵다.

Markov Assumption

문제를 조금 더 단순화해보자. "한 단어의 확률은 그 단어 앞에 나타나는 몇 개의 단어들에만 의존한다"고 가정(Markov assumption)하자.

즉, 한 단어의 확률을 그 앞의 k개 단어가 주어졌을 때 조건부확률로 구할 수 있다.

이러한 방법을 적용하여 Unigram, Bigram, Trigram 등의 모델을 만들 수 있다. N-gram 모델들은 멀리 떨어진 단어들간의 관계(long-distance dependencies)를 완벽하게 모델링하진 못하지만, 많은 경우 n-gram만으로도 좋은 결과를 얻을 수 있다.


Bigram 확률 계산

Bigram의 조건부확률 P(wi,wi1)P(w_i, w_{i-1})count(wi1,wi)/count(wi1)count(w_{i-1}, w_i)/count(w_{i-1})로 구할 수 있다.

이것은 Maximum likelihood solution이다. 왜일까?

  • 예제
    문장의 시작 기호와 문장의 끝 기호를 붙인 후, 다음과 같은 bigram 확률을 계산할 수 있다.

모델 평가

  • 외재적 평가(extrinisic evalutation)
    - 언어모델은 일반적으로 그 자체가 목표이기보다 특정 과제(맞춤법 검사 등)를 위한 부분으로서 쓰임
    - 따라서 언어모델이 좋은지 판단하기 위해선 그 과제의 평가지표를 사용하는 경우가 많음
    - 예를 들어, 맞춤법 검사를 위해서 두 개의 언어모델 A, B를 사용한다고 할 때 각 모델을 사용해서 얼마나 정확하게 맞춤법 오류를 수정할 수 있는지 계산하고 정확도가 높은 언어모델을 최종적으로 사용

  • 내재적 평가(intrinsic evaluation)
    - 외재적 평가는 시간이 많이 걸리는 단점
    - 언어모델이 학습하는 확률 자체를 평가: Perplexity
    - 이 기준으로 최적의 언어모델이 최종 과제를 위해서는 최적이 아닐 수 있음
    - 언어모델의 학습과정에 버그가 있었는지 빠르게 확인하는 용도로 사용할 수 있음

  • 좋은 언어모델이란?
    - 테스트 데이터를 높은 확률로 예측하는 모델
    - Perplexity: 확률의 역수를 단어의 개수로 정규화한 값

    - Perplexity를 최소화하는 것이 확률을 최대화하는 것

profile
하루하루 성장중

0개의 댓글