应用程序任务驱动:详细解析LLM的评估指标

news2024/12/28 6:34:59

在自然语言处理(NLP)的动态环境中,大型语言模型(LM)性能的评估是衡量其在各种下游应用程序中的有效性的关键因素。不同的应用程序需要与其目标一致的不同性能指标。本文将详细介绍各种LLM评估指标,探索它们如何应用于实际场景。

从传统的摘要任务到更细致的场景评估,了解用于评估LLM熟练程度的不断发展的方法,揭示了它们的优势、局限性以及在推动NLP研究和应用方面的实际意义。以下是一些常见的文本应用程序任务和相应的评估指标/框架。

1.文本摘要

文本摘要是一种自然语言处理(NLP)任务,旨在将给定文本文档的内容缩减/提炼成更短的版本,同时保留原始文本的最重要信息和整体含义。文本摘要可以使用提取或抽象技术来执行。评估这类系统的一些指标/框架包括:

(1)SUPERT:无监督的多文档摘要评价与生成。它通过评估摘要与伪参考摘要(使用场景化嵌入和软令牌对齐技术,从源文档中选择突出的句子)的语义相似性来评估摘要的质量。

(2)BLANC:它采用一种客观的、可重复的、完全自动化的方法来评估摘要的功能性能。它通过评估预训练的LLM在对文档文本执行语言理解任务时访问文档摘要所获得的性能提升来实现这一点。

(3)FactCC:它使用一种弱监督的、基于模型的方法来验证事实的一致性,并识别源文档和生成摘要之间的冲突。

如下是BLANC指标基本用法的示例代码。

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指标的基本用法示例代码。

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.重叠文本相似性

基于重叠的文本相似性指标通过评估共享单词、短语或n-gram的存在和频率来量化两个文本片段之间的相似性。这些方法简单直接并且计算效率高,但可能无法准确捕获语义相似性,特别是在处理包含同义词、释义或不同单词形式的文本时。评估这类系统的一些指标/框架包括:

(1)BLEU (Bilingual Evaluation Understudy):这是一种广泛使用的基于准确性的指标标准,通过将机器翻译的文本与人类翻译的文本进行比较来评估其质量。BLEU根据参考译文对个别翻译片段进行评分,并将其平均化,以评估整体质量,重点是对应性,而不是可理解性或语法正确性。

(2)ROUGE (Recall-Oriented Understudy for Gisting Evaluation):它侧重于通过将摘要或生成文本与一个或多个参考文本进行比较来评估摘要或生成文本的质量。ROUGE测量生成文本和参考文本之间n-gram (n个项目的连续序列,通常是单词)的重叠。ROUGE包括多种变体,例如ROUGE-N(考虑n-gram重叠),ROUGE-L(测量生成文本和参考文本之间的最长公共子序列)和ROUGE- (考虑加权重叠)。

(3)METEOR (Metric for Evaluation of Translation with Explicit Ordering):这是机器翻译领域中另一个广泛使用的评估指标。与ROUGE和BLEU主要关注n-gram重叠不同,METEOR结合了额外的语言特征,例如词根提取、同义词和词序来评估翻译文本的质量。它计算精度和召回率的调和平均值,赋予两者同等的权重。METEOR还包括对词序差异和未对齐单词的惩罚,以鼓励保持参考翻译的顺序和内容的翻译。

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指标的基本用法示例代码。
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指标的基本用法的样本代码。

3.语义文本相似性

语义文本相似性捕获两段文本的基本语义或含义,而不仅仅是它们的结构重叠。使用自然语言处理(NLP)和机器学习技术,语义文本相似性方法将单词、短语或整个文本段落表示为高维语义空间中的密集、连续向量。评估这类系统的一些指标/框架包括:

(1)BERTScore:它利用预训练的BERT(来自Transformers的双向编码器表示)模型来计算句子或文本段落之间的相似性得分。它基于BERT获得的场景嵌入来计算相似度,BERT通过考虑每个词的周围场景来捕获语义信息,从而对语言生成任务提供更细致的评估。它已经被证明与人类对文本质量的判断有很好的相关性。使用合适的BERT模型变得至关重要,因为它会影响存储空间和分数的准确性。

