评价的三个核心问题#
自然语言处理的输出往往没有唯一标准答案,评价需要回答三个问题:
- 评价数据:测试集是否与训练集独立?领域、时效性、输入输出格式是否匹配真实场景?
- 评价方法:人工评价、基于统计的自动指标,还是用模型自动打分?
- 评价指标:输出是标签、分数还是一段文本?不同输出形式需要不同指标。
把数据、任务、指标和基线固定下来,就形成了 基准测试(Benchmark)。常见基准包括 GLUE、SQuAD、WMT、CNN/Daily Mail、GSM8K 等。Benchmark 让不同系统可以在同一条件下比较,但也可能带来过拟合基准的问题。
NLP 任务大体分为两类:
- 自然语言理解(NLU):文本分类、序列标注、文本蕴含等,输出通常是类别或分数,有相对明确的标准答案;
- 自然语言生成(NLG):机器翻译、摘要、对话等,输出是一段文本,通常没有唯一答案。
NLU 分类任务的评价#
准确率#
准确率是最直观的指标:预测正确的样本占总样本的比例。
Accuracy=ntotalncorrect准确率简单,但在类别不平衡时会误导。例如 99% 的样本是负类,一个永远预测负类的模型也能得到 99% 的准确率,却完全没有识别正类的能力。
混淆矩阵#
二分类的混淆矩阵把预测结果分为四类:
| 预测正 | 预测负 |
|---|
| 真实正 | TP(真正例) | FN(假负例) |
| 真实负 | FP(假正例) | TN(真负例) |
- TP:实际为正,预测为正;
- FN:实际为正,预测为负(漏报);
- FP:实际为负,预测为正(误报);
- TN:实际为负,预测为负。
由混淆矩阵可以计算:
Accuracy=TP+TN+FP+FNTP+TN精确率、召回率与 F1(Fβ)#
精确率(Precision)回答“被判为正例的样本中有多少是真的正例”,类似可信度:
P=TP+FPTP召回率(Recall)回答“真正的正例中有多少被找出来了”,反映系统的发掘能力:
R=TP+FNTP两者通常此消彼长。
- 只判断少量高置信样本可以提高精确率,但会漏掉大量正例(漏报);
- 把所有样本都判为正例可以提高召回率,但会把大量负例判为正例(误报)。
F1 是精确率和召回率的调和平均:
F1=P+R2PR更一般地,Fβ 用 β 调整召回率的权重:
Fβ=β2P+R(1+β2)PRβ>1 更看重召回率,β<1 更看重精确率。例如疾病筛查更看重召回率,复查阶段更看重精确率。
多分类:宏平均、微平均与加权平均#
多分类问题单独讨论某个类别时,事实上就是一个二分类问题,每一个类别都有一个单独的混淆矩阵。用 C 表示类别总数,Pi,Ri,F1i 分别表示第 i 个类别的精确率、召回率和 F1。
对于第 i 个类别,二分类可以看成“该类别” vs “其他类别”。
Pi=TPi+FPiTPi,Ri=TPi+FNiTPi,F1i=Pi+Ri2PiRi
-
宏平均(Macro):先对每个类别 i 计算 P/R/F1,再取算术平均。每个类别的权重相同,小类别的影响被放大。
Macro-P=C1i=1∑CPi,Macro-R=C1i=1∑CRi,Macro-F1=Macro-P+Macro-R2⋅Macro-P⋅Macro-R
-
微平均(Micro):先把所有类别的 TP、FP、FN 相加,再用汇总后的混淆矩阵计算 P/R/F1。每个样本的权重相同,大类别主导结果。
Micro-P=∑i=1C(TPi+FPi)∑i=1CTPi,Micro-R=∑i=1C(TPi+FNi)∑i=1CTPi,Micro-F1=Micro-P+Micro-R2⋅Micro-P⋅Micro-R
-
加权平均(Weighted):按每个类别的样本数加权平均,介于宏平均和微平均之间。
Weighted-P=i=1∑CwiPi,Weighted-R=i=1∑CwiRi,Weighted-F1=Weighted-P+Weighted-R2⋅Weighted-P⋅Weighted-R
如果关心少数类的表现,宏平均更合适;如果关心整体样本的正确率,微平均更合适。
TIP有的定义把 F1 的宏平均定义为各类别 F1 的算术平均,而有的定义为先算宏平均 P 和 R,再用调和平均得到宏平均 F1。两者在类别不平衡时可能差异较大。
ROC 与 AUC#
ROC 曲线以假正例率(FPR,判定出所有负例中被误判为正例的比例)为横轴,真正例率(TPR,判定出所有正例中被正确识别的比例)为纵轴:
TPR=TP+FNTP,FPR=FP+TNFP通过改变分类阈值,可以得到一系列 (FPR, TPR) 点,连成 ROC 曲线。曲线下的面积就是 AUC:
- AUC = 0.5:随机猜测;
- AUC = 1:完美分类;
- AUC 越大,模型在不同阈值下的整体排序能力越强。
AUC 不依赖具体阈值,适合比较模型的排序能力,但在极度不平衡的数据上仍可能给出过于乐观的印象。
NLU 回归任务的评价#
回归任务输出连续值,例如文本相似度、作文评分、质量打分。常用指标包括:
平均绝对误差(MAE)#
MAE=n1i=1∑n∣yi−y^i∣MAE 衡量预测值与真实值的平均绝对偏差,对离群值不敏感,单位与原始数据一致。
均方根误差(RMSE)#
RMSE=n1i=1∑n(yi−y^i)2RMSE 对对偏离值更敏感,因为误差被平方后再开根号。它的单位也与原始数据一致,比均方误差(MSE)更容易解释。
皮尔逊相关系数#
皮尔逊相关系数衡量两个变量的线性相关性:
r=σXσYcov(X,Y)=∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2∑i=1n(xi−xˉ)(yi−yˉ)r∈[−1,1]:r=1 完全正相关,r=−1 完全负相关,r=0 没有线性关系。皮尔逊相关系数对离群值敏感,且只能捕捉线性关系。
斯皮尔曼相关系数#
斯皮尔曼相关系数先对两个变量分别排序,再对秩计算皮尔逊相关系数:
ρ=r(rank(X),rank(Y))它衡量单调关系,对异常值更稳健,常用于排序任务和人工评分一致性分析。
NLG 任务的评价#
生成任务的输出是一段文本,参考译文或参考摘要往往不止一种写法。评价方法可以分为三类:
- (早期)基于字符串重叠的统计指标:BLEU、ROUGE;
- 基于预训练模型的语义指标:BERTScore、COMET;
- 基于大模型的评价:LLM-as-a-Judge。
BLEU#
BLEU(Bilingual Evaluation Understudy)最初用于机器翻译,核心是衡量候选译文与参考译文的 n-gram 匹配程度,本质上是精确率 指标
对每个 n,计算 截断精确率(clipped precision):候选译文中的 n-gram 匹配次数不能超过参考译文中该 n-gram 的出现次数,避免单个词刷分。
pn=∑C∈C∑g∈CcountC(g)∑C∈C∑g∈Cmin(countC(g),maxR∈RcountR(g))其中:
- g:n-gram;
- C:候选译文;
- R:参考译文。
- 分子是候选译文中 n-gram 的匹配次数,分母是候选译文中 n-gram 的总数。
BLEU 通常取 n=1,…,4,用几何平均组合:
BLEU=BP⋅exp(n=1∑Nwnlogpn)wn 通常取 1/N。如果某个 pn=0,几何平均会变成 0,实际实现中会做平滑。
BLEU 还有一个 长度惩罚(Brevity Penalty, BP),相较于参考译文越短惩罚越重,防止模型通过输出很短的句子获得高精确率:
BP={1,exp(1−cr),c>rc≤r其中:
BLEU 的优点和局限:
- 优点:自动化、可复现、与人工评价在语料级别相关性较高;
- 局限:只看表面 n-gram 匹配,忽略语义和流畅性,对词序和长距离调序不敏感,且依赖参考译文的质量。
一个简短的计算例子
R: “The cat is on the mat”
C: “The cat the cat on the mat”
p1 计算: 分母是候选译文的 unigram 总数 6,
- 候选译文中 the(3)、cat(2)、on(1)、mat(1),
- 参考译文中 the(2)、cat(1)、is(1)、on(1)、mat(1)
- 所以clip后的分子是 the(2)、cat(1)、on(1)、mat(1) ,p1=4/6=2/3。
p2 计算:分母是候选译文的 bigram 总数 5,
- 候选译文中 the cat(2)、cat the(1)、cat on(1)、on the(1)、the mat(1)
- 参考译文中 the cat(1)、cat is(1)、is on(1)、on the(1)、the mat(1)
- 所以clip后的分子是 the cat(1)、on the(1)、the mat(1) ,p2=3/5。
BP 计算:候选译文长度 c=6,参考译文长度 r=7,所以 BP=exp(1−7/6)≈0.85。
ROUGE#
ROUGE(Recall-Oriented Understudy for Gisting Evaluation)主要用于摘要评价,关注 召回率:生成的摘要 Y^ 是否覆盖了参考摘要 Y 的主要内容。
ROUGE-N 计算 n-gram 召回率:
ROUGE-N=∑R∈R∑g∈RcountY(g)∑R∈R∑g∈Rmin(countY^(g),countY(g))ROUGE-L 基于最长公共子序列(LCS),同时考虑精确率和召回率:
RLCS=∣Y∣LCS(Y^,Y),PLCS=∣Y^∣LCS(Y^,Y)FLCS=RLCS+β2PLCS(1+β2)RLCSPLCS实际上是最长公共子序列的 F1 值。β 通常取得较大,使指标更偏向召回率。ROUGE 还有 ROUGE-W(加权 LCS)、ROUGE-S(skip-gram)等变体。
BERTScore#
BLEU 和 ROUGE 无法识别同义表达。BERTScore 用预训练模型把候选句和参考句编码为上下文向量序列 h 和 h^,
参考句x=[x1,x2,…,xn],候选句x^=[x^1,…,x^m]h=[h1,h2,…,hn]=BERT(x)h^=[h^1,h^2,…,h^m]=BERT(x^)对于候选文本中的每一个 token (对应的向量 h^j),计算它与参考文本中每一个 token 的余弦相似度。再做贪心匹配(max):
RBERT=∣x∣1xi∈x∑x^j∈x^maxcos(hi,h^j)PBERT=∣x^∣1x^j∈x^∑xi∈xmaxcos(hi,h^j)FBERT=PBERT+RBERT2PBERTRBERT由于停用词可能主导匹配,实际实现常用 IDF 权重降低常见词的影响。
PBERT-IDF=∑x^j∈x^wj∑x^j∈x^wjmaxxi∈xcos(hi,h^j),RBERT-IDF=∑xi∈xwi∑xi∈xwimaxx^j∈x^cos(hi,h^j)IDF 权重 wi 公式如下:
wi=logni+1NBERTScore 能捕捉语义相似性,但依赖编码器的语言和领域,计算成本也比 n-gram 指标高。
COMET#
COMET(Crosslingual Optimized Metric for Evaluation of Translation)是专门用于机器翻译的预训练评价模型。它把源文本、候选译文和参考译文一起输入多语言编码器,输出质量分数。
COMET 有两种架构:
- 估计器模型(Estimator):直接回归一个人工标注的质量分数,用 MSE 训练;
- 排序模型(Ranking):用三元组(参考译文、较好译文、较差译文)训练,用 Triplet Margin Loss 让较好的译文更接近参考译文。
两者的区别:
- 估计器:能给出绝对分数,适合系统比较,但需要高质量人工评分数据;
- 排序模型:只需要相对偏好,数据更容易收集,但不能直接输出绝对分数。
LLM-as-a-Judge#
随着生成任务越来越开放,统计指标和预训练指标都难以覆盖所有评价维度。LLM-as-a-Judge 用能力较强的大模型代替人类评价,常见形式包括:
- 打分:让评委模型按 1–10 分打分;
- 成对比较:给两个回答,判断哪个更好;
- 多项选择/是非判断:把评价转化为选择题。
评价流程通常包括:
- 设计指令模板;
- 选择评委模型;
- 解析输出;
- 后处理汇总。
评委模型可以是通用大模型,也可以在评价数据上专门微调。
LLM-as-a-Judge 的优点:
它的缺点:
- 位置偏见:倾向于选择某个位置的答案;
- 长度偏见:倾向于给更长的答案更高分;
- 自我偏见:倾向于给自己或相似模型的答案更高分;
- 稳定性:模型版本更新会导致结果不可复现;
- 隐私风险:把待评价内容发送给外部模型可能泄露数据。
常见缓解方法包括:
- 交换答案顺序;
- 控制长度;
- 使用多个评委;
- 人工抽检校准。
MT-Bench 等研究表明,GPT-4 的评价与人类评价一致率可以接近甚至超过人类之间的一致率,但这不意味着可以完全取代人工评价。
评价实践中的注意事项#
- 测试集污染:预训练语料可能包含测试集,导致分数虚高;
- 指标饱和:模型在基准上接近上限后,指标区分度下降;
- 指标与目标不一致:BLEU 高不代表翻译好,准确率高不代表模型可靠;
- 多重比较:在多个基准上反复调参,容易过拟合基准;
- 人工评价:最终仍需人工评估流畅性、事实性、安全性和有用性。
大语言模型的专门评测基准(MMLU、AlpacaEval、Chatbot Arena)见 大语言模型的评价。