GAN:两者分布不重合JS散度为log2的数学证明

引言:
不知道大家在初学GAN时,当遇到WGAN时,突然抛出一个结论:
对于真实数据分布PrP_r和生成数据分布PgP_g,如果满足上述无法全维度重合的情况的话,则JSD(PrPg)=log2JSD(P_r||P_g)=\log2是否存在疑惑。其实当初我刚接触这个结论时,还是挺疑惑的,不知道如何用数学证明。在思考了一会后,找到了一个合理的证明思路,如果有误,请大家指出


KL散度:
在开始介绍JS散度之前,必须首先引入KL散度,因为JS散度是在KL散度的基础上而来的,其公式为KL(PQ)=p(x)logp(x)q(x)KL(P||Q)=\sum p(x)\log \frac{p(x)}{q(x)} KL(QP)=q(x)logq(x)p(x)KL(Q||P)=\sum q(x)\log \frac{q(x)}{p(x)}其有一个特性,就是KL散度是非对称的,即KL(PQ)KL(QP)KL(P||Q) \neq KL(Q||P)

JS散度:
由于KL散度是非对称的,对其稍加修改,便能转化为对称的JS散度
首先,我们设M=12(P+Q)M=\frac{1}{2}(P+Q),则JSD(PQ)=12KL(PM)+12KL(QM)JSD(P||Q)=\frac{1}{2}KL(P||M)+\frac{1}{2}KL(Q||M)如果我们把KL散度公式带入展开的话,结果如下JSD(PQ)=12p(x)log(p(x)p(x)+q(x)2)+12q(x)log(q(x)p(x)+q(x)2)JSD(P||Q)=\frac{1}{2}\sum p(x)\log(\frac{p(x)}{\frac{p(x)+q(x)}{2}})+\frac{1}{2}\sum q(x)\log(\frac{q(x)}{\frac{p(x)+q(x)}{2}})我们接下来把log中的12\frac{1}{2}放到分母JSD(PQ)=12p(x)log(2p(x)p(x)+q(x))+12q(x)log(2q(x)p(x)+q(x))JSD(P||Q)=\frac{1}{2}\sum p(x)\log(\frac{2p(x)}{p(x)+q(x)})+\frac{1}{2}\sum q(x)\log(\frac{2q(x)}{p(x)+q(x)})接着把2提出JSD(PQ)=12p(x)log(p(x)p(x)+q(x))+12q(x)log(q(x)p(x)+q(x))+log2JSD(P||Q)=\frac{1}{2}\sum p(x)\log(\frac{p(x)}{p(x)+q(x)})+\frac{1}{2}\sum q(x)\log(\frac{q(x)}{p(x)+q(x)})+\log2这是因为p(x)=q(x)=1\sum p(x) = \sum q(x) = 1

接下来,我们只需要证明当p(x)p(x)q(x)q(x)不重叠时,左边部分为0即可。为了方便大家理解,我放了一张数据分布图:

GAN:两者分布不重合JS散度为log2的数学证明

在这张图里,我们令PrP_rPgP_g都是服从正态分布,并且不妨令p(x)p(x)PrP_r取得xx时的概率,q(x)q(x)PgP_g取得xx时的概率。可以发现,在两个分布之间,几乎不存在重叠(Probability(x)Probability(x)表示取得xx的概率值)。
接下来,我们回到上式的左边部分,即12p(x)log(p(x)p(x)+q(x))+12q(x)log(q(x)p(x)+q(x))\frac{1}{2}\sum p(x)\log(\frac{p(x)}{p(x)+q(x)})+\frac{1}{2}\sum q(x)\log(\frac{q(x)}{p(x)+q(x)})我们可以发现,当x5x\geq 5时,p(x)0p(x)\approx 0,则上式变为120×log(00+q(x))+12q(x)log(q(x)0+q(x))=0\frac{1}{2}\sum 0\times log(\frac{0}{0+q(x)})+\frac{1}{2}\sum q(x)\log(\frac{q(x)}{0+q(x)})=0x<5x<5时,q(x)0q(x)\approx 0,则上式变为12p(x)log(p(x)p(x)+0)+120×log(0p(x)+0)=0\frac{1}{2}\sum p(x)\log(\frac{p(x)}{p(x)+0})+\frac{1}{2}\sum 0\times \log(\frac{0}{p(x)+0})=0所以可以得出,xRJSD(PQ)=log2\forall x \in R,都有JSD(P||Q)=\log2这就是JS散度的缺陷,当两个分布完全不重叠时,即便两个分布的中心距离有多近,其JS散度都是一个常数,以至于梯度为0,无法更新。


为什么会出现两个分布不重叠?
从理论和经验上来说,真实的数据分布通常是一个低维流形,简单地说就是数据不具备高维特性,而是存在一个嵌入在高维度的低维空间内,如下图在3维空间中,数据事实上是在一个二维平面上:

GAN:两者分布不重合JS散度为log2的数学证明

而且,在实际操作中,我们的维度空间远远不止3维,有可能是上百维,在这样的情况下,数据就更加难于重合。


如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(点个赞我可是会很开心的哦)~