자연어 처리의 평가 메트릭 — BLEU

이 게시물 시리즈에서는 자연어 처리 영역의 사용 사례에 특정한 평가 지표에 대해 논의할 것입니다. NLP에서 가장 일반적인 작업은 자동 요약, 질문 응답, 기계 번역입니다. 이러한 메트릭의 목표는 주어진 입력 텍스트에서 예측된 텍스트의 품질을 식별하는 것입니다. 예상 텍스트를 후보라고 하고 가능한 올바른 텍스트 또는 대상 텍스트를 참조라고 합니다.
이러한 메트릭은 Recall, Precision 및 F1-Score와 같은 일부 기본 메트릭을 기반으로 합니다. 이러한 메트릭에 대해 잘 모르는 경우 이를 다루는 Recall, Precision, F1-Score 기사를 확인하십시오 . n-gram 의 개념은 이러한 지표를 계산하고 이해하는 데에도 필수적입니다.
아래 메트릭은 일반적으로 기계 번역 또는 자동 요약에 사용되지만 입력 및 대상 텍스트 쌍을 포함하는 다른 모든 작업에 적용할 수 있습니다. 모델 평가와 함께 이러한 지표는 머신 러닝 모델의 하이퍼파라미터 튜닝에도 사용할 수 있습니다. 첫 번째 게시물에서는 기계 번역을 평가하는 데 자주 사용되는 BLEU 메트릭에 대해 설명합니다.
이중언어평가학부(BLEU)
BLEU 점수는 일련의 참조와 비교하여 후보라고 하는 예측 텍스트의 품질을 측정합니다. Sequence to Sequence 작업에서 하나의 후보에 대해 하나 이상의 올바른/참조가 있을 수 있습니다. 따라서 참조를 신중하게 선택하고 가능한 모든 참조를 포함하는 것이 중요합니다. BLEU 점수는 정밀도 기반 측정이며 범위는 0에서 1까지입니다. 값이 1에 가까울수록 예측이 더 좋습니다. 1의 값을 달성하는 것은 불가능하며 일반적으로 0.3보다 높은 값은 좋은 점수로 간주됩니다.
다음 섹션에서는 말뭉치에 대한 계산이 뒤따르는 설명을 위해 단일 예측 문장에서 BLEU를 계산하는 것을 볼 수 있습니다.
정도
이전 게시물에서 정밀도의 정의를 기억(의도하지 않은 말장난)하면 True Positives/(True Positives + False Positives)입니다. 이 맥락에서 True Positive는 후보와 참조 간에 일치하는 모든 n-그램입니다. 여기서 False Positive는 후보에는 나타나지만 참조에는 없는 n-그램으로 볼 수 있습니다. 이는 일치하는 n-gram의 수를 후보의 총 n-gram 수로 나누어 정밀도를 얻을 수 있음을 의미합니다.
Reference: "Transformers make everything quick and efficient"
Candidate: "Transformers Transformers Transformers Transformers"
수정 정밀도(MP)
수정된 정밀도를 계산하기 위해 n-gram의 수는 참조에 나타나는 최대 횟수를 기준으로 잘립니다. 아래 공식에서 Max_Ref_Count로 표시됩니다.

이전 섹션의 예에서 Transformers는 참조에 한 번만 나타나고 후보에는 4번 나타납니다. min (4, 1)이 고려되고 수정된 정밀도는 이제 1/4 = 0.25입니다. 이 값은 더 낮으므로 예측 품질에 대한 더 나은 추정치를 제공합니다.
일반화하기 위해 MP의 공식은 다음과 같습니다. 말뭉치의 모든 후보에 대해 참조와 일치하는 n-gram의 수가 계산되고 합산됩니다. 이것은 참조에 있는 모든 n-gram의 개수 합계로 나뉩니다.

간결성 페널티(BP)
때로는 더 긴 문장의 경우 후보자가 매우 작을 수 있으며 참조와 관련된 중요한 정보가 누락될 수 있습니다. 아래 예를 고려하십시오.
Reference: "Transformers make everything quick and efficient through
parallel computation of self-attention heads"
Candidate: "Transformers make everything quick and efficient"
간결성 페널티(BP)를 입력합니다. 이 용어는 참조와 비교할 때 너무 짧은 예측에 불이익을 주는 데 사용됩니다. 후보 길이가 참조 길이보다 크면 1입니다. 후보 길이가 참조가 r/c > 1임을 의미하는 것보다 작으면 (1 — (r/c))가 더 낮고 지수적 감쇠가 있습니다.
N이 계산될 때까지 수정된 모든 정밀도의 기하 평균을 계산하고 BP를 곱하여 최종 BLEU 점수를 얻습니다. 여기서 N은 계산에 사용되는 n-그램 순서입니다. 일반적으로 4입니다. 즉, uni, bi, tri 및 tetra 그램이 모두 계산에 고려됩니다. N을 기준으로 1이 되는 w_1, w_2,…

