Perplexity of Language Models
1 minute read

Background

Language model 을 평가하는 방법은 크게 두가지로 나눌 수 있다.

  1. Extrinsic evaluation
    학습시킨 language model 을 machine translation 같은 다른 task 에 적용해 그 task 에서의 성능을 평가하는 것이다. Downstream evaluation 이라고도 한다. 실용성 측면에서 유용하지만, downstream task 를 수행하는 모델도 훈련을 시켜야한다는 점에서 비용이 크다.
  2. Intrinsic evaluation
    Language model 자체의 성능을 측정하는 지표들이 이에 속한다. Extrinsic evaluation 에 비해 빠른 평가가 가능하지만 extrinsic evaluation 과의 correlation 이 높아야 좋은 proxy 가 될 수 있다.

Evaluation of Language Models

Test data $E = {e_1, e_2, \cdots e_{sent}}$ 에 대해 언어 모델을 평가한다고 하자. 좋은 언어 모델은 test data 의 sequence 에 높은 확률값을 부여해야하고, 따라서 높은 likelihood, 또는 log-likelihood 값을 가져야한다.

Log-likelihood 을 사용하는 이유는 다음과 같다.

그리고 서로 다른 corpus 간의 비교가 가능하도록 Log-likelihood 값을 corpus 의 크기로 나눠주는데, 이를 통해 per-word log-likelihood 를 구할 수 있다.

이 값을 이용하면 perplexity 를 쉽게 구할 수 있다.

Perplexity 는 풀어서 설명하면, ‘언어 모델이 하나의 단어를 예측하는데에 얼마나 헷갈려하는가’ 로 볼 수 있다. 매 step 마다 언어 모델이 예측한 단어의 분포로부터 단어를 샘플링한다고 가정할때 평균적으로 몇개의 단어를 뽑아야 맞출수 있는지라고도 볼 수 있다. 영어의 경우, per word perplexity 가 보통은 좋은 language model 의 경우 20 정도이고, 성능이 나쁜 language model 의 경우 150 정도라고 한다.

Comparing Perplexity between Language models

References

Recent Posts

Lazy learning vs Eager learning
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
Matrix Calculus
Inverted Indexing
Deep Contextualized Word Representations