为什么likelihood不行
传统衡量generator的方法是算generator产生的数据的likelihood。给一些generator在训练时没有观察过的真实数据,计算产生这些数据的likelihood。但在GAN中无法计算产生某一种特定结果的几率,因为数据是通过复杂的神经网络生成的,而不是简单的分布。
核密度估计Kernel Density Estimation
这种情况下无法判断需要生成多少个点才能估计分布,在实际应用中也会出现问题。
likelihood本身也未必代表输出的质量:
- 如果生成的图片有很小的方差,虽然generator能生成很好的图片,但计算likelihood时,因为输出的图片都在一个比较小的范围内,所以抽取其他图片计算likelihood时会很小。
- 因为计算得出的likelihood一般是很大的值,所以两个generator的效果差距很大时,可能likelihood也只相差一点。
其他判断Quality的方法
使用提前训练好的影像分类系统。最终分类的分布越集中,产生图片越好,说明生成的图片可以被分类器看懂。
可能出现的问题
- mode collapse
但这种方法会被mode collapse骗过去。 Generator生成的图片来来去去就那几张。(可能是遇到了discriminator的盲点。)
解决方法:在遇到mood collapse之前结束训练。
- mode dropping
产生出来的资料只有真实资料的一部分,真实资料的分布更大。不太容易被侦测出。也有可能产生十分相似的图片
从Diversity的角度衡量
inception score:
判断多样性的方法:不同图片通过分类器后,输出的类别如果数量相差不大,说明generator的生成没有偏向性,如果某一类别过多,说明generator倾向于生成该类别的数据,不够diverse。
Diversity和quality的评估范围不同,quality只看一张图片,diversity看很多张。也就是说diversity里面一张图的预测的分布情况可以看出quality。
Inception score:好的generator产生的单一的图片通过inspection net产生的分布越sharp越好( Negative entropy),把generator产生的所有图片输入inspection net,把输出的所有分布做平均,越平滑越好(Entropy)。
首先要计算每一张图片的negative entropy之和,之后加入所有distribution的平均的entropy。
在生成人脸的过程中,虽然可能有不同的肤色和发色,但对于inception network来说都是人脸,可能并没有什么不同。
Frechet Inception Distance (FID):
使用进入softmax之前的hidden layer的输出代表一张图片。假设生成的图片和原始图片在高维度上都符合高斯分布,计算这两个分布之间的距离。可能会需要较大的计算量来得到分布。
写作业时同时看监测出人脸的数目和FID两个指标。
我们不希望生成的图片和原图一模一样。有可能神经网络只是硬记了输入图片中的几张。但图片之间的相似度又很难比较。
Discrimination同时看一批图片,判断这批图片是不是好的,除了判断每张图之外,还要判断他们是不是相像。