雪花台湾

GAN的損失函數

理解生成對抗網路的關鍵在於理解GAN的損失函數

JS散度

GAN實際是通過對先驗分布施加一個運算G, 來擬合一個新的分布

如果從傳統的判別式網路的思路出發,只要選定合適的loss,就可以使生成分布和真實分布之間的距離儘可能逼近

KL散度經常用來衡量分布之間距離

但KL散度是不對稱的。不對稱意味著,對於同一個距離,觀察方式不同,獲取的loss也不同,那麼整體loss下降的方向就會趨向於某個特定方向。這在GAN中非常容易造成模式崩塌,即生成數據的多樣性不足

JS散度在KL散度的基礎上進行了修正,保證了距離的對稱性:

實際上,無論KL散度還是JS散度,在直接用作loss時,都是難以訓練的:由於分布只能通過取樣計算,這個loss在每次迭代時都幾乎為零

GAN loss的推導

GAN的訓練方法,能夠巧妙的解決這個問題:

先訓練D,再訓練G,二者相互對抗,直到收斂

在原始的GAN中,提出的loss是:

當G固定且運算可逆時(實際上這一點一般不成立,但不影響了解GAN的思想):

代入loss公式,進而有:

對於積分區間內的每一個x,設被積函數為f 為:

注意這裡x是固定的,變數是D。對f求導,得到當 時,f存在最大值。

由於被積函數的最大值對於任意x都成立,所以當 時, V(D, G)有最大值

代入loss公式,有:

所以原始GAN的loss實際等價於JS散度

Wasserstein Loss

JS散度存在一個嚴重的問題:兩個分布沒有重疊時,JS散度為零,而在訓練初期,JS散度是有非常大的可能為零的。所以如果D被訓練的過於強,loss會經常收斂到-2log2而沒有梯度

對於這個問題,WGAN提出了一個新的loss,Wasserstein loss, 也稱作地球移動距離:

這個距離的直觀含義是,將分布r移動到分布g所需要的距離,所以即使是兩個分布沒有重疊,這個loss也是有值的

可以證明,該距離可以轉化為如下形式:

其中f必須滿足1-Lipschitz連續,即: 可以看到,符合1-Lipschitz連續的函數的梯度是受限的,可以有效的防止梯度的爆炸,使訓練更加穩定

Spectral Normalization

對於GAN來說,f其實就是指的D或G,也就是神經網路。對於神經網路來說,一般是由一系列矩陣乘法複合而成的。可以證明,如果矩陣乘法這個運算滿足1-Lipschitz連續,那麼其複合運算也會滿足1-Lipschitz連續,神經網路也就滿足1-Lipschitz連續

對於矩陣變換A來說,它滿足K-Lipschitz連續的充要條件是: $$ ||Ax|| leq K||x|| $$ 對其等價變換有:

假設 的特徵向量構成的基底為 對應的特徵值為 ,則x可由特徵向量表示:

那麼有:

只有當i 不等於j時,式子不為零, 且

所以有:

矩陣 是半正定矩陣,所有特徵值都為非負,所以只要矩陣除以它最大的奇異值的開方,就可以滿足1-Lipschitz連續。power iteration 是求奇異值的一種簡便演算法,

稱這種除以最大奇異值的操作為spectral norm

Hinge loss

Hinge loss 是對地球移動距離的一種拓展

Hinge loss 最初是SVM中的概念,其基本思想是讓正例和負例之間的距離盡量大,後來在Geometric GAN中,被遷移到GAN:

對於D來說,只有當D(x) < 1 的正向樣本,以及D(G(z)) > -1的負樣本才會對結果產生影響

也就是說,只有一些沒有被合理區分的樣本,才會對梯度產生影響

這種方法可以使訓練更加穩定


推薦閱讀:
相关文章