Bi-Lingual Evaluation Understudy Score (BLEU Score)


< 목차 >


BLEU Score

  • Higher is Better

BLEU Score 는 Bilingual Evaluation Understudy Score 의 약자로 기계 번역 (Machine Translation) 분야의 평가 기준 (Metric) 입니다. 본 Post 에서는 어떻게 그리고 왜 BLEU Score 가 번역 품질 평가에 쓰이는지, 그리고 단점은 무엇인지 등에 대해 알아보려고 합니다.

Intuition

간단하게 생각해봅시다. 예를 들어 한국어를 영어로 번역할건데, 그 번역에 대한 정답이 있다고 하고 이걸 Reference 라고 부르겠습니다.

  • Reference : It is a guide to action that ensures that the military will forever heed party commands.

사실 번역에 정확한 답이라는건 있다고 하기 어려운데요, 100% 정답이 없기 때문에 번역이 어려운 것이라고도 할 수 있겠습니다. (여러 Reference 가 존재할 수 있음.)

이제 어떤 서로 다른 두 번역 Model 이 아래와 같은 결과를 출력했다고 합시다. 과연 어떤게 더 좋다고 생각할 수 있을까요?

  • Candidate 1 : It is a guide to action which ensures that the military always obeys the commands of the party.
  • Candidate 2 : It is to insure the troops forever hearing the activity guidebook that party direct.

일단 한눈에 보기에 Candidate 1 이 더 겹치는 단어도 많아보이고 번역을 잘 한거 같습니다. 그러면 얼마나 Reference 문장의 단어와 Candidate 1 문장의 단어가 겹치는지를 보면 되지 않을까요? 즉 정밀도 (Precision) 을 보는 것인데요, 이 때 이런 Token 하나씩을 비교하는 것 (공백을 기준으로 지금은 단어지만 subword (형태소)가 될 수도 있습니다.) 을 Unigram Precision 을 측정한다고 합니다.

이제 정밀도를 측정해봅시다. Candidate 1 은 전체 18개 단어중에 Reference 에 등장하지 않은 단어가 of obeys always which 밖에 없는데요, 비슷하게 Candidate 도 측정해보면 정밀도는 아래와 같을겁니다.

  • Candidate 1 : \(\frac{14}{18}\)
  • Candidate 2 : \(\frac{6}{14}\)

하지만 이런 단순한 count 에는 문제가 있을 수 있습니다. 가령 Candidate 1 에서는 the 가 2번 등장하는데 Reference 에서는 1번 등장하고 Reference 에서는 that 이 2번이었고 Candidate 1 에서는 2번이었는데 과연 이런 것들이 반영이 된걸까요?

Clipped Unigram Count (Modified Precision)

아래의 또다른 예시를 생각해봅시다.

  • Reference : there is a cat on the mat
  • Candidate : the the the the the the the

단순히 셈을 하게되면 위의 예시의 Precision 은 바로 \(\frac{7}{7} = 1\) 로 최고로 품질이 좋은 결과를 뽑은거처럼 보여질 수 있습니다. 말도 안되는 결과죠.

이를 위해서 비교하는 두 문장에서 몇 번 그 단어가 등장했는지를 세서 중복을 고려하여 정밀도를 재게 되는데요,

\[min({\text{the}}_{cand}^1, {\text{the}}_{ref}^1)\]

바로 이런식으로 재는 겁니다. 이렇게 측정할 경우 the 가 1번만 유효하기 때문에 정밀도는 \(\frac{1}{7} = 0.14\) 가 됩니다. 이러한 방식을 Clipping 을 한다고 합니다.

the 가 7번인 극단적인 예시 말고 또 다른 유사한 예제를 봅시다.

  • Reference : the cat is on the mat
  • Candidate : the the the cat mat

이를 실제로 Clipping 해서 재보면

Unigram \(m_{cand}^1\) \(m_{ref}^1\) min( \(m_{cand}^1\), \(m_{ref}^1\))
the 3 2 2
cat 1 1 1
is 0 1 0
on 0 1 0
mat 1 1 1