(2)MoverScore:它通过计算使用最优传输算法将一个段落转换为另一个段落的最小成本来测量两个文本段落之间的语义相似性。它基于分布语义,重点是对齐段落之间单词的分布。通过同时考虑文本的内容和结构,MoverScore提供了一种强大的语义相似性指标,这种指标对词序或词汇选择等表面差异不太敏感。

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指标的基本用法示例代码。

4. RAG(检索-增强-生成)

RAG是一种创新的自然语言处理方法,它结合了基于检索和基于生成的模型的优势。在RAG中,使用大规模预训练的检索器模型从知识源(例如大型文本语料库或知识图)中检索相关场景或段落。然后,这些检索到的段落被用作生成模型(例如语言模型或Transformer)的输入或指导,以产生连贯和场景相关的文本输出。用于评估这种系统的一些指标/框架包括:

(1)RAGAs:RAGAs旨在创建一个开放标准,为开发人员提供工具和技术,以便在他们的RAG应用程序中利用持续学习。RAG允许开发人员综合地生成不同的测试数据集来评估应用程序。它还允许LLM辅助的评估指标客观地评估应用程序的性能。从本质上来说,RAGAs为单独评估RAG管道的每个组件提供了量身定制的指标(例如,生成——可信度和答案相关性,检索——场景精度和召回率)。

a.忠实性:这个指标衡量的是在给定场景生成的答案的事实一致性。它是从答案和检索到的场景计算出来的。答案被缩放到(0,1)的范围。越高越好。

b.答案相关性:这个指标侧重于评估生成的答案与给定提示的相关性。越是不完整或包含冗余信息的答案,得分越低,得分越高表示相关性越好。

c.场景召回:场景召回评估检索结果与注释答案一致的程度,被视为基本事实。

d.场景精度:场景精度这个指标用于评估场景中出现的所有与基本事实相关的项目是否排名更高。在理想情况下,所有相关的块都必须出现在最高级别。

e.场景相关性:这一指标评估检索场景的相关性。根据问题和场景计算,这些值在(0,1)的范围内,值越大表示相关性越好。

f.场景实体召回:它是从ground_truth中召回实体比例的指标。这个指标在基于事实的用例中很有用,例如旅游服务台、历史QA等。

g.答案语义相似度:答案语义相似度的概念涉及对生成的答案与基本事实之间的语义相似度的评估。

h.答案正确性:对答案正确性的评估包括衡量生成答案与基本事实相比较的准确性。

(2)ARES:一种用于检索增强生成系统的自动评估框架

这一自动化过程将合成数据生成与经过微调的分类器相结合,以有效地评估场景相关性、答案忠实性和答案相关性,从而最大限度地减少对大量人工注释的需求。ARES采用综合查询生成和精度性能迭代(PPI),提供具有统计置信度的准确评估。 

 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分数的示例。

5. QA(问答)

这项任务涉及设计算法和模型,以自动生成用自然语言提出的问题的答案。该任务通常包括处理问题,理解其语义,然后在给定的场景或知识库中搜索,以找到可以直接回答该问题的相关信息。它的复杂性可能从简单的基于事实的问题到需要推理和更复杂的场景。

评估这类系统的一些指标/框架包括:

(1)QAEval:QAEval是一种基于问答的指标,用于估计摘要的内容质量。它从参考摘要中生成QA对,然后使用QA模型根据候选摘要回答问题。最终分数是答对问题的部分。

(2)QAFactEval:改进的基于QA的总结事实一致性评估。它建立在QAEval的基础上,具有问题一致性过滤和改进的答案重叠指标,与之前基于SummaC事实一致性基准的QA指标相比,平均提高了14%。

(3)QuestEval:这是一个NLG指标,用于评估两个不同的输入是否包含相同的信息。基于问题生成和回答的指标可以处理多模式和多语言输入。与ROUGE或BERTScore等既定指标相比,QuestEval不需要任何事实真相的参考。

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(命名实体识别)

NER是一种自然语言处理(NLP)任务,涉及识别和分类文本主体中的命名实体。命名实体是指按名称提及的特定实体,例如人员、组织、地点、日期、数值表达式等。

