728x90
생성 문장의 성능을 평가할때 사용하는 metric을 알아보자.
단순히 cross entropy를 loss로 사용해버리면 다음과 같은 문제가 발생한다.
I Love you를 예측했는데 ground truth가 Oh I Love you 라면 한개도 맞추지 못한게 되어버린다.
1. Precision and Recall
reference : Half of my heart is in Havana ooh na na
predicted : Half as my heart is in Obama ooh na
(True라고 분류한 것 중에 실제 true인 비율)
precision = true positive / true positive + false positive
= correct / len of predicted
= 7 / 9
(True중에 내가 True라고 예측한 비율)
recall = true postivie / true positive + false negative
= correct / len of reference
= 7/ 10
(precision, recall 조화 평균)
f-score = 2(precision * recall) / (precision + recall)
만약 구글이 검색 결과를 10개 알려줬는데 그 중 내가 찾으려는 정보가 7개라면 이는 precision을 느끼고 있는 것이다.
만약 구글이 옳은 검색 결과를 20개 중에 7개만 알려줬다면 이는 recall을 느끼고 있는 것이다.
reference : Half of my heart is in Havana ooh na na
model1 : Half as my heart is in Obama ooh na
model2 : Havana na in heart my is Half ooh of na
그러나 이 precision, recall도 허점이 있다. model2는 precision, recall이 모두 100프로 이나 순서가 완전 엉망이다.
2. BLEU (BiLingual Evaluation Understudy)
단순히 한개의 단어 뿐만 아니라 n-gram overlap이 어느정도인지도 고려하여 구한다. 블루 스코어는 precision만 고려한다. 번역 결과의 품질만을 생각하는 것과 같다.
위 식은 four-gram 예시이다. 만약 예측 문장의 길이가 정답 길이보다 크면 1로 만들어버린다. 반대로 정답길이보다 짧으면 1보다 작은 숫자가 곱해져서 penalty가 부과된다. gravity penalty라고 한다.
거기에 precision들의 기하평균을 구해서 곱한다.
reference : Half of my heart is in Havana ooh na na
model1 : Half as my heart is in Obama ooh na
1-gram precision | 7/9
2-gram precision | 4/8
3-gram precision | 2/7
4-gram precision | 4/6
brevity penalty | 9/10
BLEU | 52%
model2 : Havana na in heart my is Half ooh of na
1-gram precision | 10/10
2-gram precision | 0/9
3-gram precision | 0/8
4-gram precision | 0/7
brevity penalty | 10/10
BLEU | 0%
model2의 결과는 fscore가 100인 것에 비해 BLUE 스코어는 0이다
728x90
반응형
'boostcamp AI tech > boostcamp AI' 카테고리의 다른 글
Transformer - Multi-Head attention (2) | 2023.12.06 |
---|---|
Transformer - self attention (1) | 2023.12.06 |
Beam search (1) | 2023.11.30 |
Seq2Seq with attention (1) | 2023.11.30 |
Long-Short Term Memory, GRU (0) | 2023.11.29 |