生成網絡的優化目標
the -logD alternative
稱生成器的目標函數:
\[\mathop{min}_{\theta } \mathbb{E}_{\boldsymbol z \sim p(\boldsymbol z)}\left [ log(1 - D \left (G (\boldsymbol z; \theta ) ;\phi \right )) \right ] \]
為“the -logD alternative”
將GAN的目標函數寫成一個統一的形式:
\[\mathop{min}_{\theta }\mathop{max}_{\phi } \mathbb{E}_{\boldsymbol x \sim p_{r}(\boldsymbol x)}\left [ logD(\boldsymbol x ;\phi ) \right ] + \mathbb{E}_{\boldsymbol z \sim p(\boldsymbol z )}\left [ log\left ( 1 - D(G(\boldsymbol z ;\theta ) ;\phi ) \right ) \right ] \]
在生成對抗網絡中,當判別網絡接近最優時,生成網絡的優化目標是最小化真實分布和模型分布之間的JS散度。當兩個網絡的分布相同時,JS散度為0,生成網絡對應的損失為-2log2。在實際情況中,真實分布和模型分布有較大的重疊的可能性是微乎其微的,因此我們可以認為真實數據分布和模型的分布是不重疊的,即使重疊,那么重疊的部分也是可以忽略的,在這種情況下,兩個分布之間的JS散度恆為常數log2,判別器對所有的生成數據的判定輸出都為0,生成網絡的損失也為0,導致生成網絡無法更新(如圖1所示)。
不僅如此,JS散度衡量距離還存在一個問題,從圖2可以看到,只要兩個分布不重疊,那么兩者的JS散度都是一樣的,而實際上q和r與p的距離是不一樣的,JS散度無法捕捉這種差異。
the -logD trick
針對原始生成網絡目標函數存在的問題,GAN之父提出了一種改進的方法,即將生成網絡的目標函數修改為:
\[\mathop{min}_{\theta } \mathbb{E}_{\boldsymbol z \sim p(\boldsymbol z)}\left [- logD \left (G (\boldsymbol z; \theta ) ;\phi \right ) \right ] \]
我們稱之為“the -logD trick”。
但是這樣的修改仍然存在問題,即會存在梯度不穩定(圖3)和模式崩塌問題。
