大语言模型的评估指标

目录

一、混淆矩阵

1. 混淆矩阵的结构(二分类为例)

2.从混淆矩阵衍生的核心指标

3.多分类任务的扩展

4. 混淆矩阵的实战应用

二、分类任务核心指标

1. Accuracy(准确率)

2. Precision(精确率)

3. Recall(召回率)

二、生成任务核心指标

1. BLEU(Bilingual Evaluation Understudy)

2. ROUGE(Recall-Oriented Understudy for Gisting Evaluation)

3. PPL(Perplexity,困惑度)

三、指标对比与选型指南

四:总结


一、混淆矩阵

混淆矩阵是评估分类模型性能的核心工具,是计算准确率(Accuracy)、精确率(Precision)召回率(Recall)的基础工具,三者直接由混淆矩阵中的四个核心元素(TP、FP、FN、TN)定义。以矩阵形式直观展示模型的预测结果与真实标签的对比情况,尤其适用于二分类问题(可扩展至多分类)。以下是其完整解析:


1. 混淆矩阵的结构(二分类为例)
真实为正类(Positive)真实为负类(Negative)
预测为正类(Positive)True Positive (TP)False Positive (FP)
预测为负类(Negative)False Negative (FN)True Negative (TN)
  • TP(真正例):模型正确预测为正类的样本数(例:真实为垃圾邮件,模型判定为垃圾邮件)。

  • FP(假正例):模型错误预测为正类的样本数(例:真实为正常邮件,模型误判为垃圾邮件)。

  • FN(假负例):模型错误预测为负类的样本数(例:真实为垃圾邮件,模型漏判为正常邮件)。

  • TN(真负例):模型正确预测为负类的样本数(例:真实为正常邮件,模型判定为正常邮件)。

2.从混淆矩阵衍生的核心指标

所有分类评估指标(Accuracy/Precision/Recall/F1)均可通过混淆矩阵计算:

指标公式物理意义
准确率(Accuracy)模型预测正确的总体比例,但对类别不均衡数据敏感(如99%负类时,全预测负类准确率99%)。
精确率(Precision)模型预测为正类的样本中,真实为正类的比例(减少误报)。
召回率(Recall)真实为正类的样本中,被模型正确预测的比例(减少漏报)。
F1-Score精确率和召回率的调和平均数,平衡两者矛盾。
3.多分类任务的扩展

对于多分类问题(如猫、狗、鸟分类),混淆矩阵扩展为 3×3 或更大的矩阵

预测:猫预测:狗预测:鸟
真实:猫TP₁=505(猫→狗)3(猫→鸟)
真实:狗2(狗→猫)TP₂=454(狗→鸟)
真实:鸟1(鸟→猫)2(鸟→狗)TP₃=40
  • 对角线(TP₁, TP₂, TP₃):各类别正确预测数。

  • 非对角线:类别间的混淆情况(如“猫→狗”表示真实为猫但预测为狗的样本数)。

多分类指标计算方式

  • 宏平均(Macro):对每个类别的指标单独计算后取平均(平等看待所有类别)。

  • 微平均(Micro):合并所有类别的TP/FP/FN后计算整体指标(受大类别影响更大)。

4. 混淆矩阵的实战应用

场景1:医疗诊断(二分类)

  • 目标:癌症筛查需最小化漏诊(FN↓),允许一定误诊(FP↑)。

  • 优化策略:提高召回率(Recall),通过降低分类阈值(如概率>0.2即判为患病)。

场景2:电商评论情感分析(三分类:正面/中性/负面)

  • 问题:负面评论的识别对商家更重要。

  • 优化策略:针对“负面”类别单独优化召回率,同时监控宏平均F1-Score。

场景3:推荐系统(点击预测)

  • 需求:减少误推荐(FP↓),避免用户流失。

  • 优化策略:提高精确率(Precision),仅对高置信度样本(如概率>0.8)进行推荐。


二、分类任务核心指标

1. Accuracy(准确率)
  • 定义:模型预测正确的样本数量占总样本量的比重。

  • 公式

  • 特点

    • 简单直观,但类别不均衡时失效

    • 例:100个样本中95个正类,全预测正类时准确率95%,但模型无意义

  • 适用场景:类别分布均衡的二分类或多分类任务

  • 意义
    所有预测中正确的比例,反映模型的整体表现。

  • 局限性
    在类别不均衡时(如99%负类),即使全预测为负类,准确率也可高达99%,但模型无实际意义

2. Precision(精确率)
  • 定义:在被识别为正类别的样本中,为正类别的比例。

  • 公式

  • 意义:衡量模型预测的精准度

    • 例:癌症筛查中,减少误诊(FP)更重要,需高精确率

  • 别名:查准率

  • 应用场景
    需减少误报(FP)的任务,如垃圾邮件分类(避免将正常邮件误判为垃圾)。

3. Recall(召回率)
  • 定义:在所有正类别样本中,被正确识别为正类别的比例。

  • 公式

  • 意义:衡量模型对正类的覆盖能力

    • 例:金融风控中,漏掉欺诈交易(FN)损失大,需高召回率

  • 别名:查全率

  • 应用场景
    需减少漏报(FN)的任务,如癌症筛查(宁可误诊,不可漏诊)。


