评估评判模型

本指南介绍了如何通过将评判模型的表现与人工评分进行比较来评估评判模型。

本页面涵盖以下主题:

  • 准备数据集:了解如何使用人工评分来构建数据集,以作为评估的标准答案。
  • 可用指标:了解用于衡量判断模型与人工评分之间一致性的指标。
  • 评估基于模型的指标:查看有关如何运行评估作业并获取评判模型质量得分的代码示例。

对于基于模型的指标,Gen AI Evaluation Service 会使用基础模型(例如 Gemini)作为评判模型来评估您的模型。如需详细了解评判模型,请参阅“高级评判模型自定义系列”,其中介绍了可用于评估和配置评判模型的更多工具。

如需了解基本的评估工作流,请参阅 Gen AI Evaluation Service 快速入门。高级评判模型自定义系列包含以下页面:

  1. 评估评判模型(本页)
  2. 评判模型自定义之提示工程
  3. 配置评判模型

概览

使用人工评判员来评估大语言模型 (LLM) 可能成本很高且非常耗时。而使用评判模型则是一种扩缩能力更强的 LLM 评估方法。 Gen AI Evaluation Service 默认使用经过配置的 Gemini 2.0 Flash 模型作为评判模型,并提供可自定义的提示,以便您针对各种应用场景评估模型。

以下部分介绍如何针对理想的应用场景评估自定义评判模型。

指标类型

Gen AI Evaluation Service 使用两种基于模型的指标来评估评判模型。

指标类型 说明 使用场景
PointwiseMetric 根据特定标准(例如流畅度或安全性)为单个模型的输出分配数值得分。 需要按比例(例如,从 1 到 5 评分回答的实用性)对单个模型回答进行评分时。
PairwiseMetric 比较两个模型(候选模型和基准模型)的输出,并选择首选模型。 当您需要确定两个模型针对给定提示的回答哪个更好时。

准备数据集

如要评估基于模型的指标,您需要准备一个包含人工评分作为标准答案的评估数据集。目标是将通过基于模型的指标得到的评分与人工评分进行对比,以此判断基于模型的指标是否能提供适合您应用场景的理想质量。

您的数据集必须包含一个用于人工评分的列,该列与您要评估的基于模型的指标相对应。下表显示了每种指标类型所需的人工评分列:

基于模型的指标 必需的人工评分列
PointwiseMetric {metric_name}/human_rating
PairwiseMetric {metric_name}/human_pairwise_choice

可用指标

Gen AI Evaluation Service 会根据可能的结果数量提供不同的指标。

二元结果的指标

对于仅返回 2 种得分(例如 0 和 1)的 PointwiseMetric 以及仅具有 2 种偏好类型(模型 A 或模型 B)的 PairwiseMetric,有以下指标可用:

指标 计算
二元分类平衡准确率 \( (1/2)*(True Positive Rate + True Negative Rate) \)
二元分类平衡 F1 得分 \( ∑_{i=0,1} (cnt_i/sum) * f1(class_i) \)
混淆矩阵 使用 confusion_matrixconfusion_matrix_labels 字段可计算真正例率 (TPR)、真负例率 (TNR)、假正例率 (FPR) 和假负例率 (FNR) 等指标。

例如,以下结果:
confusion_matrix = [[20, 31, 15],
    [10, 11,  3],
   [ 3,  2,  2]]
confusion_matrix_labels = ['BASELINE', 'CANDIDATE', 'TIE']
转换为以下混淆矩阵:
             BASELINE |  CANDIDATE | TIE
   BASELINE.    20         31        15
   CANDIDATE.   10         11         3
   TIE.         3           2         2 |

多种结果的指标

对于返回超过 2 种得分(例如 1 到 5)的 PointwiseMetric 以及具有超过 2 种偏好类型(模型 A、模型 B 或平局)的 PairwiseMetric,有以下指标可用:

指标 计算
多类别平衡准确率 \( (1/n) *∑_{i=1...n}(recall(class_i)) \)
多类别平衡 F1 得分 \( ∑_{i=1...n} (cnt_i/sum) * f1(class_i) \)

其中:

  • \( f1 = 2 * precision * recall / (precision + recall) \)

    • \( precision = True Positives / (True Positives + False Positives) \)

    • \( recall = True Positives / (True Positives + False Negatives) \)

  • \( n \) :类别数

  • \( cnt_i \) :标准答案数据中 \( class_i \) 的数量

  • \( sum \):标准答案数据中的元素数量

如需计算其他指标,您可以使用一些开源库。

评估基于模型的指标

以下示例使用自定义的流畅度定义更新了基于模型的指标,然后评估了该指标的质量。

from vertexai.preview.evaluation import {
   AutoraterConfig,
   PairwiseMetric,
}
from vertexai.preview.evaluation.autorater_utils import evaluate_autorater


# Step 1: Prepare the evaluation dataset with the human rating data column.
human_rated_dataset = pd.DataFrame({
  "prompt": [PROMPT_1, PROMPT_2],
    "response": [RESPONSE_1, RESPONSE_2],
  "baseline_model_response": [BASELINE_MODEL_RESPONSE_1, BASELINE_MODEL_RESPONSE_2],
    "pairwise_fluency/human_pairwise_choice": ["model_A", "model_B"]
})

# Step 2: Get the results from model-based metric
pairwise_fluency = PairwiseMetric(
    metric="pairwise_fluency",
    metric_prompt_template="please evaluate pairwise fluency..."
)

eval_result = EvalTask(
    dataset=human_rated_dataset,
    metrics=[pairwise_fluency],
).evaluate()

# Step 3: Calibrate model-based metric result and human preferences.
# eval_result contains human evaluation result from human_rated_dataset.
evaluate_autorater_result = evaluate_autorater(
  evaluate_autorater_input=eval_result.metrics_table,
  eval_metrics=[pairwise_fluency]
)

后续步骤