评估文档

为你的任务选择指标

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}

特定任务指标

像机器翻译和命名实体识别等流行的 ML 任务具有可以用于比较模型的特定指标。例如,已经为文本生成提出了一系列不同的指标,从 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}

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