咋做一个自己的评测数据集呢

科技   2024-10-30 21:23   广东  

SmartFlowAI


点击上方蓝字关注我们

作者:企鹅火烈鸟

导读:咋做一个自己的自动评测数据集呢?大家好,企鹅小弟今天为大家带来第三期的评测基础知识系列:如何做一个自己的数据集进行评测。

往期阅读:Hugging Face 评测负责人:和大家一起聊聊LLM评测你不知道的MMLU那些事儿

全文约 2800 字,预计阅读时间 8 分钟

从选择一个数据集开始

对于你的评估,你可以选择一个现有的数据集(参见一些评估数据集的示例),或者设计你自己的数据集。在这个过程中,非常重要的是要记住,你的评估结果将仅取决于你的评估数据集的质量。

1. 选择已存在的数据集

你必须要仔细看你选择的数据集的各个组成部分。

制作过程

  • 谁创建了实际的样本数据? 在我看来,数据集的质量排序是这样的:专家创建的数据集优于付费标注员创建的数据集,付费标注员创建的数据集与众包数据集质量相当,而 MTurk(亚马逊机械土耳其人平台)创建的数据集质量最低。另外,你还需要查看数据说明文档(data card),其中包含了标注人员的人口统计信息 - 这对于理解数据集的语言多样性非常重要。

  • 这些样本是否都经过其他标注人员或作者的审查? 你需要了解以下几点:

    • 标注者之间的评分一致性是否较高(即不同标注者是否达成共识?)
    • 数据集是否经过作者的全面审查。这一点对于那些由低薪标注人员(通常不是目标语言的母语者,比如亚马逊机械土耳其人平台的工作者)帮助创建的数据集尤其重要。否则,你可能会在数据集中发现拼写错误、语法错误或者毫无意义的答案。
  • 标注人员是否获得了清晰的数据创建指南? 换句话说,你的数据集是否具有一致性?

样本

随机抽取50个样本并进行手动检查:

  • 质量检查:

    • 提示语是否清晰明确,没有歧义?
    • 答案是否正确?(例如:TriviaQA数据集中每个问题都有多个正确答案(别名字段),有时这些答案会相互矛盾。)
    • 是否存在信息缺失?(例如:MMLU数据集中有些问题缺少参考示意图。)
  • 任务相关性检查:

    • 这些问题是否属于你想要用来评估大语言模型的类型?
    • 这些样本是否与你的使用场景相关?

你还需要了解数据集中包含多少样本(以确保结果具有统计学意义 - 对于自动化评估基准测试来说,通常至少需要100个样本)。

2. 设计一个你自己的数据集

你可以用三种方法设计你自己的数据集

整合现有数据 

  • 你可以从不同来源整合现有数据,以评估与你任务相关的能力。例如,一些评估数据集就是通过整合人工评估数据集(如MATH、LSAT等)构建的。在这种情况下,请按照上述步骤进行。

使用人工标注

使用合成数据

  • 使用大语言模型:这个方法在训练里已经比较成熟了,平移到评测也不是不可以。
  • 使用基于规则的技术 如果你的任务允许,这是一个很好的方法,可以获得几乎无限的样本,并避免数据污染!你可以参考一些示例,如NPHardEval、DyVal、MuSR、BabiQA等。

选择推理方法

你需要选择合适的推理方法。

使用对数概率(MCQA,多选题答案)非常适合多选题(通常用于测试模型知识或消除歧义的能力)。

  • 优点:

    • 确保所有模型都能接触到正确答案。
    • 提供了模型"置信度"(和校准)的参考指标。
    • 评估速度快,特别是当我们只要求模型预测一个标记时(A/B/C/D这样的选项索引,或是Yes/No等)。
    • 能够获取小型模型在任务上的表现信号。
  • 缺点:

    • 对于那些如果自由回答可能会生成选项范围之外答案的小型模型,评分可能会稍高。
    • 某些模型会根据选项呈现的顺序偏向特定选择,这可能导致评估结果不具代表性。

使用生成式方法(QA,问答)非常适合测试模型的流畅度、推理能力或实际回答问题的能力。

  • 优点:

    • 能真实反映大语言模型生成流畅文本的能力,这通常是人们最关心的。
    • 更接近实际应用场景。
    • 可以评估模型的创造性和灵活性。
  • 缺点:

    • 评分可能更困难(详见下面的指标部分)。
    • 通常比对数似然评估的计算成本更高,特别是在包含采样的情况下。
    • 评估标准的主观性较强,可能需要更复杂的评分机制或人工判断。

