본문 바로가기
A. Research/Deep Learning & Application

다양한 Performance Measure in NLP, ASR

by IMCOMKING 2015. 7. 1.

Natural Language Generation

참고할 글: https://stats.stackexchange.com/questions/242617/comparing-perplexities-with-different-data-set-sizes

 

Log Likelihood: log P(x|θ), 감독학습인 경우 log P(y|x, θ)

일반적으로 라이클리후드를 서로 다른 크기의 데이터 셋에 대해서 쓰려면 기하평균을 취해야한다.

왜냐하면 라이클리후드의 절대값은 항상 증가하는 방향이기 때문에 데이터의 크기가 같이 않으면 성능 비교가 의미가 없다. 따라서 마찬가지로 분류 문제에서의 -log라이클리후드인 크로스엔트로피는 데이터의 크기 N으로 나누어주면 된다.

 

Log Likelihood per word: { log P(x) } / N, 감독학습인 경우 { log P(y|x, θ) } / N

LM에서는 seq 길이에 따라서 log likelihood를 계산해주어야한다. 즉 쉽게 말하면 전체 sentence에 대한 log likelihood를 문장 길이 N으로 나누어준 것을 사용한다.

 

 

Perplexity(PPL) : 2^H(p), Machine Learning에서는 2^H(p, q)

H(p)는 entropy를 의미한다. 즉 어떤 확률분포 p의 perplexity는 2^entropy인 것이다. 그런데 ML에서 이 개념을 사용될 때에 entropy가 아닌 cross_entropy 즉, H(p,q) 를 사용한다. 다만 이 때 p의 분포를 CrossEntropy의 일반적인 정의와 달리, Empirical Distribution (1/N)이 사용된다. 결과적으로 perplexity의 장점은 log가 들어가 값을 이해하기 어려운 cross_entropy에 비해서, log를 exponential로 캔슬링 하기 때문에 사람이 숫자를 직관적으로 이해하기 쉽다는 점이다.

또한 원래 Loss를 계산할 때는 Model이 예측한 값과 학습셋의 정답과의 비교를 하게 되는데, PPL은 보통 학습셋의 정답과 비교하는 게 아니고, 임의의 문장에 대해서 측정하는 목적으로 쓰이는 경우가 좀 더 많다.

 

즉 Loss는 학습의 목적이 강하고, PPL은 측정의 목적이 강하다.

https://en.wikipedia.org/wiki/Perplexity

 

 

Perplexity in NLP: 2^ 이때 N은 한 문장의 단어의 개수

Perplexity is the inverse probability of the test set, normalized by number of words.

 

Perplexity는 NLP에서 Language Model의 evalution 메트릭으로 자주 사용된다. 이 경우 Language Model은 entropy 대신 cross_entropy를 사용되고, q 분포로 Empirical Distribution을 사용하게 된다. 이로 인해 생기는 장점이 있는데, 1/N의 q 분포로 인해 자동적으로 sentence length로 normalized가 된다는 것이다. (만약 단순히 likelihood를 사용하면, 문장의 길이에 따른 값의 scale이 고려되지 않을 것이다.)

https://towardsdatascience.com/perplexity-intuition-and-derivation-105dd481c8f3

 

Perplexity(PPL)의 해석

Perplexity의 수식을 잘 전개해보면 token에 대한 예측 확률의 역수를 기하평균한 것임을 알 수 있다. 

그러므로 모든 token에 대한 모델의 확률 예측값이 1일 때, perplexity는 최소인 1의 값을 갖고, 반대로 token중에서 하나라도 모델이 0의 확률을 예측하게 되면, perplexity는 무한대의 값을 가질 수 있다.

 

Sentence의 길이가 짧을 수록, 기하평균 계산에 들어가는 token이 줄어들기 때문에 perplexity 값의 variance가 커진다고 볼 수 있다.(단 하나의 token에 의해서만 값이 결정되므로) 

그러나 다른 관점에서 볼 때 Sentence의 길이가 길어질수록, token이 늘어나게 되고, 이중에 하나라도 값이 0이 되면 perplexity가 무한대가 되버릴 수 있기 때문에 오히려 variance가 커진다고 볼 수도 있다.

 

