譯者 | 李睿
審校 | 重樓
在自然語言處理(NLP)的動態(tài)環(huán)境中,大型語言模型(LM)性能的評估是衡量其在各種下游應(yīng)用程序中的有效性的關(guān)鍵因素。不同的應(yīng)用程序需要與其目標(biāo)一致的不同性能指標(biāo)。本文將詳細介紹各種LLM評估指標(biāo),探索它們?nèi)绾螒?yīng)用于實際場景。
從傳統(tǒng)的摘要任務(wù)到更細致的場景評估,了解用于評估LLM熟練程度的不斷發(fā)展的方法,揭示了它們的優(yōu)勢、局限性以及在推動NLP研究和應(yīng)用方面的實際意義。以下是一些常見的文本應(yīng)用程序任務(wù)和相應(yīng)的評估指標(biāo)/框架。
文本摘要是一種自然語言處理(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ù)時訪問文檔摘要所獲得的性能提升來實現(xiàn)這一點。
(3)FactCC:它使用一種弱監(jiān)督的、基于模型的方法來驗證事實的一致性,并識別源文檔和生成摘要之間的沖突。
如下是BLANC指標(biāo)基本用法的示例代碼。
1 >>> from blanc import BlancHelp, BlancTune2 >>> 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.22222222222222228 >>> blanc_tune.eval_once(document, summary)9 0.3333333333333333如下是SUPERT指標(biāo)的基本用法示例代碼。
1 from ref_free_metrics.supert import Supert2 from utils.data_reader import CorpusReader34 # read docs and summaries5 reader = CorpusReader('data/topic_1')6 source_docs = reader()7 summaries = reader.readSummaries() 89 # compute the Supert scores10 supert = Supert(source_docs) 11 scores = supert(summaries)基于重疊的文本相似性指標(biāo)通過評估共享單詞、短語或n-gram的存在和頻率來量化兩個文本片段之間的相似性。這些方法簡單直接并且計算效率高,但可能無法準(zhǔn)確捕獲語義相似性,特別是在處理包含同義詞、釋義或不同單詞形式的文本時。評估這類系統(tǒng)的一些指標(biāo)/框架包括:
(1)BLEU (Bilingual Evaluation Understudy):這是一種廣泛使用的基于準(zhǔn)確性的指標(biāo)標(biāo)準(zhǔn),通過將機器翻譯的文本與人類翻譯的文本進行比較來評估其質(zhì)量。BLEU根據(jù)參考譯文對個別翻譯片段進行評分,并將其平均化,以評估整體質(zhì)量,重點是對應(yīng)性,而不是可理解性或語法正確性。
(2)ROUGE (Recall-Oriented Understudy for Gisting Evaluation):它側(cè)重于通過將摘要或生成文本與一個或多個參考文本進行比較來評估摘要或生成文本的質(zhì)量。ROUGE測量生成文本和參考文本之間n-gram (n個項目的連續(xù)序列,通常是單詞)的重疊。ROUGE包括多種變體,例如ROUGE-N(考慮n-gram重疊),ROUGE-L(測量生成文本和參考文本之間的最長公共子序列)和ROUGE- (考慮加權(quán)重疊)。
(3)METEOR (Metric for Evaluation of Translation with Explicit Ordering):這是機器翻譯領(lǐng)域中另一個廣泛使用的評估指標(biāo)。與ROUGE和BLEU主要關(guān)注n-gram重疊不同,METEOR結(jié)合了額外的語言特征,例如詞根提取、同義詞和詞序來評估翻譯文本的質(zhì)量。它計算精度和召回率的調(diào)和平均值,賦予兩者同等的權(quán)重。METEOR還包括對詞序差異和未對齊單詞的懲罰,以鼓勵保持參考翻譯的順序和內(nèi)容的翻譯。
12 >>> 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}11Huggingface的BLEU指標(biāo)的基本用法示例代碼。
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)的基本用法的樣本代碼。
語義文本相似性捕獲兩段文本的基本語義或含義,而不僅僅是它們的結(jié)構(gòu)重疊。使用自然語言處理(NLP)和機器學(xué)習(xí)技術(shù),語義文本相似性方法將單詞、短語或整個文本段落表示為高維語義空間中的密集、連續(xù)向量。評估這類系統(tǒng)的一些指標(biāo)/框架包括:
(1)BERTScore:它利用預(yù)訓(xùn)練的BERT(來自Transformers的雙向編碼器表示)模型來計算句子或文本段落之間的相似性得分。它基于BERT獲得的場景嵌入來計算相似度,BERT通過考慮每個詞的周圍場景來捕獲語義信息,從而對語言生成任務(wù)提供更細致的評估。它已經(jīng)被證明與人類對文本質(zhì)量的判斷有很好的相關(guān)性。使用合適的BERT模型變得至關(guān)重要,因為它會影響存儲空間和分數(shù)的準(zhǔn)確性。
(2)MoverScore:它通過計算使用最優(yōu)傳輸算法將一個段落轉(zhuǎn)換為另一個段落的最小成本來測量兩個文本段落之間的語義相似性。它基于分布語義,重點是對齊段落之間單詞的分布。通過同時考慮文本的內(nèi)容和結(jié)構(gòu),MoverScore提供了一種強大的語義相似性指標(biāo),這種指標(biāo)對詞序或詞匯選擇等表面差異不太敏感。
1 from evaluate import load2 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)'}8Huggingface的BERTScore指標(biāo)的基本用法示例代碼。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為單獨評估RAG管道的每個組件提供了量身定制的指標(biāo)(例如,生成——可信度和答案相關(guān)性,檢索——場景精度和召回率)。
a.忠實性:這個指標(biāo)衡量的是在給定場景生成的答案的事實一致性。它是從答案和檢索到的場景計算出來的。答案被縮放到(0,1)的范圍。越高越好。
b.答案相關(guān)性:這個指標(biāo)側(cè)重于評估生成的答案與給定提示的相關(guān)性。越是不完整或包含冗余信息的答案,得分越低,得分越高表示相關(guān)性越好。
c.場景召回:場景召回評估檢索結(jié)果與注釋答案一致的程度,被視為基本事實。
d.場景精度:場景精度這個指標(biāo)用于評估場景中出現(xiàn)的所有與基本事實相關(guān)的項目是否排名更高。在理想情況下,所有相關(guān)的塊都必須出現(xiàn)在最高級別。
e.場景相關(guān)性:這一指標(biāo)評估檢索場景的相關(guān)性。根據(jù)問題和場景計算,這些值在(0,1)的范圍內(nèi),值越大表示相關(guān)性越好。
f.場景實體召回:它是從ground_truth中召回實體比例的指標(biāo)。這個指標(biāo)在基于事實的用例中很有用,例如旅游服務(wù)臺、歷史QA等。
g.答案語義相似度:答案語義相似度的概念涉及對生成的答案與基本事實之間的語義相似度的評估。
h.答案正確性:對答案正確性的評估包括衡量生成答案與基本事實相比較的準(zhǔn)確性。
(2)ARES:一種用于檢索增強生成系統(tǒng)的自動評估框架
這一自動化過程將合成數(shù)據(jù)生成與經(jīng)過微調(diào)的分類器相結(jié)合,以有效地評估場景相關(guān)性、答案忠實性和答案相關(guān)性,從而最大限度地減少對大量人工注釋的需求。ARES采用綜合查詢生成和精度性能迭代(PPI),提供具有統(tǒng)計置信度的準(zhǔn)確評估。
1 from datasets import Dataset 2 import os3 from ragas import evaluate4 from ragas.metrics import faithfulness, answer_correctness56 os.environ["OPENAI_API_KEY"] = "your-openai-key"78 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 }1516 dataset = Dataset.from_dict(data_samples)1718 score = evaluate(dataset,metrics=[faithfulness,answer_correctness])19 score.to_pandas()RAG忠誠度的例子。Python 1 from ares import ARES23 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 } 89 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分數(shù)的示例。
這項任務(wù)涉及設(shè)計算法和模型,以自動生成用自然語言提出的問題的答案。該任務(wù)通常包括處理問題,理解其語義,然后在給定的場景或知識庫中搜索,以找到可以直接回答該問題的相關(guān)信息。它的復(fù)雜性可能從簡單的基于事實的問題到需要推理和更復(fù)雜的場景。
評估這類系統(tǒng)的一些指標(biāo)/框架包括:
(1)QAEval:QAEval是一種基于問答的指標(biāo),用于估計摘要的內(nèi)容質(zhì)量。它從參考摘要中生成QA對,然后使用QA模型根據(jù)候選摘要回答問題。最終分數(shù)是答對問題的部分。
(2)QAFactEval:改進的基于QA的總結(jié)事實一致性評估。它建立在QAEval的基礎(chǔ)上,具有問題一致性過濾和改進的答案重疊指標(biāo),與之前基于SummaC事實一致性基準(zhǔn)的QA指標(biāo)相比,平均提高了14%。
(3)QuestEval:這是一個NLG指標(biāo),用于評估兩個不同的輸入是否包含相同的信息?;趩栴}生成和回答的指標(biāo)可以處理多模式和多語言輸入。與ROUGE或BERTScore等既定指標(biāo)相比,QuestEval不需要任何事實真相的參考。
1 from qafacteval import QAFactEval2 kwargs = {"cuda_device": 0, "use_lerc_quip": True, /3 "verbose": True, "generation_batch_size": 32, /4 "answering_batch_size": 32, "lerc_batch_size": 8}56 model_folder = "" # path to models downloaded with download_models.sh7 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 **kwargs14 )1516 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']18QAFactEval的示例。
NER是一種自然語言處理(NLP)任務(wù),涉及識別和分類文本主體中的命名實體。命名實體是指按名稱提及的特定實體,例如人員、組織、地點、日期、數(shù)值表達式等。
(1)InterpretEval:以NER和CWS任務(wù)為例,為NER任務(wù)定義了8個屬性,為CWS任務(wù)定義了7個屬性。通過分類,即把他們的整體表現(xiàn)分成不同的類別。這可以通過將測試實體集劃分為不同的測試實體子集(關(guān)于跨度和句子級屬性)或測試令牌(關(guān)于令牌級屬性)來實現(xiàn)。最后通過統(tǒng)計指標(biāo)來衡量每個桶的性能。
DeepEval:開源LLM的評估框架
DeepEval是最好的、易于使用的開源LLM評估框架之一。它結(jié)合了基于上面討論的各種指標(biāo)評估LLM輸出的最新研究,其中使用LLM和在機器上本地運行的各種其他NLP模型進行評估。
1 from deepeval import evaluate2 from deepeval.metrics import SummarizationMetric3 from deepeval.test_case import LLMTestCase4 ...56 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 )1617 metric.measure(test_case)18 print(metric.score)19 print(metric.reason)2021 # or evaluate test cases in bulk22 evaluate([test_case], [metric])來自DeepEval的樣本摘要指標(biāo)。
本文探討了NLP中的各種評估指標(biāo)和支持框架,研究了它們在每個文本應(yīng)用程序任務(wù)中的實際相關(guā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
本文鏈接:http://m.www897cc.com/showinfo-26-96052-0.html應(yīng)用程序任務(wù)驅(qū)動:詳細解析LLM的評估指標(biāo)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: C++正在失去人氣嗎
下一篇: 編寫干凈高效Python代碼的七個策略