选择prompt

提示语(prompt)会定义:

  • 向模型提供多少关于任务的信息。
  • 如何向模型呈现这些信息。

通用的多选题或问答题提示语通常包含以下部分:

  • 任务提示(可选):介绍任务内容

  • 上下文:为问题提供额外背景信息

    • 例如:对于摘要或信息提取任务,你可以提供内容来源。
  • 问题:提示语的核心部分

  • 选项:如果是多选题评估,可以添加选项

  • 连接词(问题、上下文、选择等)

定义提示语时需要注意:

  • 语义相同的提示语即使有细微变化,也可能导致结果差异很大。某些提示语格式可能对特定模型有利或不利。

    • 成本较高的方法:使用不同的提示语变体多次运行评估。
    • 成本较低的方法:在难度相当的不同样本上使用不同的提示语格式进行一次评估。
    • 如何缓解这个问题:

  • 可以通过少样本示例帮助模型遵循预期格式,添加连接词有助于整体效果。

  • 但现在的模型往往会过拟合特定的提示语格式。

    • 这篇论文特别指出了一些模型可能因为过拟合测试集格式而被过高评估。

  • 在Open LLM Leaderboard 2中,我们观察到Llama 3.2和Qwen 2.5由于这个原因不再遵循少样本设置中提供的提示语格式。
  • 对于许多评估指标,你想要一个非常特别的生成或输出。

选择评估指标

如果你关注的是对数概率,评估指标会比较简单:主要看准确率(最可能的选择是最佳选择的频率)并且重要的是要按长度进行归一化(可以是字符、token或PMI),也可以考虑其他指标如困惑度、召回率或F1分数。

对于生成式评估,指标范围会更广。你需要:

  1. 决定是直接比较生成结果,还是先进行某种标准化处理

  • 如果设计不当,标准化容易造成不公平,但总体上仍能在任务层面提供有效信号。
  • 对某些特定任务很重要,比如:数学评估:可能需要从格式化输出中提取结果。
  • 使用思维链等提高准确性的机制时:需要从实际结果中移除推理过程。
  • 决定如何将生成结果与参考答案进行比较,可以使用基于匹配的指标(精确匹配、前缀匹配等),也可以使用摘要和翻译评估指标(ROUGE、BLEU、字符n元组比较)。

  • 在选择评估指标时,你需要考虑任务的本质。在某些领域(例如医疗、与公众互动的聊天机器人),你不应该只衡量平均表现,而是需要评估最差表现(如医疗输出质量、内容毒性等)。

    智能新任务:功能测试是什么?

    在代码领域,你不仅要评估生成程序的语义,还要评估其实际功能。一个好的方法是检查生成的代码是否能通过专门为任务设计的单元测试。

    这种功能性方法非常有前景,因为它:

    • 可以更容易地生成测试用例(在许多情况下,可以生成基于规则的测试用例)
    • 因此减少过拟合
    • 测试模型的特定活跃能力

    然而,将这种方法应用于文本需要一些创造力!

    一个很好的例子是 IFEval,这是一个评估基准,用来测试模型是否能遵循指令。它通过创建一些格式指令(例如:添加这个数量的项目符号,仅大写一个句子等),并严格测试格式是否被遵循。显然,还需要更多工作将这个想法扩展到文本的其他特征进行分析!

    总结

    这就是这篇文章的主要内容了,这是我们评测相关的第三篇文章,简单带大家浏览了下如何制作一个自己的评测数据集。


    往期 · 推荐

    FastChat(一):200 行代码实现 Mini FastChat

    落地分享:来看 UFH AI 医疗大模型如何助力国际化诊疗场景

    一文详解大模型推理:从基础知识到 vLLM

    你不知道的MMLU那些事儿

    🌠 番外:我们期待与读者共同探讨如何在 AI 的辅助下,更好地发挥人类的潜力,以及如何培养和维持那些 AI 难以取代的核心技能。通过深入分析和实践,我们可以更清晰地认识到 AI 的辅助作用,并在 AI 时代下找到人类的独特价值和发展空间。“机智流”公众号后台聊天框回复“cc”,加入机智流大模型交流群!


    机智流
    共赴 AI 时代浪潮~涉及涵盖计算机视觉、大语言模型、多模态模型等AI领域最新资讯知识分享~
     最新文章