- 生成對抗網絡GAN:原理與實踐
- 言有三 郭曉洲
- 756字
- 2023-11-09 18:51:37
2.1.3 GAN的本質
為了深入探究GAN的本質,我們對其進行理論上的分析。首先,在每次迭代的過程中,我們都可以計算出最優判別器D*,只需令目標函數的一階導數為0,可得

具體證明過程如下所示。
首先,我們對目標函數中的項進行變換:

則判別器的目標函數變為:

使其一階導數為0,則

當判別器達到最優時,生成器的目標函數為:

可改寫為:

具體的計算步驟為:


JS散度是一種度量兩個概率分布之間的差異的常用方式。為了加深理解,我們對JS散度稍作解釋。我們非常熟悉這樣一件事:在一個二維平面上,每個點便是一個元素,點與點之間的距離即歐氏距離,可通過勾股定理計算,如(3,0)與(1,0)的距離肯定要比(0,1)與(1,0)的距離大。其實元素是一個抽象的概念,平面上的點可視為元素,矩陣、多項式、函數也均可視為元素,類似剛才的例子,若將每一個概率分布p(x)也視為一個元素(如圖2-5所示),則概率分布之間的距離可使用JS散度計算,有


圖2-5 JS散度解釋
相應地,JS散度越小,表示兩個概率分布越相似;JS散度越大,表示兩個概率分布差異越多;兩個分布完全相同時,JS散度為0。對于圖2-5中的例子,計算可知JS(p1(x)|| p2(x))>JS(p2(x)||p3(x))。
可以看出,GAN本質上是先通過訓練判別器得到pdata和pg的JS散度,然后訓練生成器使JS散度達到最小,當JS散度為0時,生成器達到全局最優,即pdata=pg。理論上也可以證明,當生成器和判別器具有足夠的容量,并且在給定生成器時,如果判別器能夠達到最優解,則GAN可以實現全局最優,當然這在實踐中幾乎是不可能的。
另外,對于生成器的非飽和形式目標函數,同樣在最優判別器D*的條件下,目標函數變為:

具體的計算步驟:

可以看出這里存在理論上的矛盾,即非飽和形式的生成器在最小化KL散度的同時也在最大化JS散度,這是兩個方向相反的優化方向,但從實際效果上看,它確實在一定程度上避免了訓練梯度飽和的問題。