评估文档

为您的任务选择指标

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

为您的任务选择指标

因此,您已经训练了您的模型,并且想要查看它在您选择的数据集上的表现如何。从哪里开始呢?

选择评估指标没有“一刀切”的方法,但需要牢记一些良好的指导原则

指标类别

指标有 3 个高级别类别

  1. 通用指标,可应用于各种情况和数据集,例如精确率和准确率。
  2. 特定于任务的指标,仅限于给定的任务,例如机器翻译(通常使用指标 BLEUROUGE 评估)或命名实体识别(通常使用 seqeval 评估)。
  3. 特定于数据集的指标,旨在衡量模型在特定基准上的性能:例如,GLUE 基准 有一个专用的 评估指标

让我们看看这三种情况

通用指标

机器学习社区中使用的许多指标都非常通用,可以应用于各种任务和数据集。

对于像 准确率精确率 这样的指标就是这种情况,它们可以用于评估标记的(监督的)数据集,以及 困惑度,它可以用于评估不同类型的(无监督的)生成任务。

要查看给定指标的输入结构,您可以查看其指标卡。例如,在 精确率 的情况下,格式为

>>> precision_metric = evaluate.load("precision")
>>> results = precision_metric.compute(references=[0, 1], predictions=[0, 1])
>>> print(results)
{'precision': 1.0}

特定于任务的指标

流行的机器学习任务,如机器翻译和命名实体识别,都有特定的指标可用于比较模型。例如,已经为文本生成提出了一系列不同的指标,从 BLEU 及其衍生版本(如 GoogleBLEUGLEU)到 ROUGEMAUVE 等。

您可以通过以下方式找到适合您任务的指标:

  • 查看 任务页面 以了解哪些指标可用于评估给定任务的模型。
  • 查看 Papers With Code 等网站上的排行榜(您可以按任务和数据集搜索)。
  • 阅读相关指标的指标卡,并查看哪些指标适合您的用例。例如,请参阅 BLEU 指标卡SQuaD 指标卡
  • 查看发表在该主题上的论文和博文,并查看他们报告的指标。这会随着时间的推移而发生变化,因此请尝试选择最近几年的论文!

数据集特定指标

某些数据集具有与其关联的特定指标——这在流行的基准测试(如 GLUESQuAD)中尤其常见。

💡 GLUE 实际上是不同任务上不同子集的集合,因此您首先需要选择与 NLI 任务相对应的一个,例如 mnli,它被描述为“带有文本蕴涵注释的句子对众包集合”。

如果您正在使用上述基准数据集评估您的模型,则可以使用其专用的评估指标。请确保您遵守它们所需的形式。例如,要评估您在 SQuAD 数据集上的模型,您需要将 questioncontext 馈送到您的模型并返回 prediction_text,该文本应与 references(基于匹配问题的 id)进行比较。

>>> from evaluate import load
>>> squad_metric = load("squad")
>>> predictions = [{'prediction_text': '1976', 'id': '56e10a3be3433e1400422b22'}]
>>> references = [{'answers': {'answer_start': [97], 'text': ['1976']}, 'id': '56e10a3be3433e1400422b22'}]
>>> results = squad_metric.compute(predictions=predictions, references=references)
>>> results
{'exact_match': 100.0, 'f1': 100.0}

您可以通过查阅给定数据集的“数据集预览”功能或数据集卡片来查找数据集结构的示例,并且您可以根据指标卡片查看如何使用其专用的评估函数。