- 生成對抗網絡GAN:原理與實踐
- 言有三 郭曉洲
- 797字
- 2023-11-09 18:51:36
2.1.2 GAN模型
在對GAN有了一定的基本印象后,我們再用數學完整描述GAN的工作原理。
假設生成器和判別器均為最簡單的全連接網絡,其參數分別表示為θ和φ,假設訓練數據集{x(1),x(2),…,x(N)}獨立同分布采樣于概率分布pdata(x),生成器生成的樣本集滿足的概率分布為pg(x)。
判別器的輸入為樣本x,輸出為0至1之間的概率值p=D(x),表示樣本x來源于訓練數據集分布pdata的概率,1-p表示樣本x來源于生成樣本分布pg的概率。D(x)=1表示樣本x完全來源于訓練數據集,而D(x)=0表示樣本x完全不來源于訓練數據集,即完全來源于生成樣本分布。注意,實際中的判別器的輸出是一個“軟”結果,而非之前所述的非真即假的“硬”分類結果,判別器最后一層的激活函數大多使用sigmoid函數。

圖2-2 判別器原理
在訓練判別器時,我們面對的是一個監督學習的二分類問題:對于訓練數據集中的樣本,判別器應輸出1;而對于生成器生成的樣本,判別器應輸出0,如圖2-2所示。使用二分類交叉熵作為損失函數可得判別器的目標函數為:

在實際訓練時,兩類樣本訓練數據為{(x(1),1),(x(2),1),…,(x(N),1),(G(z(1)),0),(G(z(2))),0),…(G(z(N)),0)},則目標函數為:

在訓練生成器時,訓練數據為{z(1),z(2),…,z(N)},如圖2-3所示。

圖2-3 生成器原理
對于生成器,其目標函數為:

而第一項相對于生成器而言為常數,故可簡化為:

實際使用樣本訓練時,目標函數為:

GAN采用交替訓練判別器和生成器的方式進行訓練,通常先訓練k次判別器,再訓練1次生成器,直至目標函數收斂。整個算法流程如下所示。
GAN訓練算法


實際上,在訓練早期,生成器的生成能力一般比較差,而判別器的判別能力往往比較強,即D(G(z))的值普遍很小,導致生成器的梯度比較小,如圖2-4中下面的曲線所示,故有時生成器會使用能在初始時提供較大梯度的目標函數:

我們稱之為非飽和形式(上文使用的生成器損失函數稱為飽和形式)。根據圖2-4在兩條曲線上的樣本對比可知,非飽和形式目標函數(上面的曲線)在早期能提供更多的梯度。實際使用樣本訓練時,目標函數為:


圖2-4 飽和形式與非飽和形式函數曲線