(1)InterpretEval:以NER和CWS任务为例,为NER任务定义了8个属性,为CWS任务定义了7个属性。通过分类,即把他们的整体表现分成不同的类别。这可以通过将测试实体集划分为不同的测试实体子集(关于跨度和句子级属性)或测试令牌(关于令牌级属性)来实现。最后通过统计指标来衡量每个桶的性能。

DeepEval:开源LLM的评估框架

DeepEval是最好的、易于使用的开源LLM评估框架之一。它结合了基于上面讨论的各种指标评估LLM输出的最新研究,其中使用LLM和在机器上本地运行的各种其他NLP模型进行评估。

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的样本摘要指标。

结论

本文探讨了NLP中的各种评估指标和支持框架,研究了它们在每个文本应用程序任务中的实际相关性和含义;认识到评估在塑造语言模型开发中的关键作用,不断完善方法并采用新兴的范式至关重要;了解用于应用程序类型的正确评估指标,并了解能够大规模支持它们的框架,对于开发大规模NLP系统的成功至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1865511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华三中小企业组网

一、组网需求 在中小园区中,S5130系列或S5130S系列以太网交换机通常部署在网络的接入层,S5560X系列或 S6520X系列以太网交换机通常部署在网络的核心,出口路由器一般选用MSR系列路由器。 核心交换机配置VRRP保证网络可靠性。园区网中不同的…

python flask 入门-helloworld

学习视频链接: 01-【前奏】课程介绍_哔哩哔哩_bilibili 1.安装flask pip install flask 踩坑记:本机不要连代理,否则无法install 提示报错valueError: check_hostname requires server_hostname 2.程序编写 在根目录下创建 app.py fr…

深入探讨C++的高级反射机制(2):写个能用的反射库

在现代软件开发中,反射是一种强大的特性,它可以支持程序在运行时查询和调用对象的属性和方法。 但是在C中,没有内置的反射机制。我们可以通过一些巧妙的技术模拟反射的部分功能。 上一篇文章写了个简单的反射功能,这回完善一下&a…

Linux-笔记 OverlayFS文件系统入门

目录 前言 主要概念 工作原理 特点特性 1、上下合并 2、同名文件覆盖 3、同名目录合并 4、写时拷贝 实操入门 内核配置 挂载文件系统 验证 1、同名文件覆盖 2、同名目录合并 3、写时拷贝 1)验证新增文件或目录 2)验证修改文件 3&…

