- 作者:老汪软件技巧
- 发表时间:2024-12-27 07:06
- 浏览量:
设计你的自动评估任务
这是 自动评估基准 系列文章的第二篇,敬请关注系列文章:
选择数据集
做评估时,你可以选择现有的数据集 (参考 一些评估数据集 页面) 作为测试集,也可以设计自己的数据集。有一点非常重要,请注意:评估的结果与评估的数据集质量高度相关 。
使用现有的数据集
这部分强烈建议仔细阅读!
数据集需要注意的问题
样本是由谁创建的?在我看来,按照样本的标注员素质高低,数据集质量大致排名如下:专家构建数据集 > 付费标注数据集 > 众包数据集 > MTurk 数据集。你可以在数据集的说明文档 (data card) 找到标注员的统计信息,可以帮助理解数据集语言多样性。
是否给标注员提供了明确的数据创建指导?换句话说,数据集样本间的标注标准是否一致?
检查样本
随机抽取 50 个样本进行人工检查:
检查与任务相关性:
数据集样本数量同样重要 (以确保自动评估基准结果在统计上显著,一般至少需要 100 个测试样本)。
设计自己的数据集
有 3 种设计方法:
整合数据
要使用自己的测试集评估模型执行特定任务的能力,可以从不同的现成数据源整理和聚合。实际上有许多评估测试集都是以这种方式构建的,例如 MATH 和 LSAT 就聚合了人工评估数据集。当然在整理数据时,请遵循上文的质量与任务相关性检查步骤。
人工标注
关于 人工标注 的内容,本指南有一整个篇幅详细介绍,可以自行点击 Using human annotators 阅读。
合成数据选择推理方法
除了测试集,还需要选择合适的推理方法。
对于多项选择问答任务 (通常用于测试模型的知识储备或消除歧义的能力),使用对数概率 (MCQA) 非常有效。
劣势:
对于测试模型流畅性、推理或回答问题能力的任务,使用 QA 生成非常有效。
劣势:选择 prompt
Prompt 设计关键问题:
MCQA 或 QA 任务的通用 prompt 设计范式一般包含以下几个部分:
问题:prompt 的核心内容。对于多项选择评估任务,可以增加选项。连接词 (问题、上下文、选项等)。
定义 prompt 时需要注意:
在 prompt 中提供示例可以帮助模型输出遵循预期格式,示例可以通过连接词添加至 prompt。注意模型可能倾向于对特定的 prompt 格式过拟合。对于一些测试任务的指标,你可能希望模型的输出限制在一个小范围。可以跳转 Model inference and evaluation 页面的 Constraining model outputs 部分了解更多信息。选择评估指标
如果你关注 对数概率 评估,那么你期望的度量指标会很简单:准确率 (选择最佳选项的频率)。如果在这个基础上你还想要进行标准化 (通过长度、字符、token 或 PMI),那么度量指标就会变成困惑度 (perplexity)、召回率或 F1 分数。
对于 生成式 评估,你期望的度量指标范围会更广。为此你需要:
确定生成结果的度量顺序,是直接拿生成结果比较,还是先使用某种方式进行标准化。确定生成结果与参考答案的比较方式。你可以采用任意的比较方法。评估匹配程度的有:精确匹配、前缀匹配等;评估摘要和翻译能力的有:ROUGE、BLEU、n-gram 等。更多评价指标可以点击 这个页面 查看,我会在后续更新关于在何时使用哪种指标的章节。
总的来说,选择哪种评价指标取决于你的任务内容。对于某些领域 (如医疗、聊天机器人),你可能不想要评估平均性能,而是需要评估 最差表现 (如医疗知识输出质量、如果输出不实的后果等)。( 可以查看 这篇博客 深入了解 )
智能新任务:功能性测试是什么?
对于代码领域,显然仅评估生成代码的语义是不够的,必须测试代码实际运行情况。所以需要专门设计一个功能性测试:对于给定 prompt 生成的代码段,测试并评估其是否能正确通过单元测试。
这种功能性测试方法极具前景,因为:
不过很多新奇的想法需要一些创造性的工作才能实现!
IFEval 是一个不错的例子,它是用来测试模型指令遵循能力的评估基准,通过创建多个格式化指令 ( 例如:添加指定数量的特殊符号,仅将一句话字母大写,等等 ) 并严格测试生成结果的遵循与否。功能性测试的想法仍需更多的工作来扩展到其他的特征测试上!
英文原文: /huggingface…