應(yīng)用程序任務(wù)驅(qū)動:詳細(xì)解析LLM的評估指標(biāo) 原創(chuàng)
譯者 | 李睿
審校 | 重樓
在自然語言處理(NLP)的動態(tài)環(huán)境中,大型語言模型(LM)性能的評估是衡量其在各種下游應(yīng)用程序中的有效性的關(guān)鍵因素。不同的應(yīng)用程序需要與其目標(biāo)一致的不同性能指標(biāo)。本文將詳細(xì)介紹各種LLM評估指標(biāo),探索它們?nèi)绾螒?yīng)用于實(shí)際場景。
從傳統(tǒng)的摘要任務(wù)到更細(xì)致的場景評估,了解用于評估LLM熟練程度的不斷發(fā)展的方法,揭示了它們的優(yōu)勢、局限性以及在推動NLP研究和應(yīng)用方面的實(shí)際意義。以下是一些常見的文本應(yīng)用程序任務(wù)和相應(yīng)的評估指標(biāo)/框架。
1.文本摘要
文本摘要是一種自然語言處理(NLP)任務(wù),旨在將給定文本文檔的內(nèi)容縮減/提煉成更短的版本,同時保留原始文本的最重要信息和整體含義。文本摘要可以使用提取或抽象技術(shù)來執(zhí)行。評估這類系統(tǒng)的一些指標(biāo)/框架包括:
(1)SUPERT:無監(jiān)督的多文檔摘要評價與生成。它通過評估摘要與偽參考摘要(使用場景化嵌入和軟令牌對齊技術(shù),從源文檔中選擇突出的句子)的語義相似性來評估摘要的質(zhì)量。
(2)BLANC:它采用一種客觀的、可重復(fù)的、完全自動化的方法來評估摘要的功能性能。它通過評估預(yù)訓(xùn)練的LLM在對文檔文本執(zhí)行語言理解任務(wù)時訪問文檔摘要所獲得的性能提升來實(shí)現(xiàn)這一點(diǎn)。
(3)FactCC:它使用一種弱監(jiān)督的、基于模型的方法來驗(yàn)證事實(shí)的一致性,并識別源文檔和生成摘要之間的沖突。
如下是BLANC指標(biāo)基本用法的示例代碼。
Python
1 >>> from blanc import BlancHelp, BlancTune
2 >>> document = "Jack drove his minivan to the bazaar to purchase milk and honey for his large family."
3 >>> summary = "Jack bought milk and honey."
4 >>> blanc_help = BlancHelp()
5 >>> blanc_tune = BlancTune(finetune_mask_evenly=False, show_progress_bar=False)
6 >>> blanc_help.eval_once(document, summary)
7 0.2222222222222222
8 >>> blanc_tune.eval_once(document, summary)
9 0.3333333333333333
如下是SUPERT指標(biāo)的基本用法示例代碼。
Python
1 from ref_free_metrics.supert import Supert
2 from utils.data_reader import CorpusReader
3
4 # read docs and summaries
5 reader = CorpusReader('data/topic_1')
6 source_docs = reader()
7 summaries = reader.readSummaries()
8
9 # compute the Supert scores
10 supert = Supert(source_docs)
11 scores = supert(summaries)
2.重疊文本相似性
基于重疊的文本相似性指標(biāo)通過評估共享單詞、短語或n-gram的存在和頻率來量化兩個文本片段之間的相似性。這些方法簡單直接并且計算效率高,但可能無法準(zhǔn)確捕獲語義相似性,特別是在處理包含同義詞、釋義或不同單詞形式的文本時。評估這類系統(tǒng)的一些指標(biāo)/框架包括:
(1)BLEU (Bilingual Evaluation Understudy):這是一種廣泛使用的基于準(zhǔn)確性的指標(biāo)標(biāo)準(zhǔn),通過將機(jī)器翻譯的文本與人類翻譯的文本進(jìn)行比較來評估其質(zhì)量。BLEU根據(jù)參考譯文對個別翻譯片段進(jìn)行評分,并將其平均化,以評估整體質(zhì)量,重點(diǎn)是對應(yīng)性,而不是可理解性或語法正確性。
(2)ROUGE (Recall-Oriented Understudy for Gisting Evaluation):它側(cè)重于通過將摘要或生成文本與一個或多個參考文本進(jìn)行比較來評估摘要或生成文本的質(zhì)量。ROUGE測量生成文本和參考文本之間n-gram (n個項(xiàng)目的連續(xù)序列,通常是單詞)的重疊。ROUGE包括多種變體,例如ROUGE-N(考慮n-gram重疊),ROUGE-L(測量生成文本和參考文本之間的最長公共子序列)和ROUGE- (考慮加權(quán)重疊)。
(3)METEOR (Metric for Evaluation of Translation with Explicit Ordering):這是機(jī)器翻譯領(lǐng)域中另一個廣泛使用的評估指標(biāo)。與ROUGE和BLEU主要關(guān)注n-gram重疊不同,METEOR結(jié)合了額外的語言特征,例如詞根提取、同義詞和詞序來評估翻譯文本的質(zhì)量。它計算精度和召回率的調(diào)和平均值,賦予兩者同等的權(quán)重。METEOR還包括對詞序差異和未對齊單詞的懲罰,以鼓勵保持參考翻譯的順序和內(nèi)容的翻譯。
Python
1
2 >>> predictions = ["hello there general kenobi", "foo bar foobar"]
3 >>> references = [
4 ... ["hello there general kenobi", "hello there !"],
5 ... ["foo bar foobar"]
6 ... ]
7 >>> bleu = evaluate.load("bleu")
8 >>> results = bleu.compute(predictions=predictions, references=references)
9 >>> print(results)
10 {'bleu': 1.0, 'precisions': [1.0, 1.0, 1.0, 1.0], 'brevity_penalty': 1.0, 'length_ratio': 1.1666666666666667, 'translation_length': 7, 'reference_length': 6}
11
Huggingface的BLEU指標(biāo)的基本用法示例代碼。
Python
1 >>> rouge = evaluate.load('rouge')
2 >>> predictions = ["hello goodbye", "ankh morpork"]
3 >>> references = ["goodbye", "general kenobi"]
4 >>> results = rouge.compute(predictions=predictions,
5 ... references=references,
6 ... use_aggregator=False)
7 >>> print(list(results.keys()))
8 ['rouge1', 'rouge2', 'rougeL', 'rougeLsum']
9 >>> print(results["rouge1"])
10 [0.5, 0.0]
從Huggingface的ROUGE指標(biāo)的基本用法的樣本代碼。
3.語義文本相似性
語義文本相似性捕獲兩段文本的基本語義或含義,而不僅僅是它們的結(jié)構(gòu)重疊。使用自然語言處理(NLP)和機(jī)器學(xué)習(xí)技術(shù),語義文本相似性方法將單詞、短語或整個文本段落表示為高維語義空間中的密集、連續(xù)向量。評估這類系統(tǒng)的一些指標(biāo)/框架包括:
(1)BERTScore:它利用預(yù)訓(xùn)練的BERT(來自Transformers的雙向編碼器表示)模型來計算句子或文本段落之間的相似性得分。它基于BERT獲得的場景嵌入來計算相似度,BERT通過考慮每個詞的周圍場景來捕獲語義信息,從而對語言生成任務(wù)提供更細(xì)致的評估。它已經(jīng)被證明與人類對文本質(zhì)量的判斷有很好的相關(guān)性。使用合適的BERT模型變得至關(guān)重要,因?yàn)樗鼤绊懘鎯臻g和分?jǐn)?shù)的準(zhǔn)確性。
(2)MoverScore:它通過計算使用最優(yōu)傳輸算法將一個段落轉(zhuǎn)換為另一個段落的最小成本來測量兩個文本段落之間的語義相似性。它基于分布語義,重點(diǎn)是對齊段落之間單詞的分布。通過同時考慮文本的內(nèi)容和結(jié)構(gòu),MoverScore提供了一種強(qiáng)大的語義相似性指標(biāo),這種指標(biāo)對詞序或詞匯選擇等表面差異不太敏感。
Python
1 from evaluate import load
2 bertscore = load("bertscore")
3 predictions = ["hello world", "general kenobi"]
4 references = ["hello world", "general kenobi"]
5 results = bertscore.compute(predictions=predictions, references=references, model_type="distilbert-base-uncased")
6 print(results)
7 {'precision': [1.0, 1.0], 'recall': [1.0, 1.0], 'f1': [1.0, 1.0], 'hashcode': 'distilbert-base-uncased_L5_no-idf_version=0.3.10(hug_trans=4.10.3)'}
8
Huggingface的BERTScore指標(biāo)的基本用法示例代碼。
4. RAG(檢索-增強(qiáng)-生成)
RAG是一種創(chuàng)新的自然語言處理方法,它結(jié)合了基于檢索和基于生成的模型的優(yōu)勢。在RAG中,使用大規(guī)模預(yù)訓(xùn)練的檢索器模型從知識源(例如大型文本語料庫或知識圖)中檢索相關(guān)場景或段落。然后,這些檢索到的段落被用作生成模型(例如語言模型或Transformer)的輸入或指導(dǎo),以產(chǎn)生連貫和場景相關(guān)的文本輸出。用于評估這種系統(tǒng)的一些指標(biāo)/框架包括:
(1)RAGAs:RAGAs旨在創(chuàng)建一個開放標(biāo)準(zhǔn),為開發(fā)人員提供工具和技術(shù),以便在他們的RAG應(yīng)用程序中利用持續(xù)學(xué)習(xí)。RAG允許開發(fā)人員綜合地生成不同的測試數(shù)據(jù)集來評估應(yīng)用程序。它還允許LLM輔助的評估指標(biāo)客觀地評估應(yīng)用程序的性能。從本質(zhì)上來說,RAGAs為單獨(dú)評估RAG管道的每個組件提供了量身定制的指標(biāo)(例如,生成——可信度和答案相關(guān)性,檢索——場景精度和召回率)。
a.忠實(shí)性:這個指標(biāo)衡量的是在給定場景生成的答案的事實(shí)一致性。它是從答案和檢索到的場景計算出來的。答案被縮放到(0,1)的范圍。越高越好。
b.答案相關(guān)性:這個指標(biāo)側(cè)重于評估生成的答案與給定提示的相關(guān)性。越是不完整或包含冗余信息的答案,得分越低,得分越高表示相關(guān)性越好。
c.場景召回:場景召回評估檢索結(jié)果與注釋答案一致的程度,被視為基本事實(shí)。
d.場景精度:場景精度這個指標(biāo)用于評估場景中出現(xiàn)的所有與基本事實(shí)相關(guān)的項(xiàng)目是否排名更高。在理想情況下,所有相關(guān)的塊都必須出現(xiàn)在最高級別。
e.場景相關(guān)性:這一指標(biāo)評估檢索場景的相關(guān)性。根據(jù)問題和場景計算,這些值在(0,1)的范圍內(nèi),值越大表示相關(guān)性越好。
f.場景實(shí)體召回:它是從ground_truth中召回實(shí)體比例的指標(biāo)。這個指標(biāo)在基于事實(shí)的用例中很有用,例如旅游服務(wù)臺、歷史QA等。
g.答案語義相似度:答案語義相似度的概念涉及對生成的答案與基本事實(shí)之間的語義相似度的評估。
h.答案正確性:對答案正確性的評估包括衡量生成答案與基本事實(shí)相比較的準(zhǔn)確性。
(2)ARES:一種用于檢索增強(qiáng)生成系統(tǒng)的自動評估框架
這一自動化過程將合成數(shù)據(jù)生成與經(jīng)過微調(diào)的分類器相結(jié)合,以有效地評估場景相關(guān)性、答案忠實(shí)性和答案相關(guān)性,從而最大限度地減少對大量人工注釋的需求。ARES采用綜合查詢生成和精度性能迭代(PPI),提供具有統(tǒng)計置信度的準(zhǔn)確評估。
Python
1 from datasets import Dataset
2 import os
3 from ragas import evaluate
4 from ragas.metrics import faithfulness, answer_correctness
5
6 os.environ["OPENAI_API_KEY"] = "your-openai-key"
7
8 data_samples = {
9 'question': ['When was the first super bowl?', 'Who won the most super bowls?'],
10 'answer': ['The first superbowl was held on Jan 15, 1967', 'The most super bowls have been won by The New England Patriots'],
11 'contexts' : [['The First AFL–NFL World Championship Game was an American football game played on January 15, 1967, at the Los Angeles Memorial Coliseum in Los Angeles,'],
12 ['The Green Bay Packers...Green Bay, Wisconsin.','The Packers compete...Football Conference']],
13 'ground_truth': ['The first superbowl was held on January 15, 1967', 'The New England Patriots have won the Super Bowl a record six times']
14 }
15
16 dataset = Dataset.from_dict(data_samples)
17
18 score = evaluate(dataset,metrics=[faithfulness,answer_correctness])
19 score.to_pandas()
RAG忠誠度的例子。
Python
1 from ares import ARES
2
3 ues_idp_config = {
4 "in_domain_prompts_dataset": "nq_few_shot_prompt_for_judge_scoring.tsv",
5 "unlabeled_evaluation_set": "nq_unlabeled_output.tsv",
6 "model_choice" : "gpt-3.5-turbo-0125"
7 }
8
9 ares = ARES(ues_idp=ues_idp_config)
10 results = ares.ues_idp()
11 print(results)
12 # {'Context Relevance Scores': [Score], 'Answer Faithfulness Scores': [Score], 'Answer Relevance Scores': [
使用ARES檢索GPT3.5的UES/IDP分?jǐn)?shù)的示例。
5. QA(問答)
這項(xiàng)任務(wù)涉及設(shè)計算法和模型,以自動生成用自然語言提出的問題的答案。該任務(wù)通常包括處理問題,理解其語義,然后在給定的場景或知識庫中搜索,以找到可以直接回答該問題的相關(guān)信息。它的復(fù)雜性可能從簡單的基于事實(shí)的問題到需要推理和更復(fù)雜的場景。
評估這類系統(tǒng)的一些指標(biāo)/框架包括:
(1)QAEval:QAEval是一種基于問答的指標(biāo),用于估計摘要的內(nèi)容質(zhì)量。它從參考摘要中生成QA對,然后使用QA模型根據(jù)候選摘要回答問題。最終分?jǐn)?shù)是答對問題的部分。
(2)QAFactEval:改進(jìn)的基于QA的總結(jié)事實(shí)一致性評估。它建立在QAEval的基礎(chǔ)上,具有問題一致性過濾和改進(jìn)的答案重疊指標(biāo),與之前基于SummaC事實(shí)一致性基準(zhǔn)的QA指標(biāo)相比,平均提高了14%。
(3)QuestEval:這是一個NLG指標(biāo),用于評估兩個不同的輸入是否包含相同的信息。基于問題生成和回答的指標(biāo)可以處理多模式和多語言輸入。與ROUGE或BERTScore等既定指標(biāo)相比,QuestEval不需要任何事實(shí)真相的參考。
Python
1 from qafacteval import QAFactEval
2 kwargs = {"cuda_device": 0, "use_lerc_quip": True, \
3 "verbose": True, "generation_batch_size": 32, \
4 "answering_batch_size": 32, "lerc_batch_size": 8}
5
6 model_folder = "" # path to models downloaded with download_models.sh
7 metric = QAFactEval(
8 lerc_quip_path=f"{model_folder}/quip-512-mocha",
9 generation_model_path=f"{model_folder}/generation/model.tar.gz",
10 answering_model_dir=f"{model_folder}/answering",
11 lerc_model_path=f"{model_folder}/lerc/model.tar.gz",
12lerc_pretrained_model_path=f"{model_folder}/lerc/pretraining.tar.gz",
13 **kwargs
14 )
15
16 results = metric.score_batch_qafacteval(["This is a source document"], [["This is a summary."]], return_qa_pairs=True)
17 score = results[0][0]['qa-eval']['lerc_quip']
18
QAFactEval的示例。
6. NER(命名實(shí)體識別)
NER是一種自然語言處理(NLP)任務(wù),涉及識別和分類文本主體中的命名實(shí)體。命名實(shí)體是指按名稱提及的特定實(shí)體,例如人員、組織、地點(diǎn)、日期、數(shù)值表達(dá)式等。
(1)InterpretEval:以NER和CWS任務(wù)為例,為NER任務(wù)定義了8個屬性,為CWS任務(wù)定義了7個屬性。通過分類,即把他們的整體表現(xiàn)分成不同的類別。這可以通過將測試實(shí)體集劃分為不同的測試實(shí)體子集(關(guān)于跨度和句子級屬性)或測試令牌(關(guān)于令牌級屬性)來實(shí)現(xiàn)。最后通過統(tǒng)計指標(biāo)來衡量每個桶的性能。
DeepEval:開源LLM的評估框架
DeepEval是最好的、易于使用的開源LLM評估框架之一。它結(jié)合了基于上面討論的各種指標(biāo)評估LLM輸出的最新研究,其中使用LLM和在機(jī)器上本地運(yùn)行的各種其他NLP模型進(jìn)行評估。
Python
1 from deepeval import evaluate
2 from deepeval.metrics import SummarizationMetric
3 from deepeval.test_case import LLMTestCase
4 ...
5
6 test_case = LLMTestCase(input=input, actual_output=actual_output)
7 metric = SummarizationMetric(
8 threshold=0.5,
9 model="gpt-4",
10 assessment_questions=[
11 "Is the coverage score based on a percentage of 'yes' answers?",
12 "Does the score ensure the summary's accuracy with the source?",
13 "Does a higher score mean a more comprehensive summary?"
14 ]
15 )
16
17 metric.measure(test_case)
18 print(metric.score)
19 print(metric.reason)
20
21 # or evaluate test cases in bulk
22 evaluate([test_case], [metric])
來自DeepEval的樣本摘要指標(biāo)。
結(jié)論
本文探討了NLP中的各種評估指標(biāo)和支持框架,研究了它們在每個文本應(yīng)用程序任務(wù)中的實(shí)際相關(guān)性和含義;認(rèn)識到評估在塑造語言模型開發(fā)中的關(guān)鍵作用,不斷完善方法并采用新興的范式至關(guān)重要;了解用于應(yīng)用程序類型的正確評估指標(biāo),并了解能夠大規(guī)模支持它們的框架,對于開發(fā)大規(guī)模NLP系統(tǒng)的成功至關(guān)重要。
原文標(biāo)題:Application Task Driven: LLM Evaluation Metrics in Detail,作者:Sapan Patel
鏈接:https://dzone.com/articles/llm-evaluation-metrics-in-detail-based-on-text-app
