引言大型语言模型基准测试LLM排行榜评估指标传统指标非传统指标 基于嵌入的方法LLM辅助方法LLM辅助方法中可能的陷阱评估基于LLM的应用选择评估指标评估评估方法!构建评估数据集开源库OpenAI EvalsRagas挑战结论参考文献
引言
大型语言模型的出现为解决先前被认为不可能的问题开辟了新的途径。大量的基于LLM的应用就是明证,如今我们有多种开放和封闭的LLM可用。但一个问题仍然是个谜,如何有效地评估基于LLM的应用?
本文是我探索好奇心以回答这个问题而撰写的。我们将从理解用于LLM基准测试的方法开始,讨论SOTA方法、案例研究以及评估LLM应用的挑战。
大型语言模型基准测试
LLM主要在一组通用的数据集上进行评估,以分析其在各种任务中的能力,如摘要、开放式问答等。如表中所示,有几个公开的基准测试可用。LLM基准测试中使用的指标随任务而异。大多数任务使用传统指标(例如精确匹配)进行评估,我们将在下一节介绍这些指标。
基准测试 | 任务数量 |
214 | |
200+ | |
9 | |
9 | |
57 (科目) | |
ㅤ | |
400 |
使用这些基准测试的一个主要担忧是,模型可能在训练或微调阶段接触过这些数据集。这违反了测试集应独立于训练数据的基本规则。
[提及第一部分,可随意跳至LLM应用评估或非传统方法]
LLM排行榜
LLM排行榜为不同的基础LLM和指令微调LLM提供了动态基准。基础LLM在公开数据集上进行评估,而其指令微调版本则主要使用基于Elo的评分系统进行评估。
- Open LLM排行榜:提供了LM evaluation harness的封装
- HELM:在各种公开数据集和指标上评估了开放LLM。
- Chatbot Arena:指令微调LLM的Elo评分
评估指标
LLM的评估指标大致可分为传统指标和非传统指标。传统评估指标依赖于文本中词语和短语的排列和顺序,并在存在参考文本(真实值)用于比较预测结果时结合使用。非传统指标利用语言模型本身的语义结构和能力来评估生成的文本。这些技术可以在有无参考文本的情况下使用。
传统指标
在本节中,我们将回顾一些流行的传统指标及其用例。这些指标在字符/词语/短语级别上进行操作。
- WER (词错误率):这是一系列基于WER的指标,用于衡量编辑距离 𝑑 (𝑐, 𝑟),即转换候选文本到参考字符串所需的插入、删除、替换以及可能的换位次数。
- 精确匹配:通过将生成的文本与参考文本进行匹配来衡量候选文本的准确性。任何与参考文本的偏差都将被视为不正确。这仅适用于需要从原文提取答案或简短回答的情况,其中预计与参考文本偏差很小或没有偏差。
- BLEU (双语评估替补):它基于生成的文本中有多少n-gram出现在参考文本中来评估候选文本。这最初是为评估机器翻译系统而提出的。可以使用几何平均(BLEU-N)计算并组合多个n-gram分数(2-gram/3-gram)。由于它是基于精确度的指标,因此不会惩罚假阴性。
- ROGUE (面向召回的摘要评估替补):这与BLEU-N计算n-gram匹配的方式相似,但基于召回率。ROGUE的一种变体ROUGE-L衡量一对句子之间的最长公共子序列(LCS)。
除了这些之外,还有其他指标,如METEOR、通用文本匹配器(GTM)等。这些指标有很大限制,与大型语言模型当前的生成能力不符。尽管这些指标目前仅适用于提供简短、提取式或多项选择答案的任务和数据集,但这些方法或其派生方法仍然在许多基准测试中用作评估指标。
非传统指标
用于评估生成文本的非传统指标可进一步分为基于嵌入的方法和LLM辅助方法。基于嵌入的方法利用深度学习模型生成的词元或句子向量,而LLM辅助方法则形成范式并利用语言模型的能力来评估候选文本。
基于嵌入的方法
这里的关键思想是利用深度学习模型生成的文本向量表示,这些向量包含丰富的语义和句法信息,用于比较候选文本与参考文本。候选文本与参考文本的相似度使用余弦相似度等方法进行量化。
- BERTScore:这是一种基于双编码器的方法,即将候选文本和参考文本分别输入到深度学习模型中以获得嵌入向量。然后使用词元级别的嵌入向量计算成对余弦相似度矩阵。然后选择参考文本中最相似词元与候选文本的相似度分数,并用于计算精确率、召回率和f1分数。
- MoverScore:使用了词语移动距离的概念,该概念认为嵌入式词向量之间的距离在某种程度上具有语义意义(vector(king) - vector(queen) = vector(man)),并使用上下文嵌入向量计算n-gram之间的欧氏相似度。与BERTscore允许词语一对一硬匹配不同,MoverScore使用软/部分对齐,允许多对一匹配。
- 蕴含分数:这种方法利用语言模型的自然语言推理能力来判断NLG(自然语言生成)。这种方法有不同的变体,但基本概念是使用NLI模型生成针对参考文本的蕴含分数来评价生成文本。对于文本限定的生成任务(如文本摘要),这种方法对于确保忠实度非常有用。
- BLEURT:引入了一种方法,通过在大量合成数据上预训练一个完全学习的指标,然后在人工评分上进行微调,以结合表达能力和鲁棒性。该方法利用BERT模型来实现这一点。为了使该模型能够评估任何新任务或领域,提出了一种新的预训练方法,包括对合成数据进行额外的预训练。从维基百科收集文本片段,然后通过词语替换、反向翻译等技术进行增强,形成合成对 ,然后在BLUE、ROGUE分数、反向翻译概率、自然语言推理等目标上进行训练。
- 问答-问题生成 (QA-QG):此范式可用于衡量任何候选文本与参考文本的一致性。该方法首先从候选文本中形成(候选答案,问题)对,然后将参考文本对相同问题集生成的答案进行比较和验证。
尽管基于嵌入的方法很鲁棒,但它们假设训练和测试数据是同分布的,这并非总是如此。
基于语言模型的指标
LLM辅助方法
顾名思义,本节讨论的方法利用大型语言模型来评估LLM的生成结果。这里的注意事项是利用LLM的能力并形成范式,以最大程度地减少LLM可能存在的各种偏差的影响,例如偏好自己的输出而非其他LLM的输出。
GPTScore 是最早将LLM用作评估器的方法之一。这项工作探索了LLM评估生成文本多个方面的能力,例如信息性、相关性等。这需要为每个期望的方面定义一个合适的评估模板 。该方法假设LLM会为更高质量的生成结果分配更高的词元概率,并使用生成目标文本(假设)的条件概率作为评估指标。对于任何给定的提示 d、候选响应 h、上下文 S 和方面 a,GPT-score由下式给出
G-Eval 也是一种与GPTscore非常相似的方法,因为它是基于标准评估生成文本的,但与GPTscore不同的是,它通过明确指示模型在0到5的范围内为生成的文本分配分数来进行直接评估。众所周知,LLM在分数分配时存在一些偏差,例如偏好整数分数,以及在给定范围内偏好特定数字(例如0-5分制中的3)。为了解决这个问题,输出分数乘以词元概率
尽管这两种方法都可以用于多方面评估,包括事实性,但SelfCheckGPT提出了一种更好的无需参考文本即可检测和量化幻觉的方法,该方法利用了一个简单的思想:如果LLM了解某个给定概念,则抽样的响应可能相似且包含一致的事实。为了衡量生成响应之间的信息一致性,可以使用QA-QG范式、BERTScore、蕴含分数、n-gram等方法。
LLM辅助方法中可能的陷阱
评估自然语言生成仍然是一个开放的研究领域。随着高能力大型语言模型的出现,趋势正朝着使用LLM本身来评估NLG的方向发展。虽然这种方法已显示出与人类判断有高度相关性 (ChatGPT是好的NLG评估器吗?) 这种方法存在一些问题
- 一项初步研究) 一些研究揭示了这种方法的陷阱。《大型语言模型不是公平的评估器》等研究表明,LLM存在位置偏差,因此它偏好特定位置的响应为更好。
- LLM在为候选响应分配分数时也倾向于偏好整数。
- LLM本质上也是随机的,这导致它们在单独调用时会为相同的输出分配不同的分数。
- 在用于比较答案时,发现GPT4偏好其自身的回答风格,甚至胜过人工编写的答案。
评估基于LLM的应用
选择评估指标
LLM应用的评估指标根据交互模式和预期答案类型进行选择。与LLM交互主要有三种形式
- 知识探索:向LLM提供问题或指令,并期望得到真实的答案。例如,印度的人口是多少?
- 文本限定:向LLM提供文本和指令,并期望答案完全基于给定的文本。例如,总结给定的文本..
- 创意:向LLM提供问题或指令,并期望得到富有创意的答案。例如,写一个关于阿育王王子的故事。
对于每种交互或任务,预期答案的类型可以是提取式、概括式、简短形式、长篇形式或多项选择。
例如,对于LLM在科技论文摘要(文本限定+概括式)中的应用,结果与原始文档的忠实度和一致性非常重要且不易衡量。
评估评估方法!
一旦你制定了适合你的应用的评估策略,你应该在相信它能够量化你的实验性能之前,先评估你的策略。评估策略通过量化其与人类判断的相关性来评估。
- 获取或标注包含人工评分基准的测试集
- 使用你的方法对测试集中的生成结果进行评分。
- 使用Kendall秩相关系数等相关性度量来衡量人工评分与自动评分之间的相关性。
通常认为评分高于或接近0.7是足够好的。这也可以用来提高你的评估策略的有效性。
构建评估数据集
为任何ML问题构建评估集时需要确保的两个基本标准是
- 数据集应足够大,以产生统计学上显著的结果
- 它应尽可能全面地代表在生产环境中预期的数据。
基于LLM的应用构建评估集可以逐步进行。还可以利用LLM通过少样本提示来生成评估集的查询,auto-evaluator等工具可以提供帮助。
构建带真实值的评估集既昂贵又耗时,并且针对数据漂移维护此类人工标注的黄金测试集是一项非常具有挑战性的任务。如果无监督的LLM辅助方法与你的目标相关性不高,可以尝试这种方法。参考答案的存在有助于提高评估在某些方面(如事实性)的有效性。
开源库
OpenAI Evals
Evals 是一个用于评估LLM生成结果的开源框架。使用此框架,你可以根据你定义的参考真实值评估指令的完成情况。它提供了修改和添加数据集以及新完成结果(例如,思维链)的灵活性。评估数据集应采用所示格式
{"input": [{"role": "system", "content": "Complete the phrase as concisely as possible."}, {"role": "user", "content": "ABC AI is a company specializing in ML "}], "ideal": "observability"}
精确匹配等指标用于计算完成结果的准确性。
Ragas
Ragas 是一个开源评估库,旨在增强LLM应用的评估能力。它使用最先进的LLM辅助方法,通过自动化指标量化LLM应用的性能。你也可以使用它评估使用llama_index等框架构建的管道的性能,而无需带标注的评估数据集。
from ragas.metrics import LLMContextRecall, Faithfulness, FactualCorrectness from langchain_openai.chat_models import ChatOpenAI from ragas.llms import LangchainLLMWrapper evaluator_llm = LangchainLLMWrapper(ChatOpenAI(model="gpt-4o")) metrics = [LLMContextRecall(), FactualCorrectness(), Faithfulness()] results = evaluate(dataset=eval_dataset, metrics=metrics, llm=evaluator_llm)
挑战
评估自然语言生成仍然是一个开放的研究领域。我们希望在此评估的许多属性非常主观,例如无害性、有用性等,而且在预定义的一组带标注任务之外衡量事实性是一项非常具有挑战性的任务。对于企业而言,由于数据和概念漂移等因素,构建和维护此类评估数据集也可能非常昂贵和耗时。
结论
在产品化之前评估基于LLM的应用应该是LLM工作流程的关键部分。这将作为质量检查,并帮助你随时间推移改进你的管道性能。通过本文,我们讨论并回顾了你可以通过哪些方式来实现这一目标的大多数方法。请在评论区告诉我你的想法,如果你喜欢类似的内容,请在Twitter上与我保持联系。