为您的任务选择指标
因此,您已经训练了您的模型,并且想要查看它在您选择的数据集上的表现如何。从哪里开始呢?
选择评估指标没有“一刀切”的方法,但需要牢记一些良好的指导原则
指标类别
指标有 3 个高级别类别
- 通用指标,可应用于各种情况和数据集,例如精确率和准确率。
- 特定于任务的指标,仅限于给定的任务,例如机器翻译(通常使用指标 BLEU 或 ROUGE 评估)或命名实体识别(通常使用 seqeval 评估)。
- 特定于数据集的指标,旨在衡量模型在特定基准上的性能:例如,GLUE 基准 有一个专用的 评估指标。
让我们看看这三种情况
通用指标
机器学习社区中使用的许多指标都非常通用,可以应用于各种任务和数据集。
对于像 准确率 和 精确率 这样的指标就是这种情况,它们可以用于评估标记的(监督的)数据集,以及 困惑度,它可以用于评估不同类型的(无监督的)生成任务。
要查看给定指标的输入结构,您可以查看其指标卡。例如,在 精确率 的情况下,格式为
>>> precision_metric = evaluate.load("precision")
>>> results = precision_metric.compute(references=[0, 1], predictions=[0, 1])
>>> print(results)
{'precision': 1.0}
特定于任务的指标
流行的机器学习任务,如机器翻译和命名实体识别,都有特定的指标可用于比较模型。例如,已经为文本生成提出了一系列不同的指标,从 BLEU 及其衍生版本(如 GoogleBLEU 和 GLEU)到 ROUGE、MAUVE 等。
您可以通过以下方式找到适合您任务的指标:
- 查看 任务页面 以了解哪些指标可用于评估给定任务的模型。
- 查看 Papers With Code 等网站上的排行榜(您可以按任务和数据集搜索)。
- 阅读相关指标的指标卡,并查看哪些指标适合您的用例。例如,请参阅 BLEU 指标卡 或 SQuaD 指标卡。
- 查看发表在该主题上的论文和博文,并查看他们报告的指标。这会随着时间的推移而发生变化,因此请尝试选择最近几年的论文!
数据集特定指标
某些数据集具有与其关联的特定指标——这在流行的基准测试(如 GLUE 和 SQuAD)中尤其常见。
💡 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}
您可以通过查阅给定数据集的“数据集预览”功能或数据集卡片来查找数据集结构的示例,并且您可以根据指标卡片查看如何使用其专用的评估函数。