[leetcode]assign-cookies. 分发饼干

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int m g.size(), n s.size();int count 0;for (int i 0, j 0; i…

【嵌入式Linux】i.MX6ULL GPIO 中断服务函数注册与编写

文章目录 1 外部中断初始化与中断服务函数1.2 外部中断初始化函数 exti_init1.2.1 GPIO引脚配置1.2.2 中断使能与注册1.2.3 GIC_EnableIRQ()函数的分析 1.3 中断服务函数 gpio1_io20_irqhandler1.3.1 消抖处理1.3.2 中断事件处理1.3.3 清除中断标志 2 BUG处理2.1 问题描述2.2 解…

【开源项目】自然语言处理领域的明星项目推荐:Hugging Face Transformers

在当今人工智能与大数据飞速发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;已成为推动科技进步的重要力量。而在NLP领域&#xff0c;Hugging Face Transformers无疑是一个备受瞩目的开源项目。本文将从项目介绍、代码解释以及技术特点等角度&#xff0c;为您深…

泰迪智能科技大数据挖掘企业服务平台典型合作案例介绍

泰迪大数据挖掘企业服务平台 是一款通用的、企业级、智能化的数据分析模型构建与数据应用场景设计工具&#xff0c;能够一体化地完成数据集成、模型构建、模型发布&#xff0c;为数据分析、探索、服务流程提供支撑&#xff0c;提供完整的数据探索、多数据源接入、特征处理、模型…

编程设计思想

健康检查脚本 nmap:扫描端口 while true do healthycurl B:httpPORT/healthy -i | grep HTTP/1.1 | tail -n 1 | awk {print $2} done 批量操作类型脚本&#xff08;记录每一步日志&#xff09; 将100个nginx&#xff1a;vn推送到harbor仓库192.168.0.100 根据镜像对比sha值…

高效修复机床导轨磨损,保障加工精度!

机床导轨是支承和引导运动构件沿着一定轨迹运动的传动装置&#xff0c;在机器设备中是个十分重要的部件&#xff0c;在机床中是常见的部件。机床的加工精度与导轨精度有直接的联系&#xff0c;且导轨一旦损坏&#xff0c;维修较复杂且困难。我们简单总结了以下几点对于机床导轨…

rocketMQ消息中间件,onMessage报错,MessageExt of onessage method is not supported

本地启动不会报错&#xff0c;生产者和消费者都运行的好好的&#xff0c;但是打包之后就不断的报错误&#xff0c; 起初以为是maven出现了问题&#xff0c;但是刷新和重写都不管用&#xff0c;并且打的jar包解压后发现类里 有这个类和方法。最后认为是打包出现问题 解决方式&am…

SEO之竞争对手研究

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、新手上云 竞争对手研究是市场竞争研究的重要部分&#xff0c;对判断特定关键词竞争程度及了解行业整体情况非常有价值。…

AutoStudio: 开源 AI 漫画创作神器

AutoStudio是一个用于生成系列连续且一致的图片系统&#xff0c;可用于漫画创作&#xff0c;其核心由四个 Agent 组成&#xff1a; 主题管理器&#xff1a;理解用户对话&#xff0c;跟踪角色信息。 布局生成器&#xff1a;确定图像中角色的位置。 监督者&#xff1a;给出改进…

昇思25天学习打卡营第3天|张量Tensor

张量Tensor 概念创建张量&#xff08;4种方式&#xff09;张量的属性张量索引张量运算Tensor与NumPy转换 概念 张量&#xff08;Tensor&#xff09;是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。张量是MindSpore网络运算中的基本数据结构。 创建张量&#xff08;4…

离线安装docker-v26.1.4,compose-v2.27.0

目录 ​编辑 1.我给大家准备好了提取即可 2.安装docker和compose 3.解压 4.切换目录 5.执行脚本 6.卸载docker和compose 7.执行命令 “如果您在解决类似问题时也遇到了困难&#xff0c;希望我的经验分享对您有所帮助。如果您有任何疑问或者想分享您的经历&#xff0c;…

【Academy】测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities

测试WebSockets安全漏洞Testing for WebSockets security vulnerabilities 概述WebSockets是什么?HTTP和WebSockets有什么区别&#xff1f;如何建立WebSocket连接&#xff1f;WebSocket消息看起来像什么&#xff1f; 操纵WebSocket流量拦截和修改WebSocket消息重放和生成新的W…

揭示优化Prompt的秘诀:如何让API表现媲美网页版

为什么用GPT API&#xff08;GPT-3.5-turbo&#xff09;进行程序分析时&#xff0c;效果好像比网页版的GPT-3.5差一点&#xff1f;这可能有几个原因&#xff0c;咱们细说一下。 1. Prompt不同 这是最常见的问题之一。API调用时的指令&#xff08;prompt&#xff09;往往比较简…

【C#】找不到属性集方法。get只读属性用了反射设置setValue肯定报错

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 背景 找不到属性集方法。get只读属性用了反射设置setValue肯定报错 报错…

Spring Boot 接口一个 JSON 字符串用两个对象去接收,这能行吗?

文章目录 需求场景解决方案Step 1: 创建 Person 和 Address 类Step 2: 创建 PersonWithAddress 类Step 3: 自定义转换器Step 4: 配置转换器Step 5: 使用 RequestBody 接收 JSON 数据 结论 &#x1f389;欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#…

若依项目实战------企业人力资源管理平台

一、数据库名称规范化及建表相关 1.术语名称 1.系统名称&#xff1a;企业人力资源管理平台英文翻译&#xff1a;Enterprise Human Resource Management Platform缩写&#xff1a;EHR 2.员工信息管理&#xff08;Employee Information Management 缩写&#xff1a;EIM&#…