위의 예문에서 BP가 exp(1 — (reference_length/translation_length)) = exp(1 — (6/12)) = 0.37로 계산되는 것을 볼 수 있습니다. MP(유니그램만 사용하므로 1)를 곱한 이 값은 누락된 n-그램을 설명하는 1이 아닌 0.37이라는 훨씬 낮은 BLEU 점수를 제공합니다.
이 게시물에서는 계산의 용이성을 위해 유니그램을 사용했습니다. 그러나 단어 순서가 여기에서 무시되기 때문에 그들은 종종 후보자를 평가하기에 충분하지 않습니다. 예를 들어, 후보 "Efficient Transformers make quick predictions"는 문장의 의미를 변경하지만 참조에 일치하는 단어가 있으므로 높은 MP 점수(0.6)를 제공합니다. 이를 피하려면 2-4g으로 점수를 평가하는 것이 좋습니다.
코퍼스 BLEU
이해의 편의를 위해 지금까지 단일 텍스트 쌍을 사용했지만 BLEU 점수는 일반적으로 각 후보에 대해 하나 이상의 참조가 있는 전체 말뭉치에 대해 계산됩니다.
이제 아래 말뭉치에 대한 BLEU 점수를 계산해 보겠습니다. 후보가 번역 시스템의 결과라고 가정합니다.
import evaluate
bleu = evaluate.load('bleu')
predictions = ["Transformers Transformers are fast plus efficient",
"Good Morning", "I am waiting for new Transformers"]
references = [
["HuggingFace Transformers are quick, efficient and awesome",
"Transformers are awesome because they are fast to execute"],
["Good Morning Transformers", "Morning Transformers"],
["People are eagerly waiting for new Transformer models",
"People are very excited about new Transformers"]
]
results = bleu.compute(predictions=predictions, references=references,
max_order = 2)
print(results)
{'bleu': 0.5037930378757725,
'precisions': [0.7142857142857143, 0.5454545454545454],
'brevity_penalty': 0.8071177470053892, 'length_ratio': 0.8235294117647058,
'translation_length': 14, 'reference_length': 17}
마찬가지로 출력의 정밀도 배열에서 두 번째 값인 바이그램을 사용하여 수정된 정밀도를 계산합니다.
여기서 가중치는 w_1, w_2는 최대 차수가 2이므로 1/2입니다. 그런 다음 정밀도 값의 기하 평균에 BP를 곱하여 최종 점수를 얻습니다. BP를 계산하기 위한 총 후보 길이는 14(c)이고 유효 참조 길이는 17(r)입니다. 유효 참조 길이는 후보에 더 가까운 참조의 n-gram을 합산하여 계산됩니다. 여기에서 Reference의 경우 1개의 첫 번째 문장이 8개의 토큰으로 선택되고, Reference-2와 3은 두 번째 문장에 2개의 토큰과 7개의 토큰이 있습니다.
최종 BLEU 계산,
Total MP = (0.7142857142857143)^0.5 * (0.5454545454545454)^0.5
Total MP = 0.6241878
Since c < r,
BP = exp(1 - (17/14)) = 0.8071177
BLEU = BP * Total MP = 0.8071177 * 0.6241878 = 0.503793
Rounded BLEU score = 0.5
- BLEU 점수는 계산하기 쉽고 널리 사용됩니다.
- BLEU 점수는 예측 품질에 대한 인간의 판단과 높은 상관관계가 있는 것으로 나타났습니다.
- n-gram의 동의어는 참조 중 하나로 존재하지 않는 한 고려되지 않습니다. 이는 n-gram의 의미가 고려되지 않기 때문입니다. 예를 들어 "트랜스포머는 빠르고 효율적이다"와 "트랜스포머는 실행 시간이 빠르다"는 의미는 비슷하지만 BLEU-1 점수는 0.2에 불과합니다.
- 어순 문제는 고차 n-그램만으로는 해결할 수 없습니다. 예를 들어, "빠르고 효율적인 Transformers는"이라는 후보는 "Transformers are 빠르고 효율적인"이라는 참조는 높은 BLEU-2 점수(0.87)를 제공하지만 번역이 옳다고 간주할 수 없습니다.
- BLEU 점수는 참조 수, 정규화 및 토큰화 기술 등과 같은 요인에 따라 크게 달라집니다. 이러한 이유로 다른 기술을 사용하는 데이터 세트 간 비교에 BLEU 점수를 사용하기는 어렵습니다.
참조
저는 데이터 과학 석사 @ TU Dortmund의 학생입니다. 내 게시물에 대한 피드백이나 전문적인 커뮤니케이션이 필요하면 LinkedIn 에서 나와 연락하세요.