大模型评测指标与评测集构建:自动指标与人工评估的落地方法

大模型评测是模型选型、版本迭代和应用上线的必经环节。一套可靠的评测方案要回答三个问题:用哪些指标、用哪些数据、由谁做判断。单看某个自动指标容易得出失真结论,BLEU分数高的翻译可能语义不通,ROUGE分数好的摘要可能重复原文。本文给出可直接落地的评测指标组合、评测集构建方法和工程化流程。

为什么大模型评测不能只看单一指标

不同任务类型需要不同的指标组合。生成类任务看语义相关性与事实性,分类抽取类任务看准确率与F1,推理类任务看推理链完整性,代码类任务看编译通过率与用例通过率。公开基准存在刷分现象,评测集经过模型训练数据污染后分数虚高。评测集需要定期更新,并保留一份不公开的留出集,用于上线前的最终验证。

实践中常见的误区是只统计平均分。平均分会掩盖极端失败案例:某个维度从90分掉到30分,平均分只下降几个点。评测报告应拆分维度输出,并对高风险维度设置独立达标线。

自动评测指标:BLEU、ROUGE与语义相似度

自动指标适合快速回归。用HuggingFace evaluate库计算词面重合指标,用Embedding计算语义相似度:

from evaluate import load
bleu = load('bleu')
rouge = load('rouge')
preds = ['模型输出文本A', '模型输出文本B']
refs = [['参考答案A1', '参考答案A2'], ['参考答案B1']]
print(bleu.compute(predictions=preds, references=refs))
print(rouge.compute(predictions=preds, references=refs))

import numpy as np
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('BAAI/bge-large-zh-v1.5')
vec = lambda s: model.encode(s, normalize_embeddings=True)
sim = np.dot(vec('接口返回空指针'), vec('接口抛出了空指针异常'))
print('语义相似度:', round(float(sim), 4))

代码生成类任务直接跑单元测试,通过率比任何文本指标都可靠。HumanEval的pass@k是典型做法:每个问题生成k个答案,至少一个通过用例即视为命中。对检索增强任务,还需要召回率、准确率与答案覆盖率三个指标联合看,检索到了但没答对和没检索到是两类问题。

大模型评测集构建:来源、规模与分层

评测集按来源分三类:公开榜单数据、内部业务数据、对抗性数据。业务场景优先用内部数据,公开数据与业务分布存在偏差。构建步骤:先按业务划分评测维度(问答、改写、摘要、工具调用、安全合规),每个维度准备20-50条代表性样本,写明期望行为;再人工抽检标注一致性,剔除有争议样本。规模不需要大,500条左右分层评测集比5万条噪声数据更有区分度。

评测集版本管理用Git或DVC,每条样本带唯一ID。样本格式固定为:输入、标准输出、判定方式(自动/人工)、难度、风险标签。数据集版本与模型版本一一对应,历史结果才能横向对比。

基于LLM的裁判评测与人工评估配合

开放性任务没有标准答案,可用裁判模型打分。做法:提供指令、待评内容与评分细则,让LLM按1-5分打分并输出依据。裁判模型自身存在偏好偏差(倾向长答案、倾向自己同源模型),所以抽样人工复核不能省。人工评估要定义维度:准确性、完整性、安全性、格式合规,每个维度独立打分,多人独立评估后计算一致性指标。

import json, statistics
results = []
for case in eval_set:
    out = model.generate(case['input'])
    score = judge_model.score(case['input'], out, case['rubric'])
    results.append({'case_id': case['id'], 'dimension': case['dim'], 'score': score})
scores = [r['score'] for r in results]
report = {'mean': round(statistics.mean(scores), 4),
          'pass_rate': round(sum(s >= 4 for s in scores) / len(scores), 2),
          'per_dim': {d: round(statistics.mean([r['score'] for r in results if r['dimension']==d]), 4)
                      for d in set(r['dimension'] for r in results)}}
print(json.dumps(report, ensure_ascii=False, indent=2))

评测流程的工程化落地

评测跑通后固化为流水线:模型推理生成结果,自动指标计算入库,结果按版本对比,达到阈值才允许上线。评测环境与生产环境隔离,评测数据不经手在线服务。结果可视化输出雷达图与维度明细,异常波动自动告警。评测不是一次性工作,随着业务发展持续扩充样本、校准裁判提示词、更新指标口径,模型评估结果才可信。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/da-mo-xing-ping-ce-zhi-biao-yu-ping-ce-ji-gou-jian-zi-dong/

(0)
小编小编
上一篇 4小时前
下一篇 3小时前

相关推荐