模型评估注意事项
开发 ML 模型很少是一次性的事情:它通常涉及多个阶段来定义模型架构和调整超参数,然后才能收敛到最终的模型。负责任的模型评估是此过程的关键部分,🤗 Evaluate 可以帮助您!
以下是在使用 🤗 Evaluate 库评估模型时需要牢记的一些事项。
正确拆分数据集
良好的评估通常需要对数据集进行三次拆分。
- 训练:用于训练模型。
- 验证:用于验证模型超参数。
- 测试:用于评估模型。
🤗 Hub 上的许多数据集都分为 2 个部分:训练
和 验证
;其他则分为 3 个部分(训练
、验证
和 测试
)——请确保将正确的数据集用于正确的目的!
🤗 Hub 上的一些数据集已经分为这三个部分。但是,还有很多数据集只包含训练/验证或者只有训练部分。
如果您使用的数据集没有预定义的训练-测试拆分,那么您需要自己定义数据集的哪一部分用于训练模型,哪一部分用于超参数调整或最终评估。
根据数据集的大小,您可以将 10-30% 的数据保留用于评估,其余用于训练,同时尽可能将测试集设置为反映生产数据。查看 此主题,了解更多关于数据集拆分的深入讨论!
类不平衡的影响
虽然许多学术数据集(例如 IMDb 数据集(电影评论))是完全平衡的,但大多数现实世界中的数据集并不平衡。在机器学习中,平衡数据集对应于所有标签都等量表示的数据集。对于 IMDb 数据集,这意味着数据集中有同样多的正负面评论。在不平衡数据集中,情况并非如此:例如,在欺诈检测中,数据集中通常有比欺诈案例更多的非欺诈案例。
拥有不平衡数据集可能会扭曲指标的结果。想象一个数据集包含 99 个“非欺诈”案例和 1 个“欺诈”案例。一个总是预测“非欺诈”案例的简单模型将产生 99% 的准确率,这可能听起来很好,但直到您意识到您永远不会发现欺诈案例。
通常,使用多个指标可以帮助从不同的角度更好地了解模型的性能。例如,指标如 召回率 和 精确率 可以一起使用,F1 分数 实际上是两者的调和平均值。
在数据集平衡的情况下,使用 准确率 可以反映模型的整体性能。
在存在不平衡的情况下,使用 F1 分数 可以更好地表示性能,因为它包含精确率和召回率。
在不平衡的情况下使用准确率不太理想,因为它对少数类不敏感,并且无法忠实地反映模型对这些类的性能。
离线与在线模型评估
评估模型的方法有很多,其中一个重要的区别是离线评估和在线评估。
离线评估是在部署模型或使用模型生成的见解之前进行的,使用静态数据集和指标。
在线评估是指评估模型在部署后以及在生产环境中使用时的性能。
这两种类型的评估可以使用不同的指标并衡量模型性能的不同方面。例如,离线评估可以根据模型在通用基准上的表现来比较不同模型,而在线评估将评估模型的延迟和准确性等方面,这些方面是基于生产数据的(例如,模型能够处理的用户查询数量)。
模型评估中的权衡
在实际评估模型时,往往需要在模型性能的不同方面之间进行权衡:例如,选择一个准确率略低但推理速度更快的模型,与一个高准确率但内存占用更大、需要更多 GPU 的模型进行比较。
以下是评估期间需要考虑的其他模型性能方面。
可解释性
在评估模型时,可解释性(即解释结果的能力)非常重要,尤其是在生产环境中部署模型时。
例如,像 精确匹配 这样的指标具有固定的范围(介于 0 和 1 之间,或 0% 和 100% 之间),用户很容易理解:对于一对字符串,如果这两个字符串完全相同,则精确匹配得分是 1,否则是 0。
其他指标,比如 BLEU 则更难解释:虽然它们也介于 0 和 1 之间,但它们会根据用于生成分数的参数而有很大差异,尤其是在使用不同的标记化和规范化技术时(请参阅 指标卡,了解有关 BLEU 限制的更多信息)。这意味着,在没有有关获取 BLEU 分数的过程的更多信息的情况下,很难解释 BLEU 分数。
可解释性的重要程度取决于评估用例,但它是在模型评估中需要牢记的一个有用方面,因为传达和比较模型评估是负责任机器学习的重要组成部分。
推理速度和内存占用
近年来,越来越大的 ML 模型在各种任务和基准测试中都取得了很高的性能,但将这些数十亿参数的模型实际部署起来本身就是一个挑战,许多组织缺乏这样做的资源。这就是为什么在进行在线模型评估时,考虑模型的推理速度和内存占用非常重要的原因。
推理速度是指模型进行预测所需的时间,这将根据使用的硬件以及模型查询的方式而有所不同,例如,通过 API 实时查询或每天运行一次的批处理作业。
内存占用是指模型权重的尺寸以及它们占用多少硬件内存。如果模型太大,无法放入单个 GPU 或 CPU,那么它必须被分割到多个 GPU 或 CPU 上,这可能会根据模型架构和部署方法而更容易或更难。
在进行在线模型评估时,往往需要在推理速度和准确率或精确率之间进行权衡,而在离线评估中,这种情况要少得多。
局限性和偏差
所有模型和所有指标都具有局限性和偏差,这些局限性和偏差取决于它们的训练方式、使用的训练数据以及预期用途。重要的是要衡量并清楚地传达这些局限性,以防止误用和意外影响,例如通过 模型卡 记录训练和评估过程。
可以通过在 Wino Bias 或 MD Gender Bias 等数据集上评估模型,以及通过进行 交互式错误分析 来尝试确定模型在哪些评估数据集子集上表现不佳来衡量偏差。
我们目前正在开发其他度量方法,这些度量方法可以用来量化模型和数据集的偏差的不同维度,敬请关注更多关于此主题的文档!