查看“︁大语言模型评估指南”︁的源代码
←
大语言模型评估指南
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
大型语言模型(LLM)已以惊人的速度从研究实验室走向生产应用。开发人员正在将其应用于各种领域,从客户支持聊天机器人到代码生成工具,再到内容创作系统。然而,这种快速普及带来了一个重要问题:我们如何知道我们的LLM是否真的有效? 与传统软件不同,传统软件可以通过编写单元测试来检查确切的输出,而逻辑学习模型(LLM)是概率系统。即使提出同一个问题两次,模型也可能给出不同的答案,而这两个答案都可能完全有效。这种不确定性使得评估充满挑战,但又绝对必要。 [[文件:Llm-evaluation-1.png|居中|无框|633x633像素]] 这就是“评估”发挥作用的地方。评估是评价的简称,它是我们用来衡量LLM性能的系统方法。如果没有适当的评估,我们就如同盲人摸象,无法知道最新的提示更改是让情况更好了还是更糟了,我们的模型是否已准备好投入生产,以及它是否能正确处理边界情况。 在本文中,我们将探讨为什么LLM评估具有挑战性,可用的不同评估类型,需要理解的关键概念,以及建立评估流程的实用指导。 == 为什么LLM评估具有挑战性 == 如果我们习惯于测试传统软件,LLM 评估会给我们带来截然不同的体验。在传统编程中,我们编写一个函数,该函数接收输入并产生确定性的输出。测试过程也很简单。给定输入 X,我们预期输出 Y。如果得到 Y,则测试通过;否则,测试失败。 LLMs 在几个方面打破了这种模式。 * 首先,语言本身就具有主观性。什么样的回答才算“好”?有的回答简洁明了,有的则全面详尽。根据语境的不同,两者都可能恰当。与检查函数是否返回数字 42 不同,判断一段文字的质量需要细致入微的考量。 * 其次,大多数问题或提示都有多个有效答案。例如,如果我们要求语言学习模型(LLM)总结一篇文章,那么有无数种正确的总结方法。即使模型能够生成优秀的摘要,如果评估方法仅仅检查文本是否完全匹配,也会失败。 * 第三,语言具有很强的语境依赖性。同样的词语在不同的语境下可能意味着不同的东西。讽刺、幽默、文化典故和隐含意义都增加了语言的复杂性,而简单的模式匹配无法捕捉到这些复杂性。 * 最后,令人印象深刻的演示和稳定的生产性能之间存在显著差距。LLM 或许能够完美处理我们精心设计的测试用例,但却难以应对真实用户提供的混乱且不可预测的输入。 传统的软件测试方法,例如单元测试和集成测试,对于我们LLM模型的代码仍然很有价值,但它们并不能完全用于评估模型的语言理解和生成能力。我们需要不同的工具和框架来应对这一新挑战。 == LLM评估类型 == 在评估LLM时,我们有几种方法可供选择,每种方法都有不同的优势和不足。让我们来探讨一下主要类别。 === 自动评估 === 自动评估是指无需人工干预即可运行的程序化评估。 最简单的形式是精确匹配,即检查模型的输出是否与预期字符串完全匹配。这种方法适用于结构化输出(例如 JSON)或确实只有一个正确答案的情况,但对于大多数自然语言处理任务来说过于死板。 关键词匹配稍微灵活一些。我们会检查输出结果是否包含某些必需的关键词或短语,而无需完全匹配。这样既能捕捉到一些变化,又能保证结果的确定性,而且易于实现。 语义相似度衡量的是模型输出与参考答案在意义上的接近程度,即使词语有所不同。这类指标通常使用词嵌入模型来比较语义内容,而非文本表面含义。 一种日益流行的评估方法是基于模型的评估,即使用另一个逻辑逻辑模型(LLM)作为评判者。在这种方法中,我们可以让像 GPT-4 或 Claude 这样强大的模型,根据诸如实用性、准确性或相关性等标准,对目标模型的输出进行评分。这种方法可以捕捉到简单指标无法捕捉到的细微差别,但它也引入了自身的复杂性。 请看下图: [[文件:Llm-evaluation-img2.png|居中|无框|762x762像素]] 自动评估在我们需要发现明显的错误、运行回归测试以确保更改不会破坏现有功能或快速迭代提示时表现出色。然而,它们可能会忽略一些只有人工判断才能发现的细微问题。 === 人工评价 === 尽管自动化测试取得了进步,但人工评估仍然是衡量学习领导力(LLM)表现各个细微方面的黄金标准。人类能够判断语气、恰当性、实用性以及回答是否真正回应了问题的根本意图等主观因素。 人工评价有多种形式。在偏好排序中,评价者比较多个结果并选择他们更偏好的结果。李克特量表要求评分者根据不同维度,用数值量表对结果进行评分。任务完成度评价则检验结果是否达到了特定目标。 人工评估的主要权衡之处在于成本和速度与准确性之间的取舍。高质量的人工评分成本高昂且耗时,但对于许多应用而言,这是真正验证性能的唯一途径。例如,当我们处理主观性较强的任务、安全关键型应用或需要验证自动评估结果时,人工评估就显得至关重要。 === 基于基准的评估 === 机器学习研究界已经开发出用于评估语言学习模型的标准化基准数据集。这些数据集包括用于通用知识的 MMLU(大规模多任务语言理解)、用于常识推理的 HellaSwag 以及用于代码生成的 HumanEval。 基准测试的优势在于可比性。我们可以了解我们的模型与其他模型相比如何,并利用既定的基准来跟踪进展。它们还提供了涵盖各种场景的现成测试集。 然而,基准测试存在局限性。它们可能无法反映我们的具体用例。在学术基准测试中得分很高的模型,在我们的客户支持应用程序中可能仍然表现不佳。此外,随着基准测试的广泛传播,模型可能会被专门针对这些基准测试进行优化,而不是针对通用功能进行优化。 == LLM评估中的关键概念 == 要构建有效的评估体系,我们需要理解几个核心概念: === 评估指标 === 不同的任务需要不同的评价指标。对于分类任务,我们可以使用准确率或 F1 分数。对于文本生成,BLEU 和 ROUGE 等指标衡量文本与参考文本的重叠度,但它们也存在一些已知的局限性。对于代码生成,我们可以检查代码是否正确执行并产生预期的输出。 除了特定任务的指标之外,我们通常还关注贯穿各个任务的质量维度。 * 输出与输入相关吗? * 它是否逻辑清晰、结构严谨?它的事实是否准确? * 对用户有帮助吗? * 它是否避免有害内容? === 评估数据集 === 我们的评估质量很大程度上取决于测试数据集的质量。我们需要能够代表真实使用场景、足够多样化以涵盖不同应用场景,并且包含模型可能失效的极端情况的测试用例。 一个常见的陷阱是数据污染,即测试样本与模型的训练数据重叠。这会导致模型在全新输入数据上的性能看起来比实际更好。使用预留数据或创建新的测试用例有助于避免这个问题。 === 统计学考量 === 由于LLM的输出结果可能因运行而异(尤其是在较高温度设置下),我们需要从统计学的角度进行评估。单次测试结果可能不具有代表性。样本量至关重要,因为仅测试十个样本的置信度远低于测试一千个样本。 我们还需要考虑模型输出的差异。多次运行相同的提示并取平均值可以让我们更稳定地了解模型的性能。理解并控制温度、top-p 值和随机种子等参数有助于提高评估结果的可复现性。 == 建立评估流程 == 以下是构建评估流程的一种实用方法。 * '''针对我们的用例,如何定义成功:'''对于我们特定的应用来说,“好”意味着什么?如果我们正在构建一个客户支持机器人,那么“好”可能意味着准确回答问题、保持友好的语气,并在适当的时候转接给人工客服。 * '''创建初始评估集''':先从 50-100 个涵盖常见情况、极端情况和已知故障模式的多样化示例入手。我们不需要成千上万个示例就能开始获得价值。 * '''选择我们的评估方法:'''如果资源有限,先采用自动评估。如果质量至关重要且预算充足,则加入人工评估。通常,混合方法效果最佳,即先使用自动评估进行广泛覆盖并快速迭代,最后用人工评估进行最终验证。 * '''建立迭代周期:'''运行评估,找出模型的不足之处,进行改进(更好的提示、不同的模型、微调等),然后重新评估。我们正是通过这个周期逐步提高性能。 * '''跟踪性能变化:'''记录不同版本的评估分数。这有助于我们了解更改是否有效,以及是否能防止性能下降。 * '''对所有内容进行版本控制:'''记录每个结果对应的模型版本、提示符版本和评估数据集版本。这大大简化了调试和复现过程。 关键在于从简单的入手,不断迭代。不要等待完美的评估设置。一个定期运行的基础评估程序,其价值远远高于一个从未实现的复杂评估程序。 [[文件:Llm-evalution3-img3.png|居中|无框|530x530像素]] == 常见误区和最佳实践 == 在建立评估实践的过程中,最好注意以下这些常见错误: * 对评估集过度拟合是一个真实存在的风险。如果我们反复使用相同的测试用例进行优化,可能会提高模型得分,但实际性能却没有提升。定期更新评估集,添加新的测试用例,有助于避免这种情况。 * 我们还可能陷入操纵指标的陷阱。仅仅因为某个模型在特定指标上得分高,并不意味着它实际上更好。务必将定量指标与对实际输出的定性评估结合起来。 * 许多团队忽略了极端情况和对抗性示例。真实用户总会找到我们意想不到的系统漏洞。主动寻找并测试这些棘手案例,能使我们的评估更加可靠。 * 另一方面,仅仅依靠感觉和轶事是有问题的。人的直觉固然宝贵,但也可能误导人。系统性的评估能够为我们提供数据,从而做出明智的决策。 * 或许最大的陷阱就是完全不做评估。在急于发布功能的过程中,评估往往被忽视。但如果不进行评估就发布,我们就根本不知道我们是在改进还是在恶化产品。 最佳实践是维护一个多样化且不断演进的评估套件,使其与我们的产品共同成长。随着我们发现新的故障模式或扩展到新的用例,可以将其添加到评估套件中。 == 结论 == LLM评估是一个持续的过程,应该融入到我们的开发工作流程中。正如我们不会在没有测试的情况下发布传统软件一样,我们也不应该在没有进行适当评估的情况下部署LLM应用程序。 良好的评估让我们更有信心快速迭代并安全部署。它们帮助我们了解哪些有效、哪些无效,同时提供客观的衡量标准来比较不同的方法。它们甚至能在用户发现问题之前就发现回归错误。 好消息是,我们不需要一开始就搭建复杂的系统。先从少量测试用例和基本指标入手,定期运行评估,并密切关注失败案例。随着我们对应用程序需求的了解不断加深,逐步扩展和完善评估套件。 学习领导力模型(LLM)评估领域仍在不断发展,新的工具、框架和最佳实践层出不穷。但其基本原则始终不变:不进行测量就无法改进。通过将评估纳入LLM开发流程的核心环节,我们可以将原本可能只是猜测的事情转化为切实可行的方案。
返回
大语言模型评估指南
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
特殊页面
工具
链入页面
相关更改
页面信息