실제 정밀도는 \(\frac{(2+1+1)}{5} = 0.8\) 이 됩니다. (여전히 번역 결과가 구린것 치고는 꽤 높네요.)

N-Gram Overlap (n=1,2,3,4)

이번에는 다음 경우에 대해 생각해봅시다.

  • Reference : it is a guide to action that ensures that the military will forever heed party commands.
  • Candidate 1 : it is a guide to action which ensures that the military always obeys the commands of the party .
  • Candidate 2 : the that military a is it guide ensures which to commands the of action obeys always party the .

여기서 Candidate 2 는 사실 Candidate 1 을 무작위로 섞은건데요, 당연히 이렇게 되면 번역결과가 이상하겠죠? 이런 경우는 완전 터무니없겠으나, 만약 엉터리로 직독직해를 하다보면 아래와 같은 결과가 나올수도 있을 것 같습니다.

  • Source : 나는 오늘 학교에 늦었다.
  • Candidate : i’m today for school late
  • Reference : i’m late for school today

예시를 위한 제가 지어낸거지만 실제로 그럴 수도 있다는 거죠. 이런 경우 당연히 단어 하나씩을 가지고 정밀도를 재면 Candidate 1,2 모두 같은 정밀도가 나오겠죠? 말이 안됩니다.

이런 경우를 방지하기 위해서 순서를 고려한 정밀도를 측정하게 되는데요, 바로 bi-gram (2gram), tri-gram (3gram), 4gram 등을 재는 겁니다.

Bi-gram 을 생각해보죠. the that 같은 건 문법적으로 등장하기 어렵기 때문에 다 0 처리 되겠죠?

Unigram \(m_{cand}^2\) \(m_{ref}^2\) min( \(m_{cand}^2\), \(m_{ref}^2\))
the that 1 0 0
that military 1 0 0
military a 1 0 0
a is 1 0 0
is it 1 0 0
it guide 1 0 0
guide ensures 1 0 0
ensures which 1 0 0
which to 1 0 0
to commands 1 0 0
commands the 1 0 0
the of 1 0 0
of action 1 0 0
action obeys 1 0 0
obeys always 1 0 0
always party 1 0 0
party the 1 0 0
the . 1 0 0

사실 위의 예시는 너무 랜덤하게 섞은 매우 극단적인 케이스 이기 때문에 아예 정밀도가 0이 나와버립니다. 그래도 이 예시를 통해 Ngram 을 적용함으로써 어법상 말이 안된다던가 숙어 같은 표현을 캐치하는데 도움이 될거 같다는 생각이 드네요.

좀 더 현실적인 예시를 들어보면 다음과 같은 결과를 얻을 수 있겠습니다.

  • Reference : The NASA Opportunity rover is battling a massive dust storm on Mars .
  • Candidate 1 : The Opportunity rover is combating a big sandstorm on Mars .
  • Candidate 2 : A NASA rover is fighting a massive storm on Mars .

이제 우리는 1gram 부터 4gram 까지 겹치는걸 다 계산한 뒤에 곱할겁니다. 그리고 이것에 1/4 제곱을 해줄건데요, 즉 기하평균 (geometric average)을 취하는 것입니다.

\[\left(\prod_{i=1}^4 \text { precision }_i\right)^{1 / 4}\]
Metric Candidate 1 Candidate 2
\(\text{precision}_{1} (\text{1gram})\) 8/11 9/11
\(\text{precision}_{2} (\text{2gram})\) 4/10 5/10
\(\text{precision}_{3} (\text{3gram})\) 2/9 2/9
\(\text{precision}_{4} (\text{4gram})\) 0/8 1/8
BLEU-Score 0.0 0.33

굉장히 겹치는 단어가 많아보이지만 안타깝게도 Candidate 1 은 4gram 이 0점이라 0이 나오고 맙니다. 그런데 만약 산술 평균 (arithmetic average) 을 썼다면 Candidate 1 도 Score 가 0이 나오진 않았을텐데 왜 기하 평균을 쓴것일까요?

wiki_mean

