转载:https://zhuanlan.zhihu.com/p/109342043
这里仅当记录笔记
作者:小米粥
最近一部分的内容将会比较容易,将和大家一起讨论GAN的评价指标。在判别模型中,训练完成的模型要在测试集上进行测试,然后使用一个可以量化的指标来表明模型训练的好坏,例如最简单的,使用分类准确率评价分类模型的性能,使用均方误差评价回归模型的性能。同样在生成模型上也需要一个评价指标来量化GAN的生成效果。
1. 评价指标的要求
用于评价生成模型GAN优劣的指标不可能是任意的,它应当尽可能考虑一些要求。这里列出几条比较重要的要求:(1)能生成更为真实样本的模型应当得到更好的分数,也就是可评价样本的生成质量(2)能生成更具有多样性样本的模型应当得到更好的分数,也就是可以评价GAN的过拟合、模式缺失、模式崩溃、简单记忆(即GAN只是简单记忆了训练数据集)等问题,即多样性。(3)对于GAN的隐变量 ,若有比较明确的“意义”且隐空间连续,那么可控制 得到期望的样本,这样的GAN应该得到更好的评价。(4)有界性,即评价指标的数值最好具有明确的上界、下界。(5)GAN通常被用于图像数据的生成,一些对图像的变换并不改变语义信息(例如旋转),故评价指标对某些变换前后的图像不应有较大的差别。(6)评价指标给出的结果应当与人类感知一致。(7)计算评价指标不应需要过多的样本,不应有较大的计算复杂性。考虑到实际情况,这些要求往往都不能同时得到满足,各个不同的指标也是各有优缺。
2. IS系列
2.1 Inception Score
Inception Score指标适用于评价生成图像的GAN。评价指标首先要评价GAN生成图像的质量好坏,但是图像质量是一个非常主观的概念,不够清晰的宠物狗的图片和线条足够明晰但“很奇怪”的图片均应算作低质量的图片,但计算机不太容易认识到这个问题,最好可以设计一个可计算的量化指标。
IS(Inception Score)采用了这样的做法,将生成的图片 送入已经训练好Inception模型,例如Inception Net-V3,它是一个分类器,会对每个输入的图像输出一个1000维的标签向量 ,向量的每一维表示输入样本属于某类别的概率。假设我们的Inception Net-V3训练得足够好,那么对质量高的生成图像 ,Inception Net-V3可将其以很高的概率分类成某个类,即标签向量 的数值比较集中,形如 。我们可以使用熵来量化该指标,分布相对于类别的熵定义为:
其中, 表示 属于第类的概率,即 值,为了避免歧义,计算方式展示如下图所示:
熵是一种混乱程度的度量,对于质量较低的输入图像,分类器无法给出明确的类别,其熵应比较大,而对于质量越高的图像,其熵应当越小,当为one-hot分布时,熵达到最小值0。
IS考虑的另一个度量指标即样本的多样性问题,若GAN产生的一批样本 多样性比较好,则标签向量 的类别分布也应该是比较均匀的,也就是说不同类别的概率基本上是相等的(当然这里要假设训练样本的类别是均衡的),则其均值应趋向均匀分布如下图所示。
又因为
故可使用标签向量 关于类别的熵来定量描述,若生成样本的多样性好(涵盖的类别多),则 相对于类别的熵越大;生成样本的多样性差,则 相对于类别的熵越小,其中定义 相对于类别的熵为
其中, 表示第 类的概率,即 值。
将图像质量和多样性两个指标综合考虑,可以将样本和标签的互信息 设计为生成模型的评价指标,互信息描述了给定一个随机变量后,另一个随机变量的不确定性减少程度。又被称为信息增益,即
在不知道 前,边缘分布 相对于类别的熵比较大,标签 (可能接近均匀分布)不确定程度比较大;当给定 后,条件分布 相对于类别的熵会减小,标签 的不确定性降低(可能接近one-hot分布),不确定程度会减少,并且其差值越大,说明样本的质量越好。根据
其中,KL散度表示两个分布的差值,当KL散度值越大时,表示两个分布的差异越大;KL散度值越小,分布的差异越小,计算所有样本的KL散度求平均,但是本质上来讲,还是通过信息增益来评价。为了便于计算,添加指数项,最终的IS定义成如下形式:
实际计算IS时,使用的计算式子为:
对于 的经验分布 ,使用生成模型产生 个样本,将 个样本送入分类器得到 个标签向量,对其求均值且令
对于KL散度,计算方式如下:
2.2 IS的缺陷
IS作为GAN的评价指标,自2016年提出以来,已经具备了比较广泛的接受程度,但也有一些不可忽略的问题和缺陷。(1)当GAN发生过拟合时,生成器只“记住了”训练集的样本,泛化性能差,但是IS无法检测到这个问题,由于样本质量和多样性都比较好,IS仍然会很高。(2)由于Inception Net-V3是在ImageNet上训练得到的,故IS会偏爱ImageNet中的物体类别,而不是注重真实性。GAN生成的图片无论如何逼真,只要它的类别不存在于ImageNet中,IS也会比较低。(3)若GAN生成类别的多样性足够,但是类内发生模式崩溃问题,IS无法探测。(4)IS只考虑生成器的分布 而忽略数据集的分布 。(5)IS是一种伪度量。(6)IS的高低会受到图像像素的影响。以上这些问题限制了IS的推广,接下来我们列出几种IS的改进版本。
2.3 Mode Score
MS(Mode Score)是IS的改进版本,考虑了训练数据集的标签信息,其定义为:
其中, 表示经过训练数据集的样本得到的标签向量的类别概率, 表示经过GAN生成样本得到的标签向量的类别概率,MS同样考虑了生成样本的质量与多样性的问题,不过可以证明其与IS是等价的。
2.4 Modifified Inception Score
m-IS(Modifified Inception Score)重点关注了类内模式崩溃的问题,例如使用ImageNet训练好的GAN可以均匀生成1000类图像,但是在每一类中,只能产生一种图像,也就是生成的苹果图像永远张一个样子,但是GAN的生成质量和类别多样性是完全没有问题的。m-IS对于同一类样本的标签计算了交叉熵:
其中 均为同一类别的样本,其类别由Inception Net-V3的输出结果决定。将类内交叉熵考虑进IS可得m-IS,即
可以看出,m-IS评价的是GAN的生成质量和类内多样性。当m-IS分数越大时,GAN生成性能越好。
2.5 AM Score
AMS(AM Score)的考虑是:IS假设类别标签具有均匀性,生成模型GAN生成1000类的概率是大致相等的,故可使用 相对于类别的熵来量化该项,但当数据在类别分布中不均匀时,IS评价指标是不合理的,更为合理的选择是计算训练数据集的类别标签分布与生成数据集的类别标签分布的KL散度,即
其中, 表示经过训练数据集的样本得到的标签向量的类别概率,关于样本质量的一项保持不变,则AMS的表达式为:
显然,当AMS分数越小时,GAN生成性能越好。
3. FID
FID(Fréchet Inception Distance)是一种评价GAN的指标,于2017年提出,它的想法是这样的:分别把生成器生成的样本和判别器生成的样本送到分类器中(例如Inception Net-V3或者其他CNN等),抽取分类器的中间层的抽象特征,并假设该抽象特征符合多元高斯分布,估计生成样本高斯分布的均值 和方差 ,以及训练样本 和方差 ,计算两个高斯分布的弗雷歇距离,此距离值即FID:
最后将FID作为评价指标。示意图如下,其中虚线部分表示中间层
FID的数值越小,表示两个高斯分布越接近,GAN的性能越好。实践中发现,FID对噪声具有比较好的鲁棒性,能够对生成图像的质量有比较好的评价,其给出的分数与人类的视觉判断比较一致,并且FID的计算复杂度并不高,虽然FID只考虑的样本的一阶矩和二阶矩,但整体而言,FID还是比较有效的,其理论上的不足之处在于:高斯分布的简化假设在实际中并不成立。
4. MMD
MMD(Maximum Mean Discrepancy)在迁移学习中具有非常广泛的应用,它是在希尔伯特空间对两个分布的差异的一种度量,故可以考虑使用MMD度量训练数据集分布 和 生成数据集 的距离,然后使用这个距离作为GAN的评价指标。若MMD距离越小,则表示 和 越接近,GAN的性能越好。
计算MMD时,首先选择一个核函数 ,它将两个样本映射为一个实数,例如多项式核函数:
高斯核函数 :
则MMD距离为:
不过实际计算时,我们不可能求期望,而需要使用样本估计MMD值,对于来自于训练样本集的 个样本 和来自于生成器生成的 个样本 ,MMD的估算值为:
由于MMD是使用样本估计的,即使 和 完全相同,估算得到MMD也未必等于零。
5. Wasserstein Distance
Wasserstein距离又称earth-mover距离、推土机距离,与MMD类似,它也是两个分布的差异的一种度量,故也可以作为GAN的评价指标。若Wasserstein距离越小,则表示 和 越接近,GAN的性能越好。在性能优越的WGAN中,便是先通过判别器(critic)学习两个分布的Wasserstein距离,再以最小化Wasserstein距离为目标函数来训练生成器的。
当把Wasserstein距离作为评价指标时,需要先有一个已经训练好的判别器 ,对于来自于训练样本集的 个样本 和来自于生成器生成的 个样本 ,Wasserstein距离的估算值为:
这个评价指标可以探测到生成样本的简单记忆情况和模式崩溃情况,并且计算比较快捷方便。不过需要注意,由于使用Wasserstein距离作为评价指标需要依赖判别器和训练数据集,故它只能评价使用特定训练集训练的GAN,例如对使用苹果图像训练集训练得到判别(critic),它无法评价橘子图像生成器的性能,故也具有一定的局限性。
6. 1-Nearest Neighbor Classifier
1-Nearest Neighbor Classifier的基本想法是,希望计算判定出 和 是否相等,若相等则证明生成模型GAN是优秀的,若差距比较大则说明GAN是比较差的。做法如下,对于来自于训练样本集概率分布 的 个样本 和来自于生成器概率分布 的 个样本 ,计算使用1-NN的LOO(leave-one-out)的准确率,并使用准确率作为评价指标。
具体地说,将 和 以及它们对应的标签组合成新的样本集合 , 里共包括 个样本,使用留一交叉验证的方法,将 中的样本分成两份 和 , 有 个样本, 只有一个样本,使用训练1-NN二分类器,在中进行验证计算正确率(0%或100%)。每次 选择不同的样本,将上述过程循环 次,计算总体的分类正确率,并将准确率作为GAN的评价指标。
如果 和 来自与同一概率分布(即 ),且样本数量比较大,则1-NN分类器无法将其很好的分开,其结果接近于随机猜测,总正确率接近50%,如下图所示:
当GAN发生简单记忆的问题,即生成器生成的样本与训练样本完全一样,则任意测试样本在1-NN上的正确率都为0%,因为存在一个与测试样本距离为0的样本,但两者的类别标签相反,故总体正确率为0%,如下图所示:
极端的情况,当生成器生成样本与训练集样本差异很大时,即GAN生成效果很不好时,任意测试样本在1-NN上的正确率都为100%,因为1-NN完全可以进行准确的分类,则整体准确率也为100%,如下图所示:
当1-Nearest Neighbor Classifier的总正确率接近50%时,说明生成器的性能越好。另外说明,这里选择1-NN作为二分类器的原因是,1-NN结构简单,计算方便且不含任何超参数。
7. GANtrain and GANtest
在GANtrain和GANtest中,并没有设计给出可量化的评价指标,而是计算几个指标并进行对比分析,从而评价GAN的性能,这里评价的是可生成多类样本的GAN。
定义训练样本集 ,验证集 以及由GAN生成的样本集 ,接下来(1)在训练集 上训练分类器并在验证集 上计算准确率,将准确率记为GANbase。(2)在生成集 上训练分类器并在验证集 上计算准确率,将准确率记为GANtrain。(3)在训练集 上训练分类器并在生成集 上计算准确率,将准确率记为GANtest。
比较GANbase和GANtrain,当GAN存在问题时,GANtrain要小于GANbase,可能因为生成集 相比训练集 发生了模式丢失,或者生成样本不足够真实让分类器学到相关特征,或者GAN没有将类别分得很开,产生类别混合等,原因可能有很多。当GANtrain与GANbase接近时,说明GAN生成图像质量高,和训练集有相似的多样性。
比较GANbase和GANtest,理想情况下,两者数值应该接近。如果GANtest非常高,那么说明GAN过拟合,发生简单记忆的问题。如果GANtest很低,则说明GAN没有很好的数据集分布,图像质量不高。GAN-test准确率衡量了生成图像和数据流形的距离的远近。
8. NRDS
NRDS(Normalized Relative Discriminative Score)可以用于多个GAN模型的比较,其基本的想法是:实践中,对于训练数据集和GAN生成器生成的样本集,只要使用足够多的epoch,总可以训练得到一个分类器C,可以将两类样本完全分开,使得对训练数据集的样本,分类器输出趋于1,对GAN生成的样本,分类器输出趋于0。但是,若两类样本的概率分布比较接近(即GAN生成效果比较好),则需要更多次数的epcoh才能将两类样本完全区分开;反之,对于较差的GAN生成效果,不需要训练分类器C多少次epoch,就可将两类样本完全分开。
如上图所示,在每个epoch中,对于 个GAN,分别从其中采样得到 批生成样本(虚假样本),将其与训练集样本(真实样本)以及对应的标签一起送入分类器C,然后使用分类器分别在 批虚假样本上测试,记录 个分类器的输出结果output(结果应为批次的平均值)。训练足够多的epoch次数,使分类器对真实样本输出几乎为1,对虚假样本输出几乎为0,这时对 个GAN,做 个epoch-output曲线,分别记为 ,估算曲线下围成的区域的面积,
如下图所示:
分别记为 ,最后分别计算NRDS:
则NRDS的值越大,说明将两个分布完全分开的“损耗”越大,则表明对应的GAN的 更接近 。
9. Image Quality Measures
在该类评价指标中,我们直接对图像本身的质量进行量化,而不像IS借助Inception V3或训练其他神经网络等手段,这里的典型代表有SSIM, PSNR and Sharpness Difference。
9.1 SSIM
SSIM(Structural SIMilarity)是对两个图像样本 和 之间的亮度 、对比度 、结构 三个方面进行比较衡量,可理解为一个描述了两幅图像相似度的评价指标,其中亮度为:
对比度为:
结构为:
其中, 分别为 的局部均值、方差和协方差。而 为了避免除数为0而取的常数,一般地,可取
其中, 默认为0.01, 默认为0.03, 为像素值的范围。计算时,可依次在图像上取 大小的以 或 为中心的图像块,计算三个参数并求解
整幅图像的SSIM计算每个图像块的SSIM求平均即可。SSIM具有对称性,当两个图像完全相同时,SSIM值达到最大值1。
9.2 PSNR
PSNR(Peak Signal-to-Noise Ratio)即峰值信噪比,也用于评价图像质量,例如可在条件GAN中,可将某类别中训练集里的图像与条件生成的图像进行对比评价,从而评价条件GAN的生成效果。
例如对两幅图像 和 ,计算其均方误差:
然后计算峰值信噪比为:
其中, 为图片可能的最大像素值,例如灰度图像中为255。若为彩色图像,可计算RGB三通道的PSNR然后取均值;或计算三通道MSE并除以3,再计算PSNR。显然,PSNR值越大,说明两张图像差别越小,则生成的图像的质量越好。
9.3 SD
SD(Sharpness Difference)与PSNR计算方式类似,但其更关注锐度信息的差异。例如对两幅图像 和 ,计算其锐度误差:
其中,
然后计算SD为:
其中, 为图片可能的最大像素值与上相同。显然,SD值越大,说明两张图像锐度差别越小,则生成的图像的质量越好。
10. Average Log-likelihood
之前提到的方法,我们都将生成器视为一个产生样本的黑盒子,并没有直接与去概率密度函数 打交道,这也是由于GAN的设计机制决定的。但如果能有一个 的表达式,最直接的评价指标应当是:计算训练集的样本在 下的对数似然函数(也可认为是计算KL散度),对数似然函数越大则说明生成器越好,如下
这里的问题在于,如何得到 的表达式或者近似表达式?一种方法是使用非参数估计的,例如使用KDE(Kernel Density Estimation)方法,对于样本 ,估计得到的概率密度函数 为:
为归一化常数,其中核函数可定义为高斯核函数、均匀核函数、三角核函数等自由选取。得到近似的概率密度函数后,便可计算对数似然,并使用其作为评价指标。但是根据实际情况,其评价效果并不理想,主要有如下问题:面临高维分布,非参数难以得到比较准确的概率密度函数的估计,另外对数似然函数与样本的质量并不存在明显的相关关系,GAN可以给出很高的对数似然值但样本质量依旧很差。
在三篇小文中,我们展示了五花八门的GAN评价指标,实际上还有更多,我们仅仅展示了一部分。根据实验的比较结果,并没有存在哪一个评价指标在各方面都可以完胜其他评价指标,也不存在哪一个指标可以在第一篇文章中提出的7个要求中都得到很好的满足,但是也确实存在部分指标的质量完全超越另一个的情况。故在选择GAN的评价指标时,应根据实际场景要求选择指标,或者选择几个指标从不同角度考察GAN的生成效