본문 바로가기

카테고리 없음

Perplexity 지표란?

퍼플렉시티(perplexity)

 

퍼플렉시티는 언어 모델의 성능을 평가하는 지표로 혼란, 혼동이라는 사전적 의미를 가지고 있는데, 모델이 테스트 데이터에 대해 얼마나 '혼란스러워하는지'를 수치로 나타낸다.

값이 낮을수록 모델이 실제 문장을 더 잘 예측한다는 의미이다.

 

계산 방법은 다음과 같다:

$$ Perplexity(W) = P(w_1, w_2, \cdots, w_N)^{-\frac{1}{N}} = exp(-\frac{1}{N}\sum_{t=1}^{N} logP(w_t|w_1^{t-1}))$$

 

여기서

$N$은 테스트 세트의 전체 단어 수이고,

$P(w_t|w_1^{t-1})$은 모델이 t번째 단어를 이전 단어들을 바탕으로 예측한 확률이다.

 

 

실제 계산은 각 단어의 조건부 확률의 로그값을 모두 더한 뒤에 전체 단어 수로 나누어 음수를 취한 값을 지수 함수로 변환하는 방식이다.

 

말이 어려운데, 한 부분씩 떼어 생각해보자.

 


 

1. $P(w_t|w_1^{t-1})$

위에서 $P(w_t|w_1^{t-1})$은 조건부 확률, 즉 모델이 이전 단어를 바탕으로 t번째 단어를 예측한 확률이다. 이전 단어에 따라 $w_t$가 어떤 식으로 바뀔지를 알려주는 확률이라고 볼 수 있다.

 

 

2. $logP(w_t|w_1^{t-1})$

여기다 log값을 씌운다. log를 씌우는 이유는, 곱셈 형태로 표현되는 여러 확률 값을 더하기로 변환해서 계산을 더 쉽고 안정적으로 하기 위해서이다.

(밑이 같다고 가정하고) log의 기본 성질에 따라 예를 들면, $log2 + log4 = log(2*4)$의 형태가 되므로, 이를 더하기 형식으로 사용하기 위해 log를 붙인다고 생각하면 되겠다.

그럼 $logP(w_t|w_1^{t-1})$까지는 됐다.

 

 

3. $\sum_{t=1}^N logP(w_t|w_1^{t-1})$

이걸 t = 1부터 N까지 더한다. 즉, 모든 단어에 대해 조건부 확률을 구해서 더한다.

이렇게 하면 문장 전체의 확률을 구할 수 있다.

앞의 $P(w_1, w_2, \cdots, w_N)$이 전체 문장이나 단어 시퀀스가 등장할 확률이므로, 이를 구하기 위해 Chain Rule을 적용한 거라고 생각해도 무방하겠다.

Chain Rule은 연쇄법칙으로, 전체 확률은 각각의 확률의 곱으로 나타낼 수 있다는 것이다.

그래서 이 곱을 쉽게 처리하기 위해, 즉 계산의 편의성을 위해 로그를 취한 것이라 보면 되겠다.

 

 

4. $ \frac{1}{N} \sum_{t=1}^N logP(w_t|w_1^{t-1})$

그 다음은 $-\frac{1}{N}$이다. 이건 문장 전체의 확률의 로그값을 단어 수로 나눈 평균을 구하기 위해서이다.

여기서 perplexity의 정확한 정의에 대해 다시 한 번 짚고 넘어가보자.

 

perplexity는 전체 문장(또는 단어 시퀀스)에 대한 혼란도를 구하는 지표다. 하지만 이 값을 계산할 때 문장 전체의 확률을 단어 수로 정규화(기하평균)한다.

따라서, 정확한 perplexity의 정의는, 문장 전체에 대해, 단어 하나당 평균적으로 모델이 얼마나 혼란스러운지를 나타내는 수치이다.

 

그렇기 때문에, 1/N을 취하는 과정이 들어가는 것이다.

 

 

5. $ -\frac{1}{N} \sum_{t=1}^N logP(w_t|w_1^{t-1}) $ 

다음은 1/N으로 나눈 값에 음수를 취한다.

음수를 취하는 이유는 간단한데, 확률값의 로그는 음수이기 때문에, -1을 곱해 양수로 만든다.

확률이 높을수록 perplexity 값이 작아진다.

 

 

6. $ exp(-\frac{1}{N} \sum_{t=1}^N logP(w_t|w_1^{t-1}))$ 

마지막으로 exp를 취한다.

이는 로그로 바꾼 덧셈을 다시 곱셈(원래의 확률 공간)으로 되돌리기 위함이다.

이 과정을 전부 거치면 perplexity를 구할 수 있게 된다.

 


 

 

Perplexity는 모델이 각 시점에서 평균적으로 몇 개의 선택지를 갖는지에 대한 지수적 평균값이다.

 

또한 Perplexity 값이 낮을수록 모델이 실제 데이터에 더 높은 확률을 부여하며, 예측력이 좋다.

 

 

A Neural Probabilistic Language Model 논문에서는 테스트 세트 전체에 대한 조건부 확률의 기하평균의 역수로 계산되며, 값이 낮을수록 모델의 예측력이 높음을 의미한다.