All about evaluating Large language models

关于评估大型语言模型的一切

标签
LLM
评估
发布日期
2024年7月9日
作者
Shahul Es
 

引言

 
大型语言模型(LLM)的出现为解决以前认为不可能的问题开辟了新途径。大量基于 LLM 的应用证明了这一点,如今我们有多种开放和封闭的 LLM 可用。但一个问题仍然是个谜:如何有效评估基于 LLM 的应用?
这篇文章是我为回答这个问题而进行探索的结果。我们将从理解用于对 LLM 进行基准测试的方法开始,讨论 SOTA 方法、案例研究以及评估 LLM 应用中的挑战。
 

大型语言模型基准测试

LLM 主要在一组通用数据集上进行评估,以分析其在执行各种任务(如摘要、开卷问答等)方面的能力。有几个公开的基准可供使用,如下表所示。用于 LLM 基准测试的指标因任务而异。大多数任务都使用传统指标进行评估,如精确匹配,我们将在下一节中介绍。
 
基准
任务数量
214
200+
9
9
57 (科目)
400
使用这些基准的一个主要担忧是,模型可能在训练或微调阶段接触过这些数据集。这违反了测试集应与训练数据互斥的基本规则。
[提及第一部分,您可以随意跳到 LLM 应用评估或非传统指标部分]
 

LLM 排行榜

LLM 排行榜为不同的基础模型和指令微调的 LLM 提供了一个动态的基准。虽然基础 LLM 是在开放数据集上进行评估的,但它们的指令微调版本大多使用基于 Elo 的评级系统进行评估。
  • Open LLM leaderboard: 在 LM evaluation harness 之上提供了一个包装器
  • HELM: 在各种开放数据集和指标上评估了开放 LLM。
  • Chatbot Arena: 指令微调 LLM 的 Elo 评级
notion image
 

评估指标

LLM 的评估指标可以大致分为传统指标和非传统指标。传统评估指标依赖于文本中单词和短语的排列和顺序,通常在存在参考文本(标准答案)以进行比较预测的情况下使用。非传统指标利用语言模型本身的语义结构和能力来评估生成的文本。这些技术可以在有或没有参考文本的情况下使用。
notion image

传统指标

在本节中,我们将回顾一些流行的传统指标及其用例。这些指标在字符/词/短语级别上运行。
  • WER (词错误率):有一系列基于 WER 的指标,它们测量编辑距离 𝑑 (𝑐, 𝑟),即,将候选字符串转换为参考字符串所需的插入、删除、替换以及可能的换位次数。
  • 精确匹配:通过将生成的文本与参考文本进行匹配来衡量候选文本的准确性。任何与参考文本的偏差都将被视为不正确。这仅适用于抽取式和简短形式的答案,其中期望与参考文本的偏差最小或没有偏差。
  • BLEU (双语评估替补):它根据生成文本中有多少 n-gram 出现在参考文本中来评估候选文本。这最初是为评估机器翻译系统而提出的。可以计算多个 n-gram 分数(2-gram/3-gram)并使用几何平均值(BLEU-N)进行组合。由于它是基于精确度的指标,因此不会惩罚假阴性。
notion image
  • ROUGE (面向召回的要点评估替补):这与 BLEU-N 在计算 n-gram 匹配方面类似,但是基于召回率。ROUGE 的一个变体 ROUGE-L 测量一对句子之间最长的公共子序列(LCS)。
除此之外,还有其他指标,如 METEOR、通用文本匹配器 (GTM) 等。这些指标非常受限,并且与大型语言模型当前的生成能力不符。尽管这些指标目前仅适用于具有简短形式、抽取式或多选答案的任务和数据集,但这些方法或其衍生物仍在许多基准中用作评估指标。
 

非传统指标

用于评估生成文本的非传统指标可以进一步分为基于嵌入的方法和 LLM 辅助方法。基于嵌入的方法利用深度学习模型产生的词元或句子向量,而 LLM 辅助方法则形成范式并利用语言模型的能力来评估候选文本。
 

基于嵌入的方法

这里的关键思想是利用深度学习模型中文本的向量表示,这些表示包含了丰富的语义和句法信息,以便将候选文本与参考文本进行比较。候选文本与参考文本的相似度通过余弦相似度等方法进行量化。
  • BERTScore:这是一种基于双编码的方法,即候选文本和参考文本分别输入深度学习模型以获得嵌入。然后使用词元级别的嵌入来计算成对的余弦相似度矩阵。然后选择从参考文本到候选文本中最相似的词元的相似度分数,并用于计算精确度、召回率和 F1 分数。
    • notion image
  • MoverScore: 使用了*词移距离*的概念,该概念表明嵌入的词向量之间的距离在某种程度上具有语义意义(vector(king) - vector(queen) = vector(man)),并使用上下文嵌入来计算 n-gram 之间的欧几里得相似度。与 BERTscore 允许词语一对一硬匹配不同,MoverScore 允许一对多匹配,因为它使用软/部分对齐。
    • notion image
      尽管基于嵌入的方法很稳健,但它们假设训练数据和测试数据是同分布的,这可能并不总是如此。

      基于语言模型的指标

    • 蕴含分数:该方法利用语言模型的自然语言推理能力来判断自然语言生成(NLG)。该方法有不同的变体,但基本概念是通过使用自然语言推理(NLI)模型来生成与参考文本的蕴含分数,从而对生成内容进行评分。这种方法对于确保文本摘要等基于文本的生成任务的忠实度非常有用。
    • notion image
       
    • BLEURT: 引入了一种通过在大量合成数据上预训练一个完全学习的指标,然后在人类评分上进行微调的方法,以结合表达性和鲁棒性。该方法利用 BERT 模型来实现这一点。为了将模型推广到评估任何新任务或领域,提出了一种新的预训练方法,该方法涉及在合成数据上进行额外的预训练。从维基百科收集文本片段,然后通过词语替换、反向翻译等技术进行增强,形成合成对,然后针对 BLUE、ROGUE 分数、反向翻译概率、自然语言推理等目标进行训练。
    • 问答-问题生成 (QA-QG):该范式可用于衡量任何候选文本与参考文本的一致性。该方法首先从候选文本中形成(候选答案,问题)对,然后比较和验证在给定参考文本的情况下为同一组问题生成的答案。
    • notion image
 

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 在科学论文摘要(基于文本+摘要式)中的应用,结果与原始文件的忠实性和一致性至关重要。
 

评估评估方法!

一旦您制定了适合您应用的评估策略,您应该在信任它来量化您的实验性能之前评估您的策略。评估策略是通过量化它们与人类判断的相关性来进行评估的。
  • 获取或标注一个包含黄金标准人类标注分数的测试集。
  • 使用您的方法对测试集中的生成内容进行评分。
  • 使用相关性度量(如肯德尔等级相关系数)来衡量人类标注分数和自动分数之间的相关性。
高于或约为 0.7 的分数通常被认为是足够好的。这也可以用来提高您的评估策略的有效性。
 

构建您的评估集

在为任何机器学习问题构建评估集时,需要确保两个基本标准:
  • 数据集应足够大,以产生具有统计意义的结果。
  • 它应尽可能地代表生产中预期的数据整体。
为基于 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 应用的评估。它使用 SOTA 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 上与我保持联系。

参考文献