如何评价GAN网络生成图像的好坏?有两个简单常用的衡量方法,一个是Inception Score(IS),另一个是Frechet Inception Distance(FID),下面分别对这两个算法进行介绍。
一、Inception Score(IS)
评价一个生成模型的好坏,需要从两方面考量:
-
生成的图像是否清晰,清晰度高的表示生成图像的质量高;
-
生成的图像是否具有多样性,即每个类别生成图像的数目尽可能相等。
在IS算法中,对以上两点是这样考虑的:
- 在评判生成图像是否清晰方面,引入Inception模型,对生成图像 x x x 进行分类判断,得到一个1000维的分类向量 y y y。如果图像 x x x 清晰,则该向量 y y y 在某一个维度上的取值较大(表示属于某一类的概率较大),而其他维度的取值较小。用专业的术语来说,对于一张清晰的图像,则 P ( y ∣ x ) P(y|x) P(y∣x) 的熵越小(熵越大代表混乱程度越大,即随机变量的取值越不确定)。
- 在图像的多样性方面,假设我们生成20000张图像,总共有1000个类别,那么最理想的情况是每一类的个数是平均的,即每类图像的个数为20个。换做专业术语,即对于生成图像在所有类别的边缘分布 P ( y ) P(y) P(y) 的熵越大,则多样性越好(最理想是均匀分布)。
结合上述的两点考虑,IS的计算公式如下所示:
I S ( G ) = e x p ( E x ∼ P g K L ( p ( y ∣ x ) ∣ ∣ p ( y ) ) ) IS(G)=exp(E_{x\sim P_{g}}KL(p(y|x)||p(y))) IS(G)=exp(Ex∼PgKL(p(y∣x)∣∣p(y)))
其中,exp是为了公式的美观,意义不大。图像 x x x 是从生成数据的分布 P g P_{g} Pg 中采样的;KL表示KL散度; p ( y ∣ x ) p(y|x) p(y∣x)表示将生成图像 x x x 喂入 Inception网络得到的1000维的分类向量,原则上某一个维度越大越好; p ( y ) p(y) p(y) 是生成图片在所有类别上的边缘分布,我们希望越接近均匀分布越好。
因此,对于 p ( y ∣ x ) p(y|x) p(y∣x) 来说,我们希望他接近one-hot编码,即一个维度很大,其他维度值较小;对于 p ( y ) p(y) p(y) 来说,每个维度的值越平均越好。由于KL散度衡量的是两个分布之间的距离,因此在理想状况下,KL散度的值是最大的,即IS值越大,生成模型的效果越好。
深入理解 Inception Score
信息熵、条件熵、互信息
在深入理解IS之前,首先需要了解几个定义:
信息熵(熵)是衡量随机变量取值的不确定性的量,熵值越大,变量的不确定性越大。对于随机变量 x x x,其信息熵的定义如下:
H ( x ) = − ∑ i p ( x i ) l o g p ( x i ) H(x)=-\sum_{i}p(x_{i})logp(x_{i}) H(x)=−i∑p(xi)logp(xi)
条件熵衡量的是在给定一定的条件下,随机变量取值的不确定性。对于给定条件 y