[자연어생성] 2-6강~2-8강
참고 강의 :https://bit.ly/3pFI7r5
5. Perplexity
1) NLG에서의 평가 방법
0> 평가 예시
이 중 1에 더 높은 평가를 줍니다.
1> Intrinsic evalution (정성 평가)
: 사람이 직접 맞고 틀리고를 평가합니다.
⇒ 정확하지만
⇒ 시간과 비용이 많이 들어간다.
2> Extrinsic evaluation (정량 평가)
: 컴퓨터가 평가합니다.
⇒ 시간과 비용을 절약할 수 있습니다.
(Intrinsic evaluation과 평가가 비슷할 수록 좋은 방법)
2) Perplexity
0> 좋은 LM이란?
[1] 실제 사용하는 ground truth 언어의 분포를 [2] 잘 근사해야 한다.
- 실제 사용하는 언어 ⇒ 잘 정의된 test data
- 분포를 잘 근사 ⇒ 문장의 likelihood가 높다.
⇒ 잘 정의된 test data(문장)에서 높은 확률 (likelihood)를 가져야한다.
1> Perplexity (PPL)
: 문장의 확률을 길이에 대해 기하평균으로 계산
$$\begin{matrix} PPL(x_{1},\cdot\cdot\cdot,x_{n};\theta) &=P(x_{1},\cdot\cdot\cdot,x_{n};\theta)^{-\tfrac{1}{n}}\&=\sqrt[n]{1 \over P(x_{1},\cdot\cdot\cdot,x_{n};\ \theta)}\&=\sqrt[n]{1 \over \prod_{i=1}^n P(x_{i}|x_{<i};\theta)}\end{matrix} $$
⇒ test 문장에 대해 높은 확률을 가질수록 좋은 모델이다.
⇒ PPL은 확률의 역수이니 PPL이 작을수록 좋은 모델이다.
2> Markov assumption을 적용한 Perplexity
3) Perplexity의 의미
1> 예제
2> 주사위에서 perplexity란?
: 매 timestep마다 가능한 경우 (1~6 중 하나가 나온다.)
3> PPL의 의미
[1] timestep별 평균 branch (branch : 뻗어나갈 수 있는 경우의 수)
⇒ 매 timestep 마다 헷갈리고(no clue) 있는 단어의 수
[2] 확률 분포가 평평한 정도
<= PPL이 높으면 가능한 경우가 많으니 확률 분포가 Flat
<= PPL이 낮으면 가능한 경우가 적으니 확률 분포가 Sharp
6. Neural Language Model
0) 기존 모델의 한계
1> word를 discrete symbol로 보기 때문에
⇒ sparsity가 생기고
⇒ unseen word sequence를 처리하기 어렵습니다.
2> 해결책
word를 discrete symbol로 보지 말아야 합니다.
1) Neural Language Model의 구조
1> embedding
⇒ By 1>, word를 continuous symbol로 간주합니다.
2> rnn cell : sequence를 연산할 수 있습니다.
3> softmax : 확률을 계산할 수 있습니다.
⇒ By 2>& 3>, $P(w_{t}|w_{<t})$ 을 구할 수 있습니다.
2) Objective
1> 실제 존재하는 문장들의 분포에서 N개의 문장을 sampling
$D = {x^{i}}^{N}_{i=1}, \ where \ x^{i} \sim P(x)$
- P(x) : 실제 존재하는 문장들의 분포
- $x^{i}$ : P(x)에서 sampling한 문장 (N개 sampling합니다.)
- D : N개 sampling한 문장들
2> log likelihood를 최대로 만드는 $\hat{\theta}$를 찾는 것이 objective입니다.
$$\begin{aligned}\hat{\theta} &= \argmax\limits_{\theta\in\Theta}\sum\limits_{i=1}^{N}logP(x^{i};\theta) \ &= \argmax\limits_{\theta\in\Theta}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{n}logP(x^{i}{j}|x^{i}{<j};\theta) \ & ,where \ x_{1:n} = {x_{1}, x_{2}, ..., x_{n}} \end{aligned}$$
3> gradient descent를 기반으로 NLL를 최소로 만드는 $\hat{\theta}$를 찾는 것이 objective입니다.
$$\mathcal{L}(\theta) = -\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{n}logP(x^{i}{j}|x^{i}{<j};\theta) \ \theta \gets \theta-\alpha\nabla_{\theta}\mathcal{L}(\theta) $$
NLL을 최소로 만드는 것은 Cross Entropy Loss를 최소로 만드는 것과 같다.
4> $logP(x^{i}_{j}|x^{i}_{<j};\theta)$의 의미
$$\begin{aligned}log\ P(x^{i}{j}|x^{i}{<j};\theta) &= x_{t}^{T}\cdot log \ \hat{x}^{T}{t} \&= x{t}^{T}\cdot log\ f_{\theta} (x_{t-1},h_{t-1}) \end{aligned}$$
- $x_{t}^{T}$ : timestep t에서의 groud truth 문장의 Transpose
- $h_{t-1}$ : 이전 timestep t-1에서 hidden state
- $f_{\theta}(x_{t-1},h_{t-1})$ : softmax layer를 거친 이후의 연산 값
⇒ 결국 softmax 이후 $x_{t}$가 될 확률에 log를 취한 것
3) Neural Network Language Model의 특징
1> word를 continuous symbol로 본다.
2> generation에서 과거에 비해 특히 강점을 보인다.
3> 연산량이 많다.
4> 해석(XAI) 난이도가 증가한다.
cf> 수강한 클립명
1> Ch 02. Lauguage Modeling - 06. Perplexity
2> Ch 02. Lauguage Modeling - 07. n-gram 정리
3> Ch 02. Lauguage Modeling - 08. RNN을 활용한 LM