요약

Perplexity : [1, ∞] (1에 가까울수록 좋다.)

perplexity는 sentence에서 각 token을 예측하는 확률의 역수의 기하평균

Sentence의 길이가 길어질수록 perplexity의 값이 무한대가 될 위험성이 커진다.

 

 

 

 

Machine Translation

BLEU(Bilingual Evaluation Understudy): 블루 스코어는 2002년에 제안된 machine translation의 성능을 측정하기 위한 메트릭이다. 정답에 해당하는 여러 개의 번역 문장(reference)과 기계 번역 문장(candidate)이 주어졌을 때, precision에 기반하여 기계 번역 문장의 퀄리티를 측정하는 방법으로, 사람이 판단하는 점수와 correlation이 있다고 알려져있다.

 

BLEU score의 계산은 n-gram word에 대한 precision으로 구해진다. 예를 들어 BLUE score가 1-gram word에 대한 precision이라면, 기계번역 문장에 등장한 단어 중 몇퍼센트가 정답 문장에 나타났는지를 측정한다고 볼 수 있다. 즉 기계번역 문장이 3개의 단어로 되어 있는데, 그 3개의 단어가 전부 정답 문장에 등장한다면 100% 성능인 것이다.

 

 

(단, 한 word가 가질 수 있는 최대 등장 횟수(분자 값)는 그 word가 reference 문장에 등장한 최대 횟수를 넘을 수 없다.)

 

 
그러면 자연히 아주 짧은 기계 번역 문장에 과도하게 높은 precision을 갖는 현상이 생긴다. 따라서 지나치게 짧은 문장에 대해서 penalty를 주는 텀이 추가된다.

 

보통 unigram은 번역된 문장이 원본 문장의 정보를 잘 담고 있는지 측정 할 수 있고, 4-gram은 fluency를 측정할 수 있다고 한다.

https://en.wikipedia.org/wiki/BLEU

 

Document Matching(Text Summarization)

ROUGE: Recall-Oriented Understudy for Gisting Evaluation

https://kr.mathworks.com/help/textanalytics/ref/rougeevaluationscore.html

ROUGE: N-gram recall

https://huffon.github.io/2019/12/07/rouge/

루지라고 발음함. 루지는 쉽게 말하면 n-gram recallscore이다. 두 문서간에 얼마나 n-gram이 겹치는지를 측정한 것

 

BLEU vs ROUGE 차이점

BLEU: N-gram precision + Length Penalty

ROUGE: N-gram recall

ROUGE precision: BLEU랑 똑같은데 length penalty만 없음.

https://ai-information.blogspot.com/2019/04/text-generation-evaluation-06-rouge.html

 

 

Automatic Speech Recognition

CER(Character Error Rate): Edit Distance / Target Sentence Length 

- 캐릭터(알파벳, 한글완성형 글자)를 기준으로 target 문장에서 얼마나 틀린 문장이 인식 되었는지 계산하는 measure이다.

- Edit distance로는 levenshtein distance가 사용된다.

- 보통 비교할 두 문장에서 공백과 특수문자를 모두 제거한 상태에서 CER을 계산한다.

- 여러 문장에서 발생한 CER을 평균 낼 때에는, 각각의 문자에서 발생한 CER을 평균내는 것이 아니라 (모든 문장 전체의 Edit distance) / (모든 문장 전체의 Length) 로 구해야한다. 만약 이렇게 하지 않으면 길이가 짧은 문장의 CER이 평균을 내면서 더 많은 비중을 차지하게 된다.

 

 

CRR(Character Recognition Rate): 1 - CER 으로, 단순히 캐릭터의 error율이 아닌 정답률을 계산한 것이다.

WER(Word Error Rate): Word-level Edit Distance / Length

  • 항상 CER < WER의 공식이 성립한다. WER는 한글자도 틀리지 않고 모든 char를 다 맞춰야 1개의 word를 맞춘 것이기 때문이다.

 

 

댓글