본문 바로가기

NLP

[이론 공부] NLP 성능평가 Metric : 0. 개요, 1. BLEU(Bilingual Evaluation Understudy Score)

0. 개요

NLP 관련 프로젝트를 진행하면서 제일 먼저 궁금했던 건 어떻게 모델의 성능을 평가하냐는 것이었습니다.

그래야 어떤 목표를 가지고 성능을 올릴 수 있으니까요?ㅎㅎ

 

도메인마다, 서비스마다 그 성능의 지표가 달라질 수도 있고, 그 지표를 발굴하는 것도 중요하다고 생각하지만,

가장 먼저, 기초적이고 전통적으로 사용해왔던 평가지표를 알아보는 것이 중요하다고 생각해서

General하게 사용되어 온 지표들에 대해 하나씩 탐구해보고자 합니다.

 

 

NLP 메트릭 톺아보기

기초부터 톺아보는 NLP 학습기

velog.io

NLP Metric의 전체적인 분류를 너무 잘 정리해 주신 문서가 있어서 이 내용에 있는 Metric들을 바탕으로 앞으로 글을 작성해보고자 합니다.

 

위 문서에 따르면,

NLP Processing의 Output 문장을 평가하는 기준에는

Quality / Diversity가 있고,

 

정답이 있는지 없는지

(Supervised / Unsupervised)

측정 대상이 어떤 것인지

(Word / Edit-distance / Embedding / Model / Probability based)

에 따라 Metric의 종류가 나눠지게 됩니다.

 

1. BLEU(Bilingual Evaluation Understudy Score)

오늘은 그 중에서도 Quality평가 지표 중 Supervised - Word based 의 특징을 가지는 BLEU를 탐구해보고자 합니다.

 

BLEU는 주로 기계번역 task에 활용되는 평가지표입니다.

Supervised라는 의미는, 사람이 번역한 문장을 답으로 제시하여, 기계번역(예측문장) - 사람번역(정답문장) 문장의 유사도를 측정하는 방법입니다.

Word based라는 의미는, BLEU가 연속된 단어 뭉치를 활용하는 n-gram 일치도를 기반으로 유사도를 측정하기 때문입니다.

(+ 중복 단어, 문장 길이에 따라 유사도 값을 보정)

 

BLEU의 값은 0 ~ 1 사이에 있고, 1에 가까울 수록 성능이 좋다는 것을 의미합니다.

 

공식은 다음과 같습니다.

$$BLEU= BP\cdot exp(\sum_{n=1}^{N}w_{n}\log p_{n})=min(1,\frac{output\,length(예측문장)}{reference\,length(정답문장)})(\prod_{i=1}^{4}precision_{i})^{\frac{1}{4}}$$

(*4로 설정된 이유는 보통 BLEU를 쓸 때 4-gram까지 고려하기 때문입니다.)

 

 

첫 번째 공식

$$BP\cdot exp(\sum_{n=1}^{N}w_{n}\log p_{n})$$

$BP$(Brevity Penalty)는 아래 조건을 의미합니다

$$BP=\begin{cases}1 & \text{ if } \,\, c>r 
\\
e^{(1-r/c)} & \text{ if } \,\, c\leq r
\end{cases}$$

 

$exp(\sum_{n=1}^{N}w_{n}\log p_{n})$는 n-gram precision의 기하평균을 의미합니다.

 

첫 번째 공식을 좀 더 풀어서 설명한 것이 두 번째 공식이라 여기에서 의미를 더 설명하겠습니다.

 

두 번째 공식

$$min(1,\frac{output\,length(예측문장)}{reference\,length(정답문장)})(\prod_{i=1}^{4}precision_{i})^{\frac{1}{4}}$$

예시와 함께하는 자세한 설명은 아래의 문서가 정리가 잘 되어 있습니다!

 

BLEU Score

BLEU BLEU(Bilingual Evaluation Understudy)score란 성과지표로 데이터의 X가 순서정보를 가진 단어들(문장)로 이루어져 있고, y 또한 단어들의 시리즈(문장)로 이루어진 경우에 사용되며, 번역을 하는 모델에

donghwa-kim.github.io

 

먼저 공식의 뒷부분인 $(\prod_{i=1}^{4}precision_{i})^{\frac{1}{4}}$ 입니다.

이 부분은 정답 문장과 예측 문장 사이에 n-gram(n=1~4)이 겹치는 정도의 기하평균을 의미합니다.

 

이 기하평균을 계산할 때, 같은 단어가 여러번 나와서 과적합되는 상황을 방지하기 위해,

Clipping이라는 작업을 통해 보정한 값을 반영합니다.

그 이유는 a(n), the 같은 단어들(한국어에서 조사 등)은 큰 의미가 없지만 한 문장에 여러 번 사용될 수 있는데,

그대로 계산하게 되면, 출현 빈도로 유사도를 계산하는 n-gram의 특성 상,

유사도가 실제 의미적으로 유사한 정도보다 크게 나오기 때문입니다.(실제보다 번역을 더 잘했다고 측정해버린다!)

예를 들어, 한 단어 단위로 출현 빈도를 계산하게 되는 Uni(=1)-gram의 상황의 경우,

