티스토리 뷰
자연어 처리에는 많은 평가 방법들이 존재하는데, 기계 번역의 성능이 얼마나 뛰어난지를 측정하기 위해 사용되는 대표적인 방법인 BLEU(Bilingual Evaluation Understudy) 대해서 학습해 보겠습니다.
목차
1. Unigram Precision
2. N-gram Precision
3. Modified N-gram Precision
4. Brevity Penalty
BLEU score
BLEU는 기계번역과 사람이 직접 번역한 결과가 얼마나 유사한지 비교하여 번역에 대한 성능을 측정하는 방법입니다.
(번역에 있어서는 PPL 보다는 BLEU가 좀 더 신뢰성이 있다고 합니다.)
BLEU은 언어에 구애받지 않고 사용할 수 있으며, 계산 속도가 빠르다는 장점을 가지고 있습니다.
BLEU의 식은 아래와 같습니다.
$$BLEU = BP * \prod_{n=1}^{N} {{P}_n} ^ {w_i}$$
(BP : Brevity Penalty, Pn : modified n-gram precision, wn : weight )
BLEU는 0-1 사이의 값이 나오게 되고, 높을 수록 성능이 더 좋음을 의미합니다. (PPL은 낮을 수록 성능이 더 좋음.)
BLEU를 계산하기 위해서는 먼저 $P_n$에 대하여 알아야 합니다.
n-gram에 대하여 가장 직관적인 방식인 Unigram Precision부터 N-gram precision, Modified N-gram precision 순서로 설명하겠습니다.(Wiki docs 딥러닝을 활용한 자연어 처리 입문을 참고하여 modified n-gram precision이라고 작성하였습니다.)
1. Unigram Precision
unigram precision은 단어 개수 카운트로 측정하는 방법입니다.
예시를 들어보겠습니다.
(TMI..예시는 챗지피티가 추천해 줬습니다.)
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 예측 문장 : 고양이가 잠을 자고 있다.
$Unigram \;Precision = \frac{정답\;문장에 \;존재하는지\; 여부}{예측\; 문장의 \;Unigram \;개수}$
위의 예시의 Unigram Precision = $\frac{고양이가, 잠을, 자고, 있다}{고양이가, 잠을, 자고, 있다} = 1$
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 예측 문장 : 고양이가 잠을 자고 있다.
정답 문장에는 예측 문장의 '고양이가', '잠을', '자고', '있다'가 모두 존재하기 때문에 예시의 Unigram Precision은 1이 나왔습니다.
그러나 Unigram은 순서를 고려하지 못한다는 단점이 존재합니다. 따라서 이를 n-gram으로 확장할 필요가 있습니다.
2. N-gram Precison
n-gram이라 하면 연속하는 n개의 단어가 정답 문장에 존재하는지 여부로 계산하는 방법입니다.
N은 개인이 정할 수 있습니다.(default = 4)
다시 예시를 가져오도록 하겠습니다.
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 예측 문장 : 고양이가 침대에서 잠을 자고 있다.
- 1-gram precision : $\frac{정답 \;문장에\; 존재하는지\; 여부\; 합계}{예측\; 문장의\; 1-gram\; 개수} = \frac{4}{5}$
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : 고양이가 , 잠을 , 자고 , 있다.
- 예측 문장 : 고양이가 침대에서 잠을 자고 있다.
- 예측 문장의 gram : 고양이가 , 침대에서 , 잠을 , 자고 , 있다.
- 2-gram precision : $\frac{정답 \;문장에\; 존재하는지\; 여부\; 합계}{예측\; 문장의\; 2-gram\; 개수} = \frac{2}{4}$
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : 잠을 자고, 자고 있다.
- 예측 문장 : 고양이가 침대에서 잠을 자고 있다.
- 예측 문장의 gram : 고양이가 침대에서 , 침대에서 잠을, 잠을 자고, 자고 있다.
- 3-gram precision : $\frac{정답\; 문장에\; 존재하는지\; 여부\; 합계}{예측\; 문장의\; 3-gram\; 개수} = \frac{1}{3}$
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : 잠을 자고 있다.
- 예측 문장 : 고양이가 침대에서 잠을 자고 있다.
- 예측 문장의 gram : 고양이가 침대에서 잠을 , 침대에서 잠을 자고, 잠을 자고 있다.
- 4-gram precision : $\frac{정답\; 문장에\; 존재하는지\; 여부\; 합계}{예측\; 문장의\; 4-gram\; 개수} = \frac{0}{2} = 0$
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : x
- 예측 문장 : 고양이가 침대에서 잠을 자고 있다.
- 예측 문장의 gram : 고양이가 침대에서 잠을 자고, 침대에서 잠을 자고 있다.
그러나 예를 들어 "고양이가 방에서 고양이가 잠을 방에서 자고 있다."라고 예측한다면?
고양이가, 방에서, 잠을, 자고, 있다. 이 모든 gram이 정답 문장에도 들어가 있어서 Unigram-precision = 1 이 됩니다.
예측 문장이 (틀린 건 아닌데) 조금 이상하지만 점수는 높게 나오기 때문에 Clipping을 할 필요가 있습니다.
3. Modified N-gram Precision
예측 문장의 중복을 제거하여 보정하는 것을 추가한 방법으로 정답 문장에 해당하는 gram이 존재하는 개수까지만 늘려 계산합니다.
- 정답 문장 : 귀여운 고양이가 귀여운 강아지와 방에서 잠을 자고 있다.
- 예측 문장 : 귀여운 고양이가 방에서 귀여운 강아지와 고양이가 잠을 방에서 자고 있다.
다시 해봅시다..
(쉽게 생각하면? 나온 단어를 지우며 세면 됩니다!)
- modified 1-gram precision = $\frac{8}{11}$
- 정답 문장 : 귀여운 고양이가 귀여운 강아지와 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : 귀여운, 고양이가, 귀여운, 강아지와, 방에서, 잠을, 자고, 있다.
- 예측 문장 : 귀여운 고양이가 방에서 귀여운 강아지와 귀여운 고양이가 방에서 잠을 자고 있다.
- 예측 문장의 gram : 귀여운, 고양이가, 방에서, 귀여운, 강아지와, 귀여운, 고양이가, 방에서, 잠을, 자고, 있다.
- modified 2-gram precision = $\frac{5}{10}$
- 정답 문장 : 귀여운 고양이가 귀여운 강아지와 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : 귀여운 고양이가, 귀여운 강아지와, 방에서 잠을, 잠을 자고, 자고 있다.
- 예측 문장 : 귀여운 고양이가 방에서 귀여운 강아지와 귀여운 고양이가 방에서 잠을 자고 있다.
- 예측 문장의 gram : 귀여운 고양이가, 고양이가 방에서, 방에서 귀여운, 귀여운 강아지와, 강아지와 귀여운, 귀여운 고양이가, 고양이가 방에서, 방에서 잠을, 잠을 자고 , 자고 있다.
- modified 3-gram precision = $\frac{2}{9}$
- 정답 문장 : 귀여운 고양이가 귀여운 강아지와 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : 방에서 잠을 자고, 잠을 자고 있다.
- 예측 문장 : 귀여운 고양이가 방에서 귀여운 강아지와 귀여운 고양이가 방에서 잠을 자고 있다.
- 예측 문장의 gram : 귀여운 고양이가 방에서, 고양이가 방에서 귀여운, 방에서 귀여운 강아지와, 귀여운 강아지와 귀여운, 강아지와 귀여운 고양이가, 귀여운 고양이가 방에서, 고양이가 방에서 잠을, 방에서 잠을 자고, 잠을 자고 있다.
- modified 4-gram precision = $\frac{1}{8}$
- 정답 문장 : 귀여운 고양이가 귀여운 강아지와 방에서 잠을 자고 있다.
- 정답 문장에 존재하는 예측 문장의 gram : 방에서 잠을 자고 있다.
- 예측 문장 : 귀여운 고양이가 방에서 귀여운 강아지와 귀여운 고양이가 방에서 잠을 자고 있다.
- 예측 문장의 gram : 귀여운 고양이가 방에서 귀여운, 고양이가 방에서 귀여운 강아지와, 방에서 귀여운 강아지와 귀여운, 귀여운 강아지와 귀여운 고양이가, 강아지와 귀여운 고양이가 방에서, 귀여운 고양이가 방에서 잠을, 고양이가 방에서 잠을 자고, 방에서 잠을 자고 있다.
* 가중치 또한 n 처럼 지정하는 것입니다. 각 gram의 보정된 정밀도에 서로 다른 가중치를 줄 수 있습니다.
단, 여기서 모든 가중치의 합은 1이 되어야 합니다. (임의로 각 가중치를 0.25로 설정하여 계산하였습니다.)
4. Brevity Penalty
여기서 끝이 아닙니다..
만약 아래와 같이 예측을 하였다면 과연 잘 예측했다고 할 수 있을까요?
- 정답 문장 : 고양이가 방에서 잠을 자고 있다.
- 예측 문장 : 잠을 자고 있다.
'누가' , '어디서' 잠을 자고 있는지 문장의 중요한 정보를 예측하지 못했기 때문에 이는 잘 예측했다고는 할 수 없습니다.
그렇지만 문장의 n-gram precision을 계산해 보면 생각보다 높은 점수가 나오는 것을 확인할 수 있습니다.
따라서 Brevity Penalty를 주어 예측 문장이 정답 문장의 길이보다 짧을 경우 페널티를 주어 점수를 조절합니다.
반대로 예측 문장이 너무 길어지면? 이 경우도 고려해야 하는 거 아니야?라고 생각할 수 있습니다.
BLEU수식에서 정밀도를 n-gram으로 확장하여 바이그램, 트라이그램 정밀도 등을 모두 계산에 사용하고 있는 것 만으로 이미 페널티를 받고 있어 Brevity Penalty에서 이 부분까지는 고려할 필요가 없다고 합니다.
Brevity Penalty를 주는 것을 한 마디로 이야기 해보자면 " 길게 예측하는 건 괜찮은데(n-gram에서 페널티를 받게됨) 짧게 예측하여 정보가 날아가지 못하도록 하자 " 라고 할 수 있을 것 같습니다.
BLEU는 보정된 정밀도 $p_1,\; p_2\;,\; ...\; p_n$을 모두 조합하여 사용합니다.
따라서, BLEU 식을 아래와 같이 작성할 수 있습니다.
$$p_n = \frac{\sum_{n\_{gram}\in candidate}^{}Count_{clip}(n\_gram)}{\sum_{n\_{gram}\in candidate}^{}Count(n\_gram)}$$
$$BLEU = BP * \prod_{n=1}^{N} {{P}_n} ^ {w_i}$$
$$BP = \left\{\begin{matrix}
1 \; & if \; c > r \\
e^{1-\frac{r}{c}} \; & if \; c\leqslant r \\
\end{matrix}\right.$$
( c는 예측 문장의 길이, r은 정답 문장의 길이) 이를 확장하면? 예측 문장과 길이 차이가 가장 작은 문장의 길이
맨 처음에도 말하였지만 BLEU는 0-1사이의 값을 가지게 되며, 값이 클수록 성능이 좋음을 의미합니다.
+
여러 문장에 대해 BLEU score를 계산할 때는?
$$p_n = \frac{\sum_{sentence}^{}정답\; 문장에\; 존재하는지\; 여부의\; 합계}{\sum_{sentence}^{}예측\; 문장의\; n-gram\; 개수}$$
$$BP = \left\{\begin{matrix}
1 \; & if \; \sum c > \sum r \\
e^{1-\frac{\sum_{}^{}r}{\sum c}} \; & if \; \sum c\leqslant \sum r \\
\end{matrix}\right.$$
'부스트캠프' 카테고리의 다른 글
[Boostcamp] 5주차 회고 (2) | 2023.12.08 |
---|---|
[Boostcamp] 4주차 회고 (0) | 2023.12.01 |
[Boostcamp] 3주차 회고 (3) | 2023.11.24 |
[Boostcamp] 2주차 회고 (0) | 2023.11.17 |
[Boostcamp] 1주차 회고 (0) | 2023.11.10 |