Evaluate 文档

模型评估的注意事项

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

模型评估的注意事项

开发一个机器学习模型很少是一次性的工作:它通常涉及多个阶段,包括定义模型架构和调整超参数,最终才能确定一个最终版本。负责任的模型评估是这个过程中的关键部分,而 🤗 Evaluate 在此为您提供帮助!

在使用 🤗 Evaluate 库评估模型时,需要注意以下几点:

正确地划分数据

好的评估通常需要将数据集划分为三个部分:

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

🤗 Hub 上的许多数据集被划分为两个部分:trainvalidation;另一些则被划分为三个部分 (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 分数。

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

推理速度和内存占用

尽管近年来,越来越大的机器学习模型在各种任务和基准上取得了高性能,但在实践中部署这些数十亿参数的模型本身就是一个挑战,许多组织缺乏相应的资源。因此,考虑模型的推理速度内存占用非常重要,尤其是在进行在线模型评估时。

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

内存占用指的是模型权重的大小以及它们占用的硬件内存量。如果一个模型太大,无法容纳在单个 GPU 或 CPU 上,那么它必须被分割到多个设备上,这根据模型架构和部署方法的不同,难易程度也不同。

在进行在线模型评估时,通常需要在推理速度与准确率或精确率之间做出权衡,而对于离线评估,这种情况则较少。

局限性与偏见

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

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

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

< > 在 GitHub 上更新