javascript
GAN:两者分布不重合JS散度为log2的数学证明
引言:
不知道大家在初學GAN時,當遇到WGAN時,突然拋出一個結論:
對于真實數據分布PrP_rPr?和生成數據分布PgP_gPg?,如果滿足上述無法全維度重合的情況的話,則JSD(Pr∣∣Pg)=log?2JSD(P_r||P_g)=\log2JSD(Pr?∣∣Pg?)=log2是否存在疑惑。其實當初我剛接觸這個結論時,還是挺疑惑的,不知道如何用數學證明。在思考了一會后,找到了一個合理的證明思路,如果有誤,請大家指出
KL散度:
在開始介紹JS散度之前,必須首先引入KL散度,因為JS散度是在KL散度的基礎上而來的,其公式為KL(P∣∣Q)=∑p(x)log?p(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)log?q(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)=21?KL(P∣∣M)+21?KL(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))+log?2JSD(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)=log?2\forall x \in R,都有JSD(P||Q)=\log2?x∈R,都有JSD(P∣∣Q)=log2這就是JS散度的缺陷,當兩個分布完全不重疊時,即便兩個分布的中心距離有多近,其JS散度都是一個常數,以至于梯度為0,無法更新。
為什么會出現兩個分布不重疊?
從理論和經驗上來說,真實的數據分布通常是一個低維流形,簡單地說就是數據不具備高維特性,而是存在一個嵌入在高維度的低維空間內,如下圖在3維空間中,數據事實上是在一個二維平面上:
而且,在實際操作中,我們的維度空間遠遠不止3維,有可能是上百維,在這樣的情況下,數據就更加難于重合。
如果覺得我有地方講的不好的或者有錯誤的歡迎給我留言,謝謝大家閱讀(點個贊我可是會很開心的哦)~
總結
以上是生活随笔為你收集整理的GAN:两者分布不重合JS散度为log2的数学证明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP请求幂等性
- 下一篇: 好用的WPF开源UI框架项目