Perplexity in NLP

김회정·2023년 7월 15일
1

머신러닝

목록 보기
6/7

1. 개념

Perflexity는 언어 모델(Language Model)을 평가하는 지표 중 하나이다. Perflexity는 언어 모델이 다음 단어를 예측할 때 정답이 되는 단어에 대한 예측 확률의 역수이다.

예를 들어서 "you say hello to"라는 문장이 언어 모델의 입력으로 주어졌다고 생각해보자. 언어 모델은 주어진 문장을 바탕으로 다음에 올 단어를 예측하는 작업을 수행한다. 이때 다음에 올 올바른 단어는 "me"라고 하자.

언어 모델이 다음에 올 단어로 "me"를 비교적 높은 확률인 0.8로 예측했을 때 perflexity는 확률의 역수인 1.25로 계산된다. 하지만 0.2라는 낮은 확률로 예측했을 때 perflexity는 5가 된다. 언어 모델이 다음 단어에 대해 보다 정확한 예측을 수행할 수록 perflexity가 낮다는 것을 알 수 있다. 따라서 perflexity는 작을 수록 좋다.

2. perflexity의 해석

그렇다면 앞서 계산한 1.25나 5.0이라는 perflexity 값은 직관적으로 어떻게 해석할 수 있을까? 해당 값을 분기 계수(number of branches)로 해석할 수 있다. 분기 계수는 다음에 취할 수 있는 옵션의 수를 의미한다. 언어 모델의 관점에서는 다음에 출현할 수 있는 단어의 후보 수를 나타낼 것이다.

따라서 언어 모델의 perflexity가 1.25라는 의미는 언어 모델이 다음에 출현할 수 있는 단어의 후보를 1개 가량으로 좁혔다고 해석할 수 있다. 반면 perflexity가 5라는 의미는 다음에 출현할 수 있는 단어의 후보가 5개나 된다는 의미이다.

3. perflexity의 계산

단어의 개수가 NN개인 문장 WW의 perflexity는 다음 공식에 의해 계산이 된다.

PPL(W)=1P(w1,w2,...,wn)NPPL(W)=\sqrt[N]{1 \over P(w_{1}, w_{2}, ..., w_{n})}

이전 포스트를 참고한다면 P(w1,w2,...,wn)P(w_{1}, w_{2}, ..., w_{n})Πt=1nP(wtw1,...,wt1)\Pi_{t=1}^{n}P(w_{t}|w_{1},...,w_{t-1})로 표현할 수 있다는 것을 알 수 있다. 따라서 perflexity의 계산식은 다음과 같이 표현할 수 있다.

PPL(W)=1Πt=1nP(wtw1,...,wt1)NPPL(W)=\sqrt[N]{1 \over \Pi_{t=1}^{n}P(w_{t}|w_{1},...,w_{t-1})}
profile
안녕하세요

0개의 댓글