OpenCompass/docs/zh_cn/user_guides/metrics.md
2023-09-07 17:29:50 +08:00

63 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 评估指标
在评测阶段,我们一般以数据集本身的特性来选取对应的评估策略,最主要的依据为**标准答案的类型**,一般以下几种类型:
- **选项**:常见于分类任务,判断题以及选择题,目前这类问题的数据集占比最大,有 MMLU, CEval数据集等等评估标准一般使用准确率--`ACCEvaluator`。
- **短语**常见于问答以及阅读理解任务这类数据集主要包括CLUE_CMRC, CLUE_DRCD, DROP数据集等等评估标准一般使用匹配率--`EMEvaluator`。
- **句子**常见于翻译以及生成伪代码、命令行任务中主要包括Flores, Summscreen, Govrepcrs, Iwdlt2017数据集等等评估标准一般使用BLEU(Bilingual Evaluation Understudy)--`BleuEvaluator`。
- **段落**常见于文本摘要生成的任务常用的数据集主要包括Lcsts, TruthfulQA, Xsum数据集等等评估标准一般使用ROUGERecall-Oriented Understudy for Gisting Evaluation--`RougeEvaluator`。
- **代码**常见于代码生成的任务常用的数据集主要包括HumanevalMBPP数据集等等评估标准一般使用执行通过率以及 `pass@k`,目前 Opencompass 支持的有`MBPPEvaluator`、`HumanEvaluator`。
还有一类**打分类型**评测任务没有标准答案,比如评判一个模型的输出是否存在有毒,可以直接使用相关 API 服务进行打分,目前支持的有 `ToxicEvaluator`,目前有 realtoxicityprompts 数据集使用此评测方式。
## 已支持评估指标
目前 OpenCompass 中,常用的 Evaluator 主要放在 [`opencompass/openicl/icl_evaluator`](https://github.com/open-compass/opencompass/tree/main/opencompass/openicl/icl_evaluator)文件夹下, 还有部分数据集特有指标的放在 [`opencompass/datasets`](https://github.com/open-compass/opencompass/tree/main/opencompass/datasets) 的部分文件中。以下是汇总:
| 评估指标 | 评估策略 | 常用后处理方式 | 数据集 |
| ------------------ | -------------------- | --------------------------- | -------------------------------------------------------------------- |
| `ACCEvaluator` | 正确率 | `first_capital_postprocess` | agieval, ARC, bbh, mmlu, ceval, commonsenseqa, crowspairs, hellaswag |
| `EMEvaluator` | 匹配率 | None, dataset_specification | drop, CLUE_CMRC, CLUE_DRCD |
| `BleuEvaluator` | BLEU | None, `flores` | flores, iwslt2017, summscreen, govrepcrs |
| `RougeEvaluator` | ROUGE | None, dataset_specification | lcsts, truthfulqa, Xsum, XLSum |
| `HumanEvaluator` | pass@k | `humaneval_postprocess` | humaneval_postprocess |
| `MBPPEvaluator` | 执行通过率 | None | mbpp |
| `ToxicEvaluator` | PerspectiveAPI | None | realtoxicityprompts |
| `AGIEvalEvaluator` | 正确率 | None | agieval |
| `AUCROCEvaluator` | AUC-ROC | None | jigsawmultilingual, civilcomments |
| `MATHEvaluator` | 正确率 | `math_postprocess` | math |
| `MccEvaluator` | Matthews Correlation | None | -- |
| `SquadEvaluator` | F1-scores | None | -- |
## 如何配置
评估标准配置一般放在数据集配置文件中,最终的 xxdataset_eval_cfg 会传给 `dataset.infer_cfg` 作为实例化的一个参数。
下面是 `govrepcrs_eval_cfg` 的定义, 具体可查看 [configs/datasets/govrepcrs](https://github.com/open-compass/opencompass/tree/main/configs/datasets/govrepcrs)。
```python
from opencompass.openicl.icl_evaluator import BleuEvaluator
from opencompass.datasets import GovRepcrsDataset
from opencompass.utils.text_postprocessors import general_cn_postprocess
govrepcrs_reader_cfg = dict(.......)
govrepcrs_infer_cfg = dict(.......)
# 评估指标的配置
govrepcrs_eval_cfg = dict(
evaluator=dict(type=BleuEvaluator), # 使用常用翻译的评估器BleuEvaluator
pred_role='BOT', # 接受'BOT' 角色的输出
pred_postprocessor=dict(type=general_cn_postprocess), # 预测结果的后处理
dataset_postprocessor=dict(type=general_cn_postprocess)) # 数据集标准答案的后处理
govrepcrs_datasets = [
dict(
type=GovRepcrsDataset, # 数据集类名
path='./data/govrep/', # 数据集路径
abbr='GovRepcrs', # 数据集别名
reader_cfg=govrepcrs_reader_cfg, # 数据集读取配置文件配置其读取的split列等
infer_cfg=govrepcrs_infer_cfg, # 数据集推理的配置文件,主要 prompt 相关
eval_cfg=govrepcrs_eval_cfg) # 数据集结果的评估配置文件,评估标准以及前后处理。
]
```