引言:
不知道大家在初学GAN时,当遇到WGAN时,突然抛出一个结论:
对于真实数据分布PrP_rPr和生成数据分布PgP_gPg,如果满足上述无法全维度重合的情况的话,则JSD(Pr∣∣Pg)=log2JSD(P_r||P_g)=\log2JSD(Pr∣∣Pg)=log2是否存在疑惑。其实当初我刚接触这个结论时,还是挺疑惑的,不知道如何用数学证明。在思考了一会后,找到了一个合理的证明思路,如果有误,请大家指出
KL散度:
在开始介绍JS散度之前,必须首先引入KL散度,因为JS散度是在KL散度的基础上而来的,其公式为KL(P∣∣Q)=∑p(x)logp(x)q(x)KL(P||Q)=\sum p(x)\log \frac{p(x)}{q(x)} KL(P∣∣Q)=∑p(x)logq(x)p(x) KL(Q∣∣P)=∑q(x)logq(x)p(x)KL(Q||P)=\sum q(x)\log \frac{q(x)}{p(x)}KL(Q∣∣P)=∑q(x)logp(x)q(x)其有一个特性,就是KL散度是非对称的,即KL(P∣∣Q)≠KL(Q∣∣P)KL(P||Q) \neq KL(Q||P)KL(P∣∣Q)̸=KL(Q∣∣P)
JS散度:
由于KL散度是非对称的,对其稍加修改,便能转化为对称的JS散度
首先,我们设M=12(P+Q)M=\frac{1}{2}(P+Q)M=21(P+Q),则JSD(P∣∣Q)=12KL(P∣∣M)+12KL(Q∣∣M)JSD(P||Q)=\frac{1}{2}KL(P||M)+\frac{1}{2}KL(Q||M)JSD(P∣∣Q)=21KL(P∣∣M)+21KL(Q∣∣M)如果我们把KL散度公式带入展开的话,结果如下JSD(P∣∣Q)=12∑p(x)log(p(x)p(x)+q(x)2)+12∑q(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}})JSD(P∣∣Q)=21∑p(x)log(2p(x)+q(x)p(x))+21∑q(x)log(2p(x)+q(x)q(x))我们接下来把log中的12\frac{1}{2}21放到分母上JSD(P∣∣Q)=12∑p(x)log(2p(x)p(x)+q(x))+12∑q(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)})JSD(P∣∣Q)=21∑p(x)log(p(x)+q(x)2p(x))+21∑q(x)log(p(x)+q(x)2q(x))接着把2提出JSD(P∣∣Q)=12∑p(x)log(p(x)p(x)+q(x))+12∑q(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)})+\log2JSD(P∣∣Q)=21∑p(x)log(p(x)+q(x)p(x))+21∑q(x)log(p(x)+q(x)q(x))+log2这是因为∑p(x)=∑q(x)=1\sum p(x) = \sum q(x) = 1∑p(x)=∑q(x)=1
接下来,我们只需要证明当p(x)p(x)p(x)与q(x)q(x)q(x)不重叠时,左边部分为0即可。为了方便大家理解,我放了一张数据分布图:

在这张图里,我们令PrP_rPr和PgP_gPg都是服从正态分布,并且不妨令p(x)p(x)p(x)为PrP_rPr取得xxx时的概率,q(x)q(x)q(x)为PgP_gPg取得xxx时的概率。可以发现,在两个分布之间,几乎不存在重叠(Probability(x)Probability(x)Probability(x)表示取得xxx的概率值)。
接下来,我们回到上式的左边部分,即12∑p(x)log(p(x)p(x)+q(x))+12∑q(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)})21∑p(x)log(p(x)+q(x)p(x))+21∑q(x)log(p(x)+q(x)q(x))我们可以发现,当x≥5x\geq 5x≥5时,p(x)≈0p(x)\approx 0p(x)≈0,则上式变为12∑0×log(00+q(x))+12∑q(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)})=021∑0×log(0+q(x)0)+21∑q(x)log(0+q(x)q(x))=0当x<5x<5x<5时,q(x)≈0q(x)\approx 0q(x)≈0,则上式变为12∑p(x)log(p(x)p(x)+0)+12∑0×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})=021∑p(x)log(p(x)+0p(x))+21∑0×log(p(x)+00)=0所以可以得出,∀x∈R,都有JSD(P∣∣Q)=log2\forall x \in R,都有JSD(P||Q)=\log2∀x∈R,都有JSD(P∣∣Q)=log2这就是JS散度的缺陷,当两个分布完全不重叠时,即便两个分布的中心距离有多近,其JS散度都是一个常数,以至于梯度为0,无法更新。
为什么会出现两个分布不重叠?
从理论和经验上来说,真实的数据分布通常是一个低维流形,简单地说就是数据不具备高维特性,而是存在一个嵌入在高维度的低维空间内,如下图在3维空间中,数据事实上是在一个二维平面上:

而且,在实际操作中,我们的维度空间远远不止3维,有可能是上百维,在这样的情况下,数据就更加难于重合。
如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(点个赞我可是会很开心的哦)~
本文深入浅出地介绍了JS散度的概念及其在GANs中的应用,特别是针对两个分布完全不重叠时JS散度的局限性进行了详细分析。
1557

被折叠的 条评论
为什么被折叠?



