NLG

[자연어생성] 2-3강~2-5강

intelligentcm 2021. 2. 26. 23:46

참고 강의 :https://bit.ly/3pFI7r5

3. n-gram Language Modeling (Markov Assumption)

0) 좋은 모델이란?

generalization이 잘 되어 있는 model

⇒ 최대한 Ground Truth Language Model을 approximate해야 한다.

1) Count based Approximation

  • 0> 예시

1> sequence 다음에 단어가 올 확률 (generalized equation)

$$⁍$$

⇒ $seq_{n-1}$ 다음에 $x_{n}$이 올 확률

2> 문제점

이와 같은 word sequence($seq_{n-1}$)가 없으면

⇒ 위의 approx 분수식은 분모가 0이 됩니다.

2) Markov Assumption

word sequence($seq_{n-1}$)가 없으면

word sequnce 내부의 가장 최근의 k개의 token을 기반으로 예측한다.

$$P(x_{n}|x_{<n}) \approx \cfrac{COUNT(x_{n-k}, \cdot\cdot\cdot, x_{n-1}, x_{n})}{COUNT(x_{n-k}, \cdot\cdot\cdot, x_{n-1})}$$

3) Markov Assumption - sentence level

0> 기존에 그럴 듯한 문장의 확률

$P(x_{1:n})$

⇒ $logP(x_{1:n}) = \sum\limits_{i=1}^{n}logP(x_{i}|x_{<i})$

⇒ $logP(x_{1:n}) \approx \sum\limits_{i=1}^{n}logP(x_{i}|x_{i-1}, \cdot\cdot\cdot, x_{i-k})$

4) n-gram

1> 명명

n = k + 1

2> n 🠕 ⇒ corpus에서 sequence 발견이 어렵다 ⇒ 확률의 정확성 🠗

n(k+1)이 크면
⇒ k개의 sequence이 잘 등장하지 않아서 (corpus들에서 seq 발견 어렵)
⇒ 모든 확률이 정확하지 않을 수 있다.

3> n 🠗 ⇒ 너무 적은 맥락을 고려한다. ⇒ 확률의 정확성 🠗

4> n-gram 사용 Tip (적절한 n을 구해야 한다.)

[1] 3-gram을 주로 사용

[2] corpus가 많다면 4-gram을 사용하기도 한다.

(n을 증가시키면 sequence의 종류는 exponential하게 증가해서 효율성이 떨어진다.)

4. Markov Assumption의 문제점과 해결책

0) Markov Assumption의 문제점

긴 word sequence가 존재하지 않는 문제를 피할 수 있지만

그래도 test 과정에서 학습하지 않은 sequence를 만날 수 있다.

1) Add One Smoothing

1> 분자에 1을 더하고, 분모에 |V|를 더한다.

(|V| : size of vocabulary)

$$\begin{matrix} P(w_{t}|w_{<t}) &\approx& \cfrac{COUNT(w_{1:t})}{COUNT(w_{1:t-1})} \ &\approx& \cfrac{C(w_{1:t})+1}{C(w_{1:t-1})+|V|} \ &\approx& \cfrac{C(w_{1:t})+k}{C(w_{1:t-1})+k\times|V|} \ &\approx& \cfrac{C(w_{1:t})+\cfrac{m}{|V|}}{C(w_{1:t-1})+m} \end{matrix}$$

2> generalization

$\cfrac{1}{|V|}$ : 단어가 나타날 확률이 uniform인 경우, 각 단어가 나타날 확률

⇒ 이를 실제 단어 분포에서 각 단어가 나타날 확률($P(w_{t}))$로 대체한다.

$$\begin{matrix} P(w_{t}|w_{<t}) &\approx& \cfrac{C(w_{1:t})+m\times{P(w_{t})}}{C(w_{1:t-1})+m} \end{matrix} \ , \ where \ P(w_{t}) \ is \ unigram\ probablitiy$$

cf> 만약 $w_{t}$이 OOV이거나 UNK라면 문제가 있을 수 있다.

2) Kneser-Ney Discounting

0> 예시

'learning'은 특정 단어 뒤에 따라나오다 보니 COUNT가 높습니다.

1> 다양한 단어 뒤에서 나타나는 단어일수록

⇒ unseen word sequence에 등장할 확률이 높다.

3) Interpolation

1> 다른 LM을 linear하게 일정 비율(λ)로 섞는 것

general domain LM + domain specific LM

$$\begin{aligned}\tilde{P}(w_{n}|w_{n-k}, \cdot\cdot\cdot, w_{n-1}) &= \lambda P_{1}(w_{n}|w_{n-k}, \cdot\cdot\cdot, w_{n-1} \ &+ (1 -\lambda) P_{2}(w_{n}|w_{n-k}, \cdot\cdot\cdot, w_{n-1})\end{aligned}$$

2> 적절한 λ를 찾아야 합니다.

3> Interpolation의 효과 예시

4) Back-off

1> 여러 n-gram LM들을 interpolation한다

$$\begin{aligned} \tilde{P}(w_{n}|w_{n-k}, \cdot\cdot\cdot, w_{n-1}) &= \lambda_{1} P_(w_{n}|w_{n-k}, \cdot\cdot\cdot, w_{n-1}) \ &+ \lambda_{2} P(w_{n}|w_{n-k+1}, \cdot\cdot\cdot, w_{n-1}) \ &+ \cdot\cdot\cdot \ &+ \lambda_{k} P(w_{n})\end{aligned}$$

2> Back-off의 장점

⇒ 이를 통해 확률값이 0이 되는 문제를 최소화할 수 있습니다.

(물론 OOV에서는 확률값이 0이 될 수 있습니다.)

3> 단점

각 sequnce가 존재하지 않으면
⇒ 사용하는 λ의 개수가 줄어들고 ⇒ 확률 값이 매우 작아진다.

cf> Summary

전통적인 방식의 NLP에서는 단어를 discrete symbol로 보려고 함
그에 따라 제시된 것이 n-gram, Markov, Smoothing, Discounting, Interpolation, Back-off이다.

하지만 단어들이 discrete하지 않는 경우도 많기 때문에 위의 방식들이 근본적인 해결책이 아니다.

 

cf> 수강한 클립명

1> Ch 02. Lauguage Modeling - 03.n-gram

2> Ch 02. Lauguage Modeling - 04. Smoothing and Discounting

3> Ch 02. Lauguage Modeling - 05. Interpolation

 

cf> 수강 인증샷