生成专题1 | 图像生成评价指标 Inception Score (IS)

  • 文章转自微信公众号:机器学习炼丹术
  • 作者:陈亦新(欢迎交流共同进步)
  • 联系方式:微信cyx645016617

文章目录

    • 1.1 感性理解
    • 1.2 数学推导
    • 1.3 KL散度的物理意义

1.1 感性理解

IS是Inception Score。

熵entropy可以被用来描述随机性:如果一个随机变量是高度可预测的,那么它就有较低的熵;相反,如果它是乱序随机的,那么它就是有较高的熵。这和训练分类网络所用的交叉熵是同一个道理。

如下图,我们有两个概率:高斯分布和均匀分布。可以推断出,高斯分布的entropy小于均匀分布的entropy。高斯分布表明随机数是在0附近的

生成专题1 | 图像生成评价指标 Inception Score (IS)_第1张图片

IS指标衡量的是生成模型的两个能力:

  • 生成图片的质量;
  • 生成图片的多样性。

我们定义 x x x为生成图像, y y y为生成图像的判别器分类结果(以imagenet为例,那么是一个1000类别的分类)。

那么质量越高的图片,判别器分类的结果就会越确定。所以 P ( y ∣ x ) P(y|x) P(yx)越确定,熵越小,那么图像质量越好。

之前我们的 x x x可以理解为1张图片,那么 X X X则是生成图片的集合,比方说随机生成了1000张图片的集合。

然后这1000个图片,都放到判别器当中判断类别。多样性最好的情况,就是每一个类别生成的图像数量相同。这个时候生成不同类别的概率相等,这个时候意味着熵最大(因为生成类别不确定)。

所以我们希望 p ( y ∣ x ) p(y|x) p(yx)越小越好,质量越高; p ( y ) p(y) p(y)越大越好,多样性好。

1.2 数学推导

质量越高, p ( y ∣ x ) p(y|x) p(yx)的entropy越好。 p ( y ∣ x ) p(y|x) p(yx)的entropy可以写成下面公式:

− ∑ i = 1 m p ( y i ∣ x i ) × l o g ( p ( y i ∣ x i ) ) -\sum^m_{i=1}{p(y_i|x_i)\times log(p(y_i|x_i))} i=1mp(yixi)×log(p(yixi))

其中m表示生成的图片数量。

而多样性越大越好,意味着 p ( y ) p(y) p(y)的entropy越大,那么这个公式可写成:

− ∑ i = 1 m p ( y i ) × l o g ( p ( y i ) ) -\sum^m_{i=1}{p(y_i)\times log(p(y_i))} i=1mp(yi)×log(p(yi))

这里又要说一下KL散度了,这是描述两个分布距离的函数,在GAN当中用到了。

K L ( p ( y ∣ x ) , p ( y ) ) KL(p(y|x),p(y)) KL(p(yx),p(y))

= ∑ i = 1 m p ( y i ∣ x i ) × l o g ( p ( y i ∣ x i ) p ( y i ) ) =\sum^m_{i=1}{p(y_i|x_i) \times log(\frac{p(y_i|x_i)}{p(y_i)})} =i=1mp(yixi)×log(p(yi)p(yixi))

= ∑ i = 1 m p ( y i ∣ x i ) × l o g ( p ( y i ∣ x i ) ) =\sum^m_{i=1}{p(y_i|x_i) \times log(p(y_i|x_i))} =i=1mp(yixi)×log(p(yixi))

− ∑ i = 1 m p ( y i ∣ x i ) × l o g ( p ( y i ) ) -\sum^m_{i=1}{p(y_i|x_i) \times log(p(y_i))} i=1mp(yixi)×log(p(yi))

可以看到,这两分布的KL散度可以变成一个减法形式,前者是我们计算的描述图像质量的熵,我们后续就简单写成 − E ( p ( y ∣ x ) ) -E(p(y|x)) E(p(yx))

后者我们还得继续转换:
∑ i = 1 m p ( y i ∣ x i ) × l o g ( p ( y i ) ) \sum^m_{i=1}{p(y_i|x_i) \times log(p(y_i))} i=1mp(yixi)×log(p(yi))

= ∑ i = 1 m p ( y i ∣ x i ) p ( y i ) × p ( y i ) × l o g ( p ( y i ) ) =\sum^m_{i=1}{\frac{p(y_i|x_i)}{p(y_i)} \times p(y_i) \times log(p(y_i))} =i=1mp(yi)p(yixi)×p(yi)×log(p(yi))

这个公式中,我们发现,跟描述生成多样性的熵有点类似了,就是多了一个 p ( y i ∣ x i ) p ( y i ) \frac{p(y_i|x_i)}{p(y_i)} p(yi)p(yixi),要是这个等于1就好了。现在证明这个:

p ( y i ∣ x i ) p ( y i ) \frac{p(y_i|x_i)}{p(y_i)} p(yi)p(yixi)

= p ( y i , x i ) p ( y i ) × p ( x i ) =\frac{p(y_i,x_i)}{p(y_i) \times p(x_i)} =p(yi)×p(xi)p(yixi)

= p ( y i ) × p ( x i ) p ( y i ) × p ( x i ) = 1 =\frac{p(y_i) \times p(x_i)}{p(y_i) \times p(x_i)}=1 =p(yi)×p(xi)p(yi)×p(xi)=1

但是这里涉及一个假设,就是联合概率的变量互相独立。但是我们生成图像和类别明显是不独立的。这个问题就是IS的一个局限性。IS呢就是两个分布的KL散度。所以综上所示:

K L ( p ( y ∣ x ) , p ( y ) ) = − E ( p ( y ∣ x ) ) + E ( p ( y ) ) KL(p(y|x),p(y)) = -E(p(y|x)) + E(p(y)) KL(p(yx),p(y))=E(p(yx))+E(p(y))

所以KL散度越大,IS值越高,那么多样性熵就越大,质量熵越小,那么生成模型就越好。

1.3 KL散度的物理意义

KL散度是衡量两个分布之间的距离。

生成专题1 | 图像生成评价指标 Inception Score (IS)_第2张图片

这个图中,我们希望条件概率 p ( y ∣ x ) p(y|x) p(yx)是一个确定的数,那么可以理解为一个方差为0的高斯分布;
而另外的概率 p ( y ) p(y) p(y)是一个均匀分布,那么就是方差无穷大的高斯分布。标准差的差异太大,所以不需要考虑均值的位置。所以我们可以从图中简单的看出来,这两个极端的高斯分布的距离越大,那么意味着模型的质量和多样性就会越好。

KL散度就刚好利用了生成网络当中的确定和不确定的两个部分。

你可能感兴趣的:(笔记,深度学习,机器学习,计算机视觉)