生成式模型的质量评估标准

如何评价生成式模型的效果?

Quality: 真实性(逼真,狗咬有四条腿)

Diversity: 多样性(哈巴狗,金毛,吉娃娃,中华田园犬)

IS

Inception Score
K L = p ( y ∣ x ) ∗ l o g p ( y ∣ x ) ) l o g ( p ( y ) KL = p(y|x)*log \frac{p(y|x))}{log(p(y)} KL=p(yx)loglog(p(y)p(yx))

Inception-V3是一个图像分类的模型,在imageNet上进行训练得到的预训练模型

p(y|x):即我们的模型生成的照片,它属于某个类别的概率

p(y):即边缘概率
在这里插入图片描述

#用代码实现IS 
def calculate_inception_score(p_yx, eps=1E-16):
    # p_yx 即p(y|x)
    # calculate p(y)
    p_y = expand_dims(p_yx.mean(axis=0), 0)
    #kl divergence for each image
    kl_d = p_yx * (log(p_yx + eps) - log(p_y + eps))
    # sum over classes 
    sum_kl_d = kl_d.sum(axis=1)
    # average over images 
    avg_kl_d = mean(sum_kl_d)
    # undo the logs 
    is_score = exp(avg_kl_d)
    return is_score

FID

Frechlet Inception Distance(FID)

鉴于IS的缺点,就有了FID的出现,它是一个距离的量,即和真实的图片(训练集)的一个对比

FID也是用Inception-V3这个预训练好的图像分类模型,但它用的不是分类概率了,而是中间的一个feature vectors

即:把生成的照片和训练集中真实的照片同时送入到Inception-V3中,将二者经过Inception-V3模型得到的中间的特征向量拿出来,算出一个高斯分布的统计量,再去计算这两个分布之间的一个W2距离。

在这里插入图片描述
d 2 = ∣ ∣ μ 1 − μ 2 ∣ ∣ 2 + T r ( C 1 + C 2 − 2 C 1 ∗ C 2 ) d^2=||\mu_1-\mu_2||^2+Tr(C_1+C_2-2\sqrt{C_1*C_2}) d2=∣∣μ1μ22+Tr(C1+C22C1C2 )

# 用代码实现FID

def calculate_fid(act1, act2):
    '''
    act1:2048dim的隐变量,真实的图片送入Inception-V3中得到的
    act2:2048dim的隐变量,预测的图片送入Inception-V3中得到的
    '''
    # calculate mean and covariance statistics 
    mu1, sigma1 = act1.mean(axis=0), cov(act1, rowvar=False)
    mu2, sigma2 = act2.mean(axis=0), cov(act2, rowvar=False)
    # calculate sum squared difference between means 
    ssdiff = numpy.sum((mu1 - mu2)**2.0)
    # calculate sqrt of product between cov 
    covmean = sqrtm(sigma1.dot(sigma2))
    # check and correct imaginary numbers from sqrt 
    if iscomplexobj(covmean):
        covmean = covmean.real
    # calculate score 
    fid = ssdiff + trace(sigma1 + sigma2 - 2.0 * covmean)
    return fid

对于IS和FID,一般都是同时使用,而不是只使用其中一个

sFID

sliding Frechlet Inception Distance
和FID的不同就是用的隐变量不同,FID的隐变量是池化后的,sFID使用的是未经池化的隐变量

Precision & Recall

在生成式模型中,Precision(精确率)和Recall(召回率)通常用于评估生成的样本质量和多样性。以下是生成模型中计算Precision和Recall的常见方法:

在这里插入图片描述
generated 分布用红色表示,real分布用蓝色表示

precision: 即红色的占蓝色分布的比例,即预测出来的样本占真实分布的比例

recall:即蓝色的点占红色的分布的比例,即真实的样本占预测分布的比例

理想情况是PR都大

Precison

Precision(精确率):Precision衡量生成的样本中有多少是真实样本的正确生成。它是通过计算生成样本中与真实样本匹配的比例来衡量的。一种常见的方法是使用K最近邻(K-nearest neighbors)来评估生成样本与真实样本之间的相似度。具体步骤如下:

对于每个生成样本,通过计算其与真实样本之间的距离(如欧氏距离或余弦相似度),找到其K个最近邻真实样本。
计算这K个最近邻中有多少真实样本,即与生成样本匹配的数量。
最后,将匹配数量除以生成样本的总数,得到Precision。

Recall

Recall(召回率):Recall衡量生成样本中成功覆盖真实样本的能力。它是通过计算真实样本中与生成样本匹配的比例来衡量的。具体步骤如下:

对于每个真实样本,通过计算其与生成样本之间的距离,找到其K个最近邻生成样本。
计算这K个最近邻中有多少是真实样本,即与真实样本匹配的数量。
最后,将匹配数量除以真实样本的总数,得到Recall。

计算precision和recall

用的是中间特征,而不是原图片本身

先把样本表示为 N × D N \times D N×D, D D D表示特征的维度, N N N表示为样本的个数

参考样本为: N 1 × D N1 \times D N1×D , 生成样本为: N 2 × D N2\times D N2×D

用KNN的方法,求出每个样本的k近邻,具体做法为:

用manifold_radii来求出每个元素的k个近邻的距离,求出radius后,

交叉去验证real分布中属于generative的样本的个数,计算得到precision

验证generative分布中属于real的样本的个数,计算得到recall
在这里插入图片描述
如何去获取real和generative的分布呢?

高效计算Precision和Recall。它比较两个批次的特征向量,根据流形半径判断它们是否在彼此的流形内。

将原始的N个图片 --> 表示为矩阵 N × D N\times D N×D

求得每个样本的 k 个近邻,即求得一个范围,相当于以每个样本为中心,画个圈,这样就可以表示出 real 的分布了,同理于generative分布,如下图所示。
在这里插入图片描述

  • Precision: 以real的每个样本为中心,画圈,计算real中的每个样本和generative中的每个样本的距离,如果在圈内,则说明是(b)中的红色实心部分, 红色实心部分占比与整个蓝色的部分
  • Recall:以generative的每个样本为中心,画圈,计算generative中的每个样本和real中的每个样本的距离,如果在圈内,则说明是©中的蓝色实心部分,蓝色实心部分占比与整个红色部分
生成式模型是一种能够生成与训练数据相似度高的新数据的大规模神经网络模型。随着预训练语言模型(如通义千问、通义万相、通义听悟等)的发展,评估这类模型变得尤为重要,这涉及到对它们生成内容的质量、多样性、连贯性和实用性等方面的考量。以下是几种常用的评估方法: ### 1. **人类评估(Human Evaluation)** 这是最直观的评估方法,通常由一组专家或普通用户评估模型生成的内容是否满足预期的质量标准。这种评估需要设定明确的指标,比如生成文本的相关性、流畅性、创新性等,并通过打分系统量化结果。然而,这种方法耗时长且主观性强。 ### 2. **自动评估(Automated Metrics)** 利用自动化工具或算法来评估模型性能,常见的包括但不限于: #### BLEU Score 主要用于评价机器翻译的质量,计算参考翻译与生成翻译之间的匹配程度。虽然最初设计用于翻译任务,但也可应用于其他文本生成任务。 #### ROUGE 针对非结构化文本的评估指标,可以用于评价摘要质量、文章相似性等场景,提供了一种衡量生成文本与参考文本之间相似性的方法。 #### NIST 专为语音识别任务设计的评估方法,考虑了词准确率、短语准确率以及发音准确率等多个方面。 #### Perplexity(困惑度) 常用于语言模型评估,表示模型预测序列的概率值。较低的困惑度通常意味着更高的模型性能。 ### 3. **一致性测试(Consistency Testing)** 检查模型在多次运行时生成内容的一致性,确保模型能够在不同时间点保持类似的表现水平,这对于预测类任务尤为关键。 ### 4. **泛化能力评估(Generalization Assessment)** 考察模型在未见过的数据上表现如何,即模型能否将从特定领域学到的知识应用到新的、未知的上下文中。 ### 5. **多样性与新颖性分析(Diversity and Novelty Analysis)** 评价生成内容的多样性和创新性,避免模型过分依赖某些模式而忽视了创造性的输出。 ### 相关问题 - 示例: 1. **如何构建更有效的自动评估体系?** - 这涉及选择合适的评估指标、设计合理的测试集以及持续优化评估算法。 2. **人类评估在哪些情境下特别重要?** - 当涉及复杂度高、创意性强的任务,如艺术创作、故事写作时,人类评估能更好地捕捉到情感共鸣、美学价值等难以量化的特点。 3. **生成式模型在哪些场景下可能遇到挑战?** - 在处理真实世界复杂度极高的任务,如理解复杂的法律文件、医疗诊断报告时,模型可能面临知识缺乏、解释性差等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值