BLEU 를 제안한 원 논문 BLEU: a Method for Automatic Evaluation of Machine Translation 에는 이에 대해 다음과 같은 언급이 있습니다.

BLEU uses the average logarithm with uniform weights, which is equivalent to 
using the geometric mean of the modified n-gram precisions

Using the geometric average also yields slightly stronger correlation with human judgments 
than our best results using an arithmetic average.

즉 실험결과 더 사람과 Align 된 방법이 기하 평균을 쓰는 것이기 때문인 것 같습니다.

만약 문장이 분절되는 단위가 단어가 아니라 형태소였다면 sand storm 이 분리되어 Candiate 1 도 storm on Mars . 겹치는 것으로 간주되었을수도 있었을텐데 아쉽네요.

Brevity Penalty

BLEU Score 를 정확히 계산하기 위해 몇 가지 더 추가할 요소가 있는데요, 이번에는 간결성 패널티 (Brevity Penalty (BP)) 입니다. 무슨 말이냐 하면 Reference 에 비해 짧은 길이의 번역 결과를 생성했을 때 그 길이의 비율에 따라 기하급수적으로 불이익을주는 term 입니다.

\[\min \left(1, \exp \left(1-\frac{\text { reference-length }}{\text { output-length }}\right)\right)\]

왜냐하면 비슷하게 단어를 맞췄어도 Candidate 이 짧으면 Precision 이 boosting 돼서 더 잘하는 것 처럼 보일 수 있기 때문입니다. 그래서 이를 Ngram Overlap Precision 과 곱해주는 거죠.

그리고 BP 는 BLEU Score 에 Recall Term이 없다는 사실을 보완한다고 하는데요, 과연 이게 무슨말일까요?

머신러닝의 중요한 Metirc 중 하나인 Recall & Precision 에 대해 다시 생각해봅시다. Recall 은 분류 문제를 풀 때 Model이 얼마나 정확하게 정답을 맞췄느냐를 말합니다.

예를 들어 모델이 200개의 예측을 했다고 생각해볼건데, 이 때 정답은 모두 양수라고 생각해 봅시다. 이 중 180개는 양수라고 예측했고 20개는 음수라고 예측했다고 하면

  • true positive : 180
  • false negative : 20

이 됩니다.

이러면 리콜은

\[\text{Recall} = \frac{ \text{true positives} }{ \text{true positives} + \text{false negatives} } = \frac{180}{180 + 20} = 0.9\]

가 되는거죠.

리콜은 실제로 dataset 이 imbalance 한 상황에서 모델의 예측력을 판단하는데 좋은 근거가 되는데요, 예를 들어 어떤 암을 진단하는 데이터를 보고 양성/음성 을 판단하는 경우를 생각해봅시다. 암이 양성인 data sample 은 구하기 어려울테니 당연히 굉장히 dataset이 imbalance 합니다. 100만명 중 10명 꼴로 발생하는 암에 대해 생각해보죠. 500만 환자의 데이터가 있고 50명만 양성인 데이터의 경우 모델의 예측 결과가

  • True Positive (실제 암인 경우 암이라고 예측): 30
  • False Negative (암인데 예측 못한경우): 20
  • True Negative (실제 암이 아닌 경우 암이 아니라고 예측한 경우) : 4,999,000
  • False Positive (암에 안걸렸는데 암이라고 오판한 경우) : 950

이었다고 생각해봅시다. 이때 Recall 의 초점은 실제 암인 50명 에 맞춰져 있습니다. Recall을 계산해보면

\[\frac{TP}{TP+FN} = \frac{30}{30+20} = 0.6 = 60%\]

가 되지만 이 경우 정확도를 그냥 재면

\[\frac{TP + TN}{TP+FN + TN+FP} = \frac{30+4,999,000}{5,000,000} = 99.98%\]

가 됩니다. 사실 진짜 암환자가 10명밖에 없는 경우 500만 개 샘플에 대해 전부 음성이라고 해버리면 무지성으로 예측해도 4,999,950 에 대해서는 맞춘거나 다름 없기 때문에 정확도가 어마어마하게 높죠. 근데 당연히 이런 이런 Model 이 좋을리가 없겠죠?