정답 문장(사람번역)에 the가 2번 나오고, 예측 문장(기계번역)에 3번 나왔다면 3을 2로 보정해서 유사도를 줄이게 됩니다.

 

공식의 앞 부분인 $min(1,\frac{output\,length(예측문장)}{reference\,length(정답문장)})$는 $BP$ (Brevity Penalty) 를 의미합니다.

이 값이 필요한 이유는 예측 문장(기계번역)이 정답 문장(사람번역)보다 지나치게 짧아서 생기는 과적합을 방지하기 위함입니다.

 

예를 들어, 아래와 같은 상황이 있다고 생각해봅시다.

  • 정답 문장 : It is through the small, seemingly insignificant moments of kindness and understanding that we can build a world where empathy, compassion, and love are the guiding principles, creating a brighter and more harmonious future for all.
  • 예측 문장 : It is

이걸 Uni(=1)-gram 으로 계산하면, $\frac{2}{2}$가 되어 완벽한 번역이 되어버립니다.

이런 상황을 방지하기 위해 $BP$를 곱하게 됩니다.

 

$\frac{output\,length(예측문장)}{reference\,length(정답문장)}$은 예측문장이 정답문장에 비해 얼마나 길거나 짧은지에 대한 비율이며,

$min(1, )$는 주어진 값과 1 중에서 더 작은 값을 선택한다는 의미입니다.

즉, 비율이 1보다 크다면 1로 고정되고, 1보다 작으면 그대로 사용됩니다. (그니까 예측문장이 정답문장보다 길다(=비율이 1보다 크다)면 $BP=1$이라서 BP가 상관없게 된다.)

 

 

Python에서는 아래와 같이 활용할 수 있습니다.

import nltk.translate.bleu_score as bleu

candidate = 'It is a guide to action which ensures that the military always obeys the commands of the party'
references = [
    'It is a guide to action that ensures that the military will forever heed Party commands',
    'It is the guiding principle which guarantees the military forces always being under the command of the Party',
    'It is the practical guide for the army always to heed the directions of the party'
]

print('실습 코드의 BLEU :',bleu_score(candidate.split(),list(map(lambda ref: ref.split(), references))))
print('패키지 NLTK의 BLEU :',bleu.sentence_bleu(list(map(lambda ref: ref.split(), references)),candidate.split()))

-- 출처 : https://wikidocs.net/31695

 

 

장점

  • 계산이 간단하고 빠릅니다.
  • 사용하기가 쉽습니다.(전처리가 많이 필요하지 않습니다.)
  • 언어에 구애받지 않습니다.

 

한계점

  • 정답 문장과 비교하는 방법이기 때문에, 정답 문장 자체의 번역 퀄리티가 높아야 "BLEU 점수가 높음 = 번역이 잘 됨"을 정의할 수 있습니다.
  • 두 문장의 일치도만 고려하기 때문에 문장의 의미, 문법적 구조의 유사성 등은 반영할 수 없습니다.(단어의 순서를 고려할 수 없음)
  • "자동차-차량"과 같은 동의어에 대한 처리가 어렵습니다.(둘이 다른 단어로 인식)

이러한 한계점으로 인해 다른 지표들과 함께 사용하는 경우가 많다고 합니다.

 

 

*참고 문서

 

NLP 메트릭 톺아보기

기초부터 톺아보는 NLP 학습기

velog.io

 

14-03 BLEU Score(Bilingual Evaluation Understudy Score)

앞서 언어 모델(Language Model)의 성능 측정을 위한 평가 방법으로 펄플렉서티(perplexity, PPL)를 소개한 바 있습니다. 기계 번역기에도 PPL을 평가에 사…

wikidocs.net

https://aclanthology.org/P02-1040.pdf

(BLEU: a Method for Automatic Evaluation of Machine Translation - Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu)

 

A Survey on Evaluation Metrics for Machine Translation

The success of Transformer architecture has seen increased interest in machine translation (MT). The translation quality of neural network-based MT transcends that of translations derived using statistical methods. This growth in MT research has entailed t

www.mdpi.com

 

BLEU : 기계번역에서 많이 사용하는 지표

기계번역에서 많이 사용하고 있는 지표중 하나인 BLEU 스코어는 간단한 수학적인 연산만으로도 기계번역 품질을 평가할 수 있습니다. 물론 몇가지 한계점은 존재하긴 하지만 간편하게 사용할 수

modulabs.co.kr

 

BLEU Score

BLEU BLEU(Bilingual Evaluation Understudy)score란 성과지표로 데이터의 X가 순서정보를 가진 단어들(문장)로 이루어져 있고, y 또한 단어들의 시리즈(문장)로 이루어진 경우에 사용되며, 번역을 하는 모델에

donghwa-kim.github.io

 

[자연어처리[Metric] BLEU score : bilingual Evaluation Understudy

BLEU BLEU(bilingual Evaluation Understudy) score는 input과 output이 모두 sequence로 이루어져 있는 경우 사용하는 지표로서 machine translation과 같은 generation task에 주로 사용됩니다. $$BLEU = min(1,{output\,length(예측\,

supkoon.tistory.com