[NLP] Evaluation Metric for Language Model(PPL, BLEU, ROUGE)
-
일반적으로 언어모델의 성능은 Perplexity, Cross Entropy, bit-per-character(BPC)로 측정하거나 GLUE benchmark의 Downstream task의 성능으로 측정된다. 그러나 Downstream task에 대해서는 task마다 지표가 상이할 수 있고 언어 모델 훈련시 모든 여러가지의 downstream task를 해보면서 측정하는 것은 reasonable하지 않을 수 있다. 언어모델은 일반적으로 perplexity를 minimize하는 것인데 perplexity가 0을 얻을 수 없기 때문에 perplexity의 lower bound가 무엇인가에 대해 생각해보아야 한다. 즉, optimal value 를 알 수 없다면, train한 언어모델이 얼마나 좋은지 어떻게 아냐는 것이다. 그리고, character-level의 언어모델의 perplexity가 word-level 언어모델의 perplexity보다 훨씬 작아도 character-level 언어모델이 더 좋다는 것을 의미하지는 않는다.
Language Model
언어모델은 임의의 token들의 Sequence에 확률을 assign하여 token들의 sequence가 존재할 가능성이 높을 수록 확률이 높아진다. 그리고 대부분의 언어 모델은 이전 토큰들(Context)가 주어졌을 때 각 토큰들의 확률의 곱으로 이 확률을 추정하게 된다.
Entropy & Cross Entropy
언어 모델에서 Entropy를 측정하는 함수는 아래의 F_N와 같다.
이를 정리하면,
즉, 인접한 token에 걸쳐 확장되는 정보의 양을 위처럼 표현할 수 있는 것이다.
그리고 F_N에서 N이 무한대로 갈때를 언어의 entropy라고 정의하고, 우리가 언어모델을 만드때는 finite sampling을 통해 empirical entropy(p가 1/N)로 entropy를 근사하게 된다.
Entropy는 random variable에 포함된 정보를 인코딩하기 위한 평균 비트 수로 exponentiation of entropy는 가능한 모든 정보의 총량이어야 한다. 즉 random variable의 가중 평균된 선택할 수 있는 수를 말한다.
Perplexity
perplexity는 훈련한 언어모델이 샘플을 얼마나 잘 예측하느냐의 척도이고, 직관적으로는 uncertainty를 measure하는 것이라고 볼 수 있다.
Perplexity의 수식을 보면 token 예측 확률 q의 역수를 기하평균한 것임을 알 수 있다. 모든 토큰에 대한 예측값이 1이면 perplexity는 1로 가장 최소 값이 되고 token 중 하나라도 0 prob를 가지면 무한대가 된다.([1,inf]). sentence 에 포함되는 단어가 적을 수록 즉 문장이 짧으면 토큰의 갯수(N)이 줄어들어 ppl의 variance가 커진다고 볼 수 있지만 길면 또 0의 prob를 가지는 토큰이 나올 확률이 높아지므로 마찬가지로 variance가 크다. ppl은 loss 로 사용되지 않고 log를 exponential로 없애서 사람이 직관적으로 이해하기 쉬운 값을 나타내서 trainig 확인 용으로 주로 사용되므로 variance가 큰것이 training하는데 영향을 끼치지는 않는다.
예를 들어 3bit entropy를 가지는 언어모델이 있을 때, 각 bit는 0또는 1을 가질 수 있으므로 다음 토큰을 예측하기 위해서 언어모델은 2^3=8 가지의 경우를 고려할 수 있고 이 모델의 perplexity는 8이라고 할 수 있다. 딥러닝에서는 cross entropy를 사용하므로 언어모델에서 PPL은 2^entropy가 아닌 2^cross_entropy가 된다.
Perpelxity나 cross entropy는 단순히 다음 토큰 값을 잘 맞췄느냐로 평가되는 척도이다. 그래서 사람이 보기에 좋은 문장인지 판단하기에는 좋은 metric은 아니다 해서 2002에 제안된 것이 BLEU score 이다.
BLEU(Bilingual Evaluation Understudy)
BLEU 스코어는 정답에 해당하는 여러 번역 문장 references들이 있고 Machine Translator가 번역한 문장 Candidates 들이 있으면, n-gram word에 대한 Precision에 기반해서 번역 문장의 퀄리티를 측정할 수 있다.
1-gram precision은 Machine translator가 맞춘 토큰이 몇개인지에 대한 비율을 나타낸다. 10개 토큰으로 이루어진 문장에서 Machine Translator가 10개의 토큰을 모두 맞췄을때 bleu score 는 100점이다.
unigram precision이면 (References 중 존재하는 Candidates 단어수 / Candidates 총 단어수)가 된다. 여기서 Cand 단어수는 Ref에 존재하는 최대 카운트를 넘으면 세지 않는 count-clip을 준다.
n-gram의 n에 따라 다르게 나오는 precision을 통합해서 표현해서 bleu를 측정하는데 가중치를 부여한 log 기하 평균을 사용해서 modified n-gram precision을 통합하게 된다.
이렇게 되면 짧은 문장에서는 높은 bleu를 갖게 되는데 이를 방지하기 위해 Penalty 텀이 추가된다. 짧은 candidate에 대해서는 Penalty를 준다.(Brevity Penalty)
최종 블루 스코어는 BP * BLEU가 된다.
ROUGE(Recall-Oriented Understudy for Gisting Evaluation)
루지 스코어는 주로 요약 모델을 평가할 때 사용된다. n-gram recall score를 의미하며 두 문서간 얼마나 n-gram이 겹치는지 평가한다.
Precision은 Candidate 중 Reference와 겹치는 단어가 얼마나 많은지 보는 것이고 Recall은 위 Rouge 수식과 같이 Reference의 단어 중 몇개가 Candidate의 단어들과 겹치는지 본다.