Perflexity는 언어 모델(Language Model)을 평가하는 지표 중 하나이다. Perflexity는 언어 모델이 다음 단어를 예측할 때 정답이 되는 단어에 대한 예측 확률의 역수이다.
예를 들어서 "you say hello to"라는 문장이 언어 모델의 입력으로 주어졌다고 생각해보자. 언어 모델은 주어진 문장을 바탕으로 다음에 올 단어를 예측하는 작업을 수행한다. 이때 다음에 올 올바른 단어는 "me"라고 하자.
언어 모델이 다음에 올 단어로 "me"를 비교적 높은 확률인 0.8로 예측했을 때 perflexity는 확률의 역수인 1.25로 계산된다. 하지만 0.2라는 낮은 확률로 예측했을 때 perflexity는 5가 된다. 언어 모델이 다음 단어에 대해 보다 정확한 예측을 수행할 수록 perflexity가 낮다는 것을 알 수 있다. 따라서 perflexity는 작을 수록 좋다.
그렇다면 앞서 계산한 1.25나 5.0이라는 perflexity 값은 직관적으로 어떻게 해석할 수 있을까? 해당 값을 분기 계수(number of branches)로 해석할 수 있다. 분기 계수는 다음에 취할 수 있는 옵션의 수를 의미한다. 언어 모델의 관점에서는 다음에 출현할 수 있는 단어의 후보 수를 나타낼 것이다.
따라서 언어 모델의 perflexity가 1.25라는 의미는 언어 모델이 다음에 출현할 수 있는 단어의 후보를 1개 가량으로 좁혔다고 해석할 수 있다. 반면 perflexity가 5라는 의미는 다음에 출현할 수 있는 단어의 후보가 5개나 된다는 의미이다.
단어의 개수가 개인 문장 의 perflexity는 다음 공식에 의해 계산이 된다.
이전 포스트를 참고한다면 를 로 표현할 수 있다는 것을 알 수 있다. 따라서 perflexity의 계산식은 다음과 같이 표현할 수 있다.