二、生成任务核心指标

1. BLEU(Bilingual Evaluation Understudy)
  • 定义:BLEU 分数是评估一种语言翻译成另一种语言的文本质量的指标. 它将“质量”的好坏定义为与人类翻译结果的一致性程度. 取值范围是[0, 1], 越接近1, 表明翻译质量越好.

  • 用途:机器翻译、文本生成质量评估

  • 原理:通过n-gram(连续n个词)匹配计算生成文本与参考文本的相似度

  • 公式

    • BP(Brevity Penalty):惩罚过短生成结果

    • pnpn​:n-gram精度(匹配次数/生成文本n-gram总数)

  • 特点

    • 值域0~1,越高越好

    • 对长文本连贯性评估不足

    • 侧重精确性(生成文本是否包含参考文本的关键词)。

  • BLEU举例:
        BLEU 根据`n-gram`可以划分成多种评价指标,其中`n-gram`指的是连续的单词个数为n,实践中,通常是取N=1~4,然后对进行加权平均. 
 

下面举例说计算过程(基本步骤):
1. 分别计算candidate句和reference句的N-grams模型,然后统计其匹配的个数,计算匹配度.
2. 公式:candidate和reference中匹配的 n−gram 的个数 /candidate中n−gram 的个数.
Ø 假设机器翻译的译文candidate和一个参考翻译reference如下:

candidate: It is a nice day today
reference: today is a nice day
Ø 使用1-gram进行匹配:
candidate: {it, is, a, nice, day, today}
reference: {today, is, a, nice, day}
结果:其中{today, is, a, nice, day}匹配,所以 匹配度为5/6
Ø 使用2-gram进行匹配:
candidate: {it is, is a, a nice, nice day, day today}
reference: {today is, is a, a nice, nice day}
结果:其中{is a, a nice, nice day}匹配,所以 匹配度为3/5

Ø 使用3-gram进行匹配:

candidate: {it is a, is a nice, a nice day, nice day today}
reference: {today is a, is a nice, a nice day}
结果:其中{is a nice, a nice day}匹配,所以 匹配度为2/4
Ø 使用4-gram进行匹配:
candidate: {it is a nice, is a nice day, a nice day today}
reference: {today is a nice, is a nice day}
结果:其中{is a nice day}匹配,所以 匹配度为1/3

通过上面的例子分析可以发现,匹配的个数越多,BLEU值越大,则说明候选句子更好. 但是也会出现下面的极端情况:

极端例子:
candidate: the the the the
reference: The cat is standing on the ground
如果按照1-gram的方法进行匹配,则匹配度为1,显然是不合理的
优化:
首先,计算一个单词在任意一个参考句子出现的最大次数, 然后用每个(非重复)单词在参考句子中出现的最大次数来修剪--单词在候选句子的出现次数. 如下所示的公式:
其中k表示在候选句子(candidate)中出现的第k个词语, c k 则代表在候选句子中这个词语出现的次数,而s k 则代表在参考文本(reference)中这个词语出现的次数.
优化极端例子
candidate: the the the the
reference: The cat is standing on the ground
如果按照1-gram的方法进行匹配,ck=4 sk=2 ,countk=min(4,2)=2
则匹配度为2/4=1/2.

代码
# 安装nltk的包-->pip install nltk
from nltk.translate.bleu_score import sentence_bleu
def cumulative_bleu(reference, candidate):
    bleu_1_gram = sentence_bleu(reference, candidate, weights=(1, 0, 0, 0))
    bleu_2_gram = sentence_bleu(reference, candidate, weights=(0.5, 0.5, 0, 0))
    bleu_3_gram = sentence_bleu(reference, candidate, weights=(0.33, 0.33, 0.33, 0))
    bleu_4_gram = sentence_bleu(reference, candidate, weights=(0.25, 0.25, 0.25, 0.25))
    return bleu_1_gram, bleu_2_gram, bleu_3_gram, bleu_4_gram


# 生成文本
condidate_text = ["This", "is", "some", "generated", "text"]
# 参考文本列表
reference_texts = [["This", "is", "a", "reference", "text"],
["This", "is", "another", "reference", "text"]]
# 计算 Bleu 指标
c_bleu = cumulative_bleu(reference_texts, condidate_text)
# 打印结果
print("The Bleu score is:", c_bleu)
# The Bleu score is: (0.6, 0.387, 1.5945e-102, 9.283e-155)
2. ROUGE(Recall-Oriented Understudy for Gisting Evaluation)
  • 定义:ROUGE 指标是在机器翻译、自动摘要、问答生成等领域常见的评估指标. ROUGE 通过将模型生 成的摘要或者回答与参考答案(一般是人工生成的)进行比较计算,得到对应的得分

  • 用途:文本摘要、对话生成评估

  • 常见变体

    • ROUGE-N:基于n-gram的召回率

    • ROUGE-L:基于最长公共子序列(LCS)

      • 评估生成文本与参考文本的语义覆盖度

  • 特点

    • ROUGE-N侧重词汇重叠,ROUGE-L关注语义连贯

    • 值域0~1,越高越好

    • 侧重内容覆盖度(生成文本是否包含参考文本的核心信息)。

    • 侧重召回率

  • ROUGE举例:

        ROUGE指标与BLEU指标非常类似,均可用来衡量生成结果和标准结果的匹配程度,不同的是ROUGE基于召回率,BLEU更看重准确率。ROUGE也分为四种方法:ROUGE-N, ROUGE-L, ROUGE-W, ROUGE-S.

