Evaluate 文档

为您的任务选择一个评估指标

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 数据集上评估您的模型,您需要将 `question` 和 `context` 输入到您的模型中,并返回 `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}

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

< > 在 GitHub 上更新