大模型评估指标

文生图模型

【全文参考这位up主:https://space.bilibili.com/510348890,讲得非常详细清除】

Inception score:越大越好

arxiv:https://arxiv.org/abs/1801.01973

Inception score:衡量生成图像的质量,通过计算生成图像的条件概率分布和边缘概率分布之间的KL散度。

Inception score 就是用inception v3模型输出一个分类概率分布,维度为1000,因为用的image数据集,一共1000个分类。
上公式:(懒得打了,看图片吧)
在这里插入图片描述

  • exp: 没有具体含义。
  • x~Pg :表示从生成器中生图片。
  • p(y|x) :把生成的图片 x 输入到 Inception V3,得到一个1000 维的向量 y ,也就是该图片属于各个类别的概率分布。表示的是图像的质量情况,分布越尖越好,因为他反应的是生成的图片属于某一个的概率,这个概率越高,就代表他生成的越准确。即对于清晰的生成图片,这个向量的某个维度值格外大,而其余的维度值格外小(也就是概率密度图十分尖)。
  • p(y) :N个生成的图片(N 通常取 5000),每个生成图片都输入到 Inception V3中,各自得到一个自己的概率分布向量,把这些向量求一个平均,代表是一个平均概率分布,代表的是一个生成器生成的多样性。他越平越好。

KL散度:度量两个概率分布之家你都差异程度,当KL散度越大,代表差异越大。我们想要的就是差异越大越好,因为一个平一个尖,越大越好。KL散度公式:
在这里插入图片描述
优点:兼顾了生成图片质量和生成图片的多样性。
缺点

  • 自身局限性:指标会对模型的参数非常敏感。比如在torch版本和keras版本上在分类精度差不多的情况下,分数会有很大不同。
  • 只在imagenet上会准,放到其他数据集上就不准了。
  • 不能将inception score作为优化目标,即不能用作loss。
  • 没法反应是否过拟合。因为无法看到是否生成器overfitting到训练集上了,就算过拟合到训练集上了,inception还是会非常高的。

FID score:越小越好

arxiv:ar5iv.labs.arxiv.org/html/1706.08500

FID score:体现了生成图片和真实图片的分布距离,距离越小,越接近真实值。

FID score 也是要用到 inception v3模型。但是这里输出的是图像特征,是2048维度的图像特征。公式:

在这里插入图片描述

  • 其中,其中,p表示真实图像的分布,q表示生成图像的分布。
  • μ_p 和 μ_q: 分别表示两个分布的特征向量的均值。
  • C_p 和 C_q :分别表示两个分布的特征向量的协方差矩阵。
  • Tr:表示矩阵的迹运算 。
  • ||∙||_2:表示欧几里得范数。

优点:生成器的训练集和提取特征的数据集不需要一致,不需要类别分类器,比较容易获得。
缺点

  • 依旧是无法体现过拟合。
  • 假设生成图片满足多元高斯分布,但实际上可能不是。

Clip score:越小越好

arxiv:https://arxiv.org/abs/2104.08718

Clip score:Clip score是指将文本和图像对输入到OpenAI的CLIP(Contrastive Language-Image Pre-training)模型后分别转换为特征向量,然后计算它们之间的余弦相似度。当CLIP Score较高时,图像-文本对之间的相关性更高。CLIP Score评估自然语言和图像对之间的匹配度和相关性。值越大(接近1),评估越高。

优点:clip一些的变体可以反应图片和图片的一个相似性,将图片都embedding一下。
缺点:clip本身有精度限制,对于clip学习的并不太好的文本,可能评估就会出现偏差。那么对于网络图片中出现频次低的图片就评估不准。

Pick score

arxiv:Pick-a-Pic: An Open Dataset of User Preferences for Text-to-lmage Generation

Pick score:建立了一个网站,输入一个prompt就会输出两张图,用户来选择其中一张,然后新的图出现,知道选出最满意的那一张。然后可以根据用户选择的图片分布总结出哪一个模型最好以及模型参数最好。同时根据这些图片和prompt建立了一个数据集。上公式:
在这里插入图片描述
在这里插入图片描述

s(x,y) 就是用图片的embedding和文本的embedding求内积得到一个数。然后前面不是说一次性会给用户两张图片,所以就计算得到两个内积值,然后将两张图片的内积得分相连接成为一个二维的向量,然后softmax,这样两个得分就归一化到的0到1(就是那个p_i^),和本来的[1,0](表示A图片更好),[0,1](表示B图片更好),以及[0.5,0.5](表示两个差不多)求KL散度,值最小的就与哪一个最接近。如下:
在这里插入图片描述
L_pref就是loss。通过这个KL散度作为loss来优化原本的image encoder和text encoder。

优点:更接近人类。
缺点:与Clip score相比,clip可能文本和图片更加匹配。Pick score可能会更注重生成图片本身的质量,可能会出现和问文本不太相符的情况。

HPS score

arxiv:https://arxiv.org/abs/2303.14420

Hps score:将文本embedding和图片embeding求余弦相似度,让选中的图片的余弦相似度尽可能的高,让未被选中的图片的余弦相似度尽可能的低。就是求了一个得分。

HPS和pick score是差不多的流程,都是先是收集数据集,但hps没有建立网站,而是在Discord的一个channel上有一个聊天机器人,输入prompt就会输出一些图,然后用户进行选择,这样建立一个偏好数据集。然后用这些数据集去微调模型。

具体就是,输入一个prompt,然后输出四张图,四选一,其中一个标注为用户喜欢,另外三个标注为用户不喜欢。然后训练一个lora来微调模型,数据集来源一部分来自diffussion db生成的图片,计算HPS分数,分别将得分高的以及得分低的作为数据集,以及LAION-5B的真实数据,整体作为数据集。对于用户不喜欢的图片,用一个标注标出来,比如在prompt前加一个‘weird image’,这样就让模型知道什么是不符合的图片。

微调后的生成模型在生成图片的时候,就将比如这个‘weird image’,加入到负向此里面去,让模型不要生成包含这个负向词的图片,让模型知道什么样的图片是weird的。

优点:有一个很好的泛化性,文章使用的生成模型是stable diffusion,但其在其他生成模型上,如DALLE等上表现也很良好
局限性:数据有一定的bias,就是可能只能反应一部分人的偏好,就是使用Discord channel并给了反馈的的这一批人。同时还有一个bias就是,数据集的prompt都是来自有使用stable diffusion经验的人,他们的prompt相比较没有使用过的人会更加知道该怎么输入更专业,会比普通的人类的说话方式有所不同。

之后还推出的V2,整体流程和V1差不多。
文章:arxiv:文章:arxiv:https://arxiv.org/abs/2303.14420

不同的地方
手机数据集不同,V2使用了更多不同的模型来生成,以及V1是四选一,一个为喜欢,其他三个一视同仁都为不喜欢,V2也是四张里面选,但是进行了排序,显示了更多的比较关系。
以及修改了训练的目标函数:可以看出来其实和Pick score是一样的。
在这里插入图片描述

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值