评估文档

模型评估的注意事项

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

模型评估的注意事项

开发 ML 模型很少能一蹴而就:它通常涉及定义模型架构和调整超参数的多个阶段,然后才能确定最终集合。负责任的模型评估是此过程的关键部分,🤗 Evaluate 在此为您提供帮助!

以下是在使用 🤗 Evaluate 库评估模型时需要记住的一些事项

正确拆分数据

良好的评估通常需要数据集的三个拆分

  • 训练集:用于训练模型。
  • 验证集:用于验证模型超参数。
  • 测试集:用于评估您的模型。

🤗 Hub 上的许多数据集都分为 2 个拆分:trainvalidation;其他数据集分为 3 个拆分(trainvalidationtest)——请确保为正确的目的使用正确的拆分!

🤗 Hub 上的一些数据集已经分为这三个拆分。但是,也有许多数据集只有训练/验证拆分或仅训练拆分。

如果您使用的数据集没有预定义的训练-测试拆分,则由您来定义要使用数据集的哪一部分来训练模型,以及要使用哪一部分来进行超参数调整或最终评估。

在同一拆分上进行训练和评估可能会错误地表示您的结果!如果您在训练数据上过度拟合,则在该拆分上的评估结果看起来会很棒,但模型在新数据上的表现会很差。

根据数据集的大小,您可以保留 10-30% 用于评估,其余用于训练,同时力求将测试集设置为尽可能接近生产数据。查看 此主题 以更深入地讨论数据集拆分!

类别不平衡的影响

虽然许多学术数据集(例如电影评论的 IMDb 数据集)是完全平衡的,但大多数现实世界的数据集并非如此。在机器学习中,平衡数据集 对应于所有标签均等表示的数据集。在 IMDb 数据集的情况下,这意味着数据集中正面评论和负面评论的数量一样多。在不平衡的数据集中,情况并非如此:例如,在欺诈检测中,数据集中通常有更多的非欺诈案例,而不是欺诈案例。

拥有不平衡的数据集可能会歪曲您的指标结果。想象一个数据集,其中包含 99 个“非欺诈”案例和 1 个“欺诈”案例。一个始终预测“非欺诈”案例的简单模型将产生 99% 的准确率,乍听起来不错,但您会意识到您永远不会抓住欺诈案例。

通常,使用多个指标可以帮助从不同的角度更好地了解模型的性能。例如,召回率精确率 等指标可以一起使用,而 f1 分数 实际上是两者的调和平均值。

在数据集平衡的情况下,使用 准确率 可以反映整体模型性能

Balanced Labels

在存在不平衡的情况下,使用 F1 分数 可以更好地表示性能,因为它包含精确率和召回率。

Imbalanced Labels

在不平衡的环境中使用准确率不太理想,因为它对少数类不敏感,并且不能真实地反映模型在少数类上的性能。

离线与在线模型评估

评估模型的方法有很多种,一个重要的区别是离线评估与在线评估

离线评估 是在部署模型或使用模型生成的见解之前完成的,使用静态数据集和指标。

在线评估 是指在模型部署后以及在生产中使用期间评估模型的性能。

这两种类型的评估可以使用不同的指标并衡量模型性能的不同方面。例如,离线评估可以将模型与其他模型进行比较,基于它们在通用基准上的性能,而在线评估将评估模型的延迟和准确率等方面的性能,基于生产数据(例如,它可以处理的用户查询数量)。

模型评估中的权衡

在实践中评估模型时,通常需要在模型性能的不同方面之间进行权衡:例如,选择一个准确率稍低但推理时间更快的模型,而不是准确率高但内存占用量更大且需要访问更多 GPU 的模型。

以下是在评估期间需要考虑的模型性能的其他方面

可解释性

在评估模型时,可解释性(即解释结果的能力)可能非常重要,尤其是在生产环境中部署模型时。

例如,完全匹配 等指标具有设定的范围(介于 0 和 1 之间,或 0% 和 100%),并且用户很容易理解:对于一对字符串,如果两个字符串完全相同,则完全匹配得分为 1,否则为 0。

其他指标,例如 BLEU,则更难解释:虽然它们也在 0 到 1 之间,但它们可能会因用于生成分数的参数而差异很大,尤其是在使用不同的分词和归一化技术时(有关 BLEU 限制的更多信息,请参阅 指标卡)。这意味着,如果不了解获得 BLEU 分数的过程,就很难解释 BLEU 分数。

可解释性的重要性可能因评估用例而异,但它是模型评估的一个有用的方面,需要牢记,因为沟通和比较模型评估是负责任的机器学习的重要组成部分。

推理速度和内存占用

虽然近年来,越来越大的 ML 模型在各种任务和基准测试中都取得了高性能,但在实践中部署这些数十亿参数的模型本身可能是一个挑战,而且许多组织缺乏资源来做到这一点。这就是为什么考虑模型的推理速度内存占用很重要,尤其是在进行在线模型评估时。

推理速度是指模型做出预测所需的时间——这会因所使用的硬件和查询模型的方式而异,例如,通过 API 实时查询或每天运行一次的批处理作业。

内存占用是指模型权重的尺寸以及它们占用的硬件内存量。如果模型太大而无法容纳在单个 GPU 或 CPU 上,则必须将其拆分到多个 GPU 或 CPU 上,这可能会因模型架构和部署方法而异,或多或少会比较困难。

在进行在线模型评估时,推理速度与准确率或精确率之间通常需要权衡,而在离线评估中则不那么需要。

局限性和偏见

所有模型和所有指标都有其局限性和偏见,这取决于它们的训练方式、使用的数据以及它们的预期用途。清楚地衡量和沟通这些局限性非常重要,以防止误用和意外影响,例如通过 模型卡 来记录训练和评估过程。

衡量偏见可以通过在 Wino BiasMD Gender Bias 等数据集上评估模型,以及通过进行 交互式错误分析 来尝试识别模型在其上表现不佳的评估数据集子集。

我们目前正在研究可用于量化模型和数据集中偏见的其他维度的测量方法——请继续关注有关此主题的更多文档!