반대로 Precision 은 model 이 양수(or 양성) 이라고 판단한 것 중에 실제로 양성이었던 것의 비율은 얼마나 될까? 에 관심이 있는 Metric 으로

\[\frac{TP}{TP+FP}\]

로 나타냅니다. Recall 과 비교해보면 둘 다 True Positive (TP) 가 분자에 있지만 분모에 TP 에 더해지는 것이 FP 냐 FN 냐가 다른데요, 즉 실제로 양성으로 분류 돼야만 하는 것이 잘못 분류됐는지? 에 대한 값인 False Negative 와 양성으로 분류된 것 중에 잘못 판단된게 얼마나 있는지? 를 나타내는 False Positive 중 어떤걸 더 중요하게 생각할거냐가 다른겁니다. 아까의 암 진단 예시를 보면 Recall 이 60% 였던 데 반해 Precision 의 경우는

\[\frac{TP}{TP+FP} = \frac{30}{30+950} = 0.03 = 3%\]

밖에 되질 않습니다. Precision 과 Recall 은 한쪽이 높으면 한쪽은 낮은 Trade-off 관계에 놓여져 있는데요, 절대로 실제 양성인 case 를 틀리면 안되는 암 진단 같은 경우 Recall 더 중요한 지표라고 할 수 있겠습니다. 보통의 경우 이런 Precision 과 Recall 의 특성을 둘 다 살리기 위해서 이 둘의 조화 평균인 F1-Score 를 Measure 하기도 하는데요, 우리가 재고 있는 BLEU Score 는 얼마나 N-gram 이 겹치는가를 보는, 즉 Precision 에 관한 것만 보고 있는 겁니다.

  • Reference : The NASA Opportunity rover is battling a massive dust storm on Mars .
  • Candidate 1 : The Opportunity rover is combating a big sandstorm on Mars .
  • Candidate 2 : A NASA rover is fighting a massive storm on Mars .
Metric Candidate 1 Candidate 2
\(\text{precision}_{1} (\text{1gram})\) 8/11 9/11
\(\text{precision}_{2} (\text{2gram})\) 4/10 5/10
\(\text{precision}_{3} (\text{3gram})\) 2/9 2/9
\(\text{precision}_{4} (\text{4gram})\) 0/8 1/8
Brevity-Penalty 0.83 0.83
BLEU-Score 0.0 0.27

Mathematical Details

\[\mathrm{BLEU}=\underbrace{\min \left(1, \exp \left(1-\frac{\text { reference-length }}{\text { output-length }}\right)\right)}_{\text {brevity penalty }} \underbrace{\left(\prod_{i=1}^4 \text { precision }_i\right)^{1 / 4}}_{\text {n-gram overlap }}\] \[\text { precision }_i=\frac{\sum_{\mathrm{snt} \in \text { Cand-Corpus }} \sum_{i \in \text { snt }} \min \left(m_{\text {cand }}^i, m_{r e f}^i\right)}{w_t^i=\sum_{\text {snt } € \text { Cand-Corpus }} \sum_{i^{\prime} \in \text { snt }}, m_{\text {cand }}^{i^{\prime}}}\]

여기서

  • 1.\(m_{cand}^i\) 는 reference 와 일치하는 candidate 의 i-gram 을 센 것
  • 2.\(m_{ref}^i\) 는 reference 에서의 i-gram 개수
  • 3.\(w_t^i\) 는 candidate 에서의 총 i-gram 수

입니다.

Properties

BLEU is a Corpus-based Metric

BLEU Score 는 단일 문장간의 번역 품질을 비교하기보다는 전체 Corpus 의 통계를 기반으로 한 평가하는 Metric입니다. 이게 무슨말이냐면 Corpus 내에서 ngram 을 재야 유의미한 통계가 나오고 이를 기반으로

No distinction between content and function words

Not good at capturing meaning and grammaticality of a sentence

Normalization and Tokenization

References