下面举例说计算过程(这里只介绍ROUGE_N):

基本步骤:Rouge-N实际上是将模型生成的结果和标准结果按N-gram拆分后,计算召回率.

Ø 假设模型生成的文本candidate和一个参考文本reference如下:

candidate: It is a nice day today
reference: today is a nice day
Ø 使用ROUGE-1进行匹配:
candidate: {it, is, a, nice, day, today}
reference: {today, is, a, nice, day}
结果:其中{today, is, a, nice, day}匹配,所以匹配度为5/5=1,这说明生成的内容完全覆盖了参考文本中的所有单词,质量较高.
通过类似的方法,可以计算出其他ROUGE指标(如ROUGE-2、ROUGE-L、ROUGE-S)的评分.

代码

# 安装rouge-->pip install rouge
from rouge import Rouge

# 生成文本
generated_text = "This is some generated text."
# 参考文本列表
reference_texts = ["This is a reference text.", "This is another generated reference text."]
# 计算 ROUGE 指标
rouge = Rouge()
scores = rouge.get_scores(generated_text, reference_texts[1])

# 打印结果
print("ROUGE-1 precision:", scores[0]["rouge-1"]["p"])
print("ROUGE-1 recall:", scores[0]["rouge-1"]["r"])
print("ROUGE-1 F1 score:", scores[0]["rouge-1"]["f"])
# ROUGE-1 precision: 0.8
# ROUGE-1 recall: 0.6666666666666666
# ROUGE-1 F1 score: 0.7272727223140496
3. PPL(Perplexity,困惑度)
  • 定义:PPL用来度量一个概率分布或概率模型预测样本的好坏程度. PPL越小,标明模型越好.

  • 用途:语言模型(如GPT、BERT)的预训练评估

  • 定义:模型对测试数据集的“困惑程度”,反映预测能力

  • 公式

    • NN为测试集总词数,PP为模型预测概率

  • 特点

    • PPL越低,模型对语言分布拟合越好

    • 与生成质量间接相关(低PPL的模型生成文本更流畅,但未必内容正确)。

    • 例:GPT-3的PPL约20,远优于传统RNN模型(PPL>100)

代码

import math

#定义语料库
sentences = [
['I', 'have', 'a', 'pen'],
['He', 'has', 'a', 'book'],
['She', 'has', 'a', 'cat']
]
#定义语言模型
unigram = {'I':1/12, 'have':1/12, 'a': 3/12, 'pen':1/12, 'He':1/12,'has':2/12,'book':1/12,'She':1/12, 'cat':1/12}

# 计算困惑度
perplexity = 0
for sentence in sentences:
    sentence_prob = 1
    for word in sentence:
        sentence_prob *= unigram[word]
    temp = -math.log(sentence_prob, 2)/len(sentence)
    perplexity+=2**temp
perplexity = perplexity/len(sentences)
print('困惑度为:', perplexity)
# 困惑度为: 8.15

三、指标对比与选型指南

任务类型推荐指标核心关注点
文本分类Accuracy, F1, AUC-ROC类别均衡性、精确率与召回率平衡
机器翻译BLEU, METEORn-gram匹配、语义相似度
文本摘要ROUGE-L, ROUGE-1/2内容覆盖度、关键信息保留
语言模型预训练PPL语言建模能力(预测下一个词的能力)
情感分类Accuracy(均衡数据),F1(不均衡数据)

 四:总结

        Accuracy、Precision、Recall主要用于分类任务(如翻译、摘要),评估模型预测的准确性、精确性和覆盖性。而BLEU、ROUGE用于生成任务(如情感分析、意图识别),如机器翻译和文本摘要,评估生成文本的质量。PPL(困惑度)则用于评估语言模型本身的预测能力,不直接涉及具体任务的结果。以下是它们的关联与区别详解:

核心定位与任务类型

指标类型适用任务核心目标
BLEU/ROUGE/PPL生成任务(文本生成、翻译、摘要)评估生成文本的质量(内容匹配、流畅性)
Accuracy/Precision/Recall分类任务(二分类、多分类)评估分类结果的准确性、覆盖度与精准度
BLEU指标: 评估一种语言翻译成另一种语言的文本质量的指标.. 取值范围是[0, 1], 越接近1, 表明翻译质量越好.
ROUGE指标 ROUGE指标用来衡量生成结果和标准结果的匹配程 度,不同的是ROUGE基于召回率,BLEU更看重准确率。
PPL指标 PPL用来度量一个概率分布或概率模型预测样本的好 坏程度.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gorgor在码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值