農林漁牧網

您現在的位置是:首頁 > 農業

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

2022-03-06由 機器之心Pro 發表于 農業

非零因子代入法是什麼

機器之心專欄

公眾號:PaperWeekly

作者:蘇劍林

不知道從什麼時候開始,我發現我也掉到了 GAN 的大坑裡邊了,唉,爭取早日能跳出來。

本文介紹的是我最近提交到 arXiv 的一個關於 GAN 的新框架,裡邊主要介紹了一種對機率散度的新理解,並且基於這種理解推匯出了一個新的 GAN。

整篇文章比較偏理論,對這個 GAN 的相關性質都做了完整的論證,自認為是一個理論完備的結果。

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

先擺結論:

1。

論文提供了一種分析和構造機率散度的直接思路

,從而簡化了構建新 GAN 框架的過程;

2。

推匯出了一個稱為 GAN-QP 的 GAN 框架

,這個 GAN 不需要像 WGAN 那樣的 L 約束,又不會有 SGAN 的梯度消失問題,實驗表明它至少有不遜色於、甚至優於 WGAN 的表現。

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

▲ GAN-QP效果圖

論文的實驗最大做到了 512 x 512 的人臉生成(CelebA HQ),充分表明了模型的有效性(效果不算完美,但是模型特別簡單)。有興趣的朋友,歡迎繼續閱讀下去。

直面對偶空間

我們現在要構建一個 GAN 框架,一般包含三個步驟:

尋求一種良好的機率散度;

找出它的對偶形式;

轉化為極小-極大遊戲(min-max game)。

問題是:真正對訓練過程有用的是第二、第三步,第一步並不是那麼必要。

事實上,從原空間要定義一個新的散度很難,定義了之後也不一定容易轉化為對偶形式。然而,我們可以直接在對偶空間分析,由此可以發現一批新的、形態良好的散度。換言之,我們其實可以直接在對偶空間中論述一個式子是否滿足散度的定義,從而直接給出可最佳化的目標,而不需要關心它具體是 JS 散度還是 W 距離了。

下面我們來舉例說明這個思路。

散度

首先我們來給出散度的定義:

如果 D[p,q] 是關於 p,q 的標量函式,並且滿足:

D[p,q]≥0 恆成立;

D[p,q]=0p=q。

那麼稱 D[p,q] 為 p,q 的一個散度,散度與“距離”的主要差別是散度不用滿足三角不等式,也不用滿足對稱性。但是散度已經保留了度量差距的最基本的性質,所以我們可以用它來度量 p,q 之間的差異程度。

SGAN

基本定義

我們先來看 SGAN 中的判別器 loss,定義:

這其實就是 JS 散度的對偶形式。但是我們可以直接基於這個定義來證明它是一個散度,然後討論這個散度本身的性質,而根本不需要知道它是 JS 散度。

怎麼證明?只需要證明這個結果滿足剛才說的散度的兩點要求。注意,按照我們的邏輯,我們不知道它是 JS 散度,但我們可以從數學角度證明它是一個散度。

其實如果讀者真的明白了式 (1) 的含義,證明就不困難了。式 (1) 先定義了一個期望的式子,然後對 T 取最大(用更準確的說法是求“上確界”),取最大的結果才是散度。再強調一遍,“取最大之後的結果才是散度”,

這個式子並不是散度。

具體的證明過程略微冗長,就不完整擺出來了,請讀者自行去看原文的附錄。或者看下面的 WGAN 的部分,因為 WGAN 的部分相對簡單。

對抗網路

假如有了散度之後,我們就可以透過縮小兩個機率分佈的散度,來訓練生成模型了。也就是說接下來要做的事情應該是:

注意 D[p(x),q(x)] 是透過 maxT 操作實現的,所以組合起來就是一個 min-max 的過程,比如前面的例子,等價地就是:

這就是 SGAN。

所以我們發現,

GAN 的過程其實就兩步:

1)透過 max 定義一個散度;2)透過 min 縮小兩個分佈的散度。這裡的新觀點,就是將 max 直接作為散度的定義的一部分。

效能分析

我們知道 SGAN 可能有梯度消失的風險,這是為什麼呢?我們考察一個極端情形:

其中 α≠β。這樣一來,兩個分佈分別只是單點分佈,完全沒有交集。這種情況下代入 (1),結果就是:

注意我們對 T 沒有任何約束,所以為了取最大,我們可以讓 T(α)→+∞,T(β)→∞,從而得到上確界是一個常數 log2。即這種情況下 D[p(x),q(x)]=log2。

這就是說,對於兩個幾乎沒有交集的分佈,式 (1) 定義的散度給出的度量結果是常數 log2,常數就意味著梯度是 0,無法最佳化。而 WGAN 的那兩篇文章則表明,“沒有交集”理論上在 GAN 中是很常見的,所以這是 SGAN 的固有毛病。

一般的f散度

上面的幾個小節已經完整了呈現了這種

理解的流程:

1。 我們透過 max 定義一個數學式子,然後可以從數學角度直接證明這是一個散度,而不用關心它叫什麼名字;

2。 透過 min 最小化這個散度,組合起來就是一個 min-max 的過程,就得到了一種 GAN;

3。 為了檢查這種散度在極端情況下的表現,我們可以用 p(x)=δ(xα),q(x)=δ(xβ) 去測試它。

上述關於 SGAN 的論述過程,可以平行地推廣到所有的 f-GAN 中(參考

《f-GAN簡介:GAN模型的生產車間》

[1]),各種 f 散度其實沒有本質上的差異,它們有同樣的固有毛病(要不就梯度消失,要不就梯度爆炸)。

WGAN

基本定義

現在我們轉向一類新的散度:Wasserstein 距離。注意 Wasserstein 距離是一個嚴格的、滿足公理化定義的距離,不過我們這裡只關心它的散度性質。定義:

這裡:

而 d(x,y) 是任意一種現成的距離。

可以直接證明它是一個散度。這個證明還算經典,所以將它寫在這裡:

1。 不管是什麼 p(x),q(x),只要讓 T(x)≡0,我們就得到

,因為散度的定義是要遍歷所有的 T 取最大的,所以它至少不會小於 0,這就證明了第一點非負性;

2。 證明 p(x)=q(x) 時,W[p(x),q(x)]=0,也就是 W[p(x),p(x)]=0,這幾乎是顯然成立的了;

3。 證明 p(x)≠q(x) 時(嚴格來講是它們不等的測度大於 0),W[p(x),q(x)]>0。這個相對難一點,但其實也很簡單,只需要令 T0(x)=sign(p(x)q(x)),那麼顯然有:

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

這樣我們就直接地證明了 W[p(x),q(x)] 是滿足散度的定義的。

對抗網路

同樣地,有了新散度,就可以定義新 GAN 了:

這就是 WGAN,相應的參考資料有互懟的藝術:從零直達WGAN-GP、WGAN-div:一個默默無聞的WGAN填坑者。

效能分析

同樣地,用 p(x)=δ(xα),q(x)=δ(xβ) 去測試 W[p(x),q(x)] 散度的效能,我們得到:

注意我們有 L 約束 ‖T‖L≤1,這意味著 |T(α)T(β)|≤d(α,β),等號可以取到,所以:

結果不是常數,所以即使在這種極端情況下我們可以也拉近兩個分佈的距離。所以從這一點看,WGAN 要比 SGAN 要好。

L約束

WGAN 的遺留問題就是如何往判別器加入 L 約束,目前有三種方案:引數裁剪、梯度懲罰、譜歸一化

,請參考深度學習中的Lipschitz約束:泛化與生成模型和WGAN-div:一個默默無聞的WGAN填坑者。

引數裁剪基本已經被棄用了。梯度懲罰原則上只是一個經驗方法,有它的不合理之處,而且要算梯度通常很慢。譜歸一化看起來最優雅,目前效果也挺好,不過也有限制的太死的可能性。進一步討論請看WGAN-div:一個默默無聞的WGAN填坑者。

新散度,新GAN

現在的結論是:SGAN 可能有梯度消失的風險,WGAN 雖然很好,但需要額外的 L 約束。那麼很自然就會問:

有沒有不需要 L 約束,又不會梯度消失的 GAN?魚與熊掌能否兼得?

還真的可以,下面帶你找一個。不對,其實不止一個,帶你找一批都行。

平方勢散度

基本定義

下面要給出的散度,形式是這樣的:

其中 λ>0 是一個超引數,d 可以是任意距離。

這個形式好像就在 WGAN 的基礎上加了一個平方形式的勢能,所以稱為平方勢散度(QP-div,quadratic potential divergence)。

論文的附錄已經證明了式 (12) 確實是一個散度。

效能分析

用 p(x)=δ(xα),q(x)=δ(xβ) 去測試這個散度,結果是:

設 z=T(α,β)T(β,α) 就得到

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

,很熟悉有沒有?這只是個二次函式的最大值問題呀,最大值是

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

呀,所以我們就有:

這不就跟 WGAN 差不多了嘛,哪怕對於極端分佈,也不會有梯度消失的風險。魚與熊掌真的可以兼得。

GAN-QP

對抗網路

有了散度就可以構建對抗網路,我們最終給出的形式為:

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

我在論文中稱之為 GAN-QP。

注意不要把二次項

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

這一項加入到生成器的 loss 中(理論上不成問題,但是用梯度下降最佳化時會有問題。),因為這一項的分母是 d(xr,xf),一旦最小化二次項,等價於最小化 d(xr,xf),也就是用 d(xr,xf) 來度量圖片的差距,這是不科學的。

解的分析

透過變分法可以證明(還是在附錄),判別器的最優解是:

由這個最優解,我們可以得到兩點結論。首先,不難證明最優解滿足:

也就是說最優解自動滿足 L 約束。

所以我們可以認為 GAN-QP 是一種自適應 L 約束的方案。

其次,將最優解代入生成器的 loss,那麼得到判別器的目標是:

這也是一個機率散度,並且我們也從理論上證明了它不會梯度消失/爆炸(跟柯西不等式有關)。此外,還可以看到 λ 只是一個縮放因子,事實上並不重要,從而這個 GAN-QP 對 λ 是魯棒的,λ 不會明顯影響模型的效果。

實驗結果

論文在 CelebA HQ 資料集上,比較了多種 GAN 與 GAN-QP 的效果,表明 GAN-QP 能媲美甚至超越當前最優的模型。

注意,模型 (15) 中,T 是 (xr,xf) 的二元函式,但實驗表明,取最簡單的一元特例 T(xr,xf)≡T(xr) 即可,即 T(xr,xf)T(xf,xr) 用 T(xr)T(xf) 就夠了,改成二元函式並沒有明顯提升(但也可能是我沒調好)。這樣的話,形式上就跟 WGAN-GP 非常相似了,但理論更完備。

程式碼開源:

https://github。com/bojone/gan-qp

128 x 128

在 128 x 128 解析度上,我們進行了較為全面的比較,定量指標是 FID。結果如下圖:

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

▲ 不同GAN的FID定量曲線

以及下表:

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

256 與 512

在 128 解析度上,最好的表現是 GAN-QP 和 SGAN-SN,不過在 256 x 256 解析度上,它們的表現就拉開了差距:

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

我最大把 GAN-QP 的實驗做到了 512 x 512 的人臉生成,效果還是不錯的,最終的 FID 是 26。44:

專欄 | 不用L約束又不會梯度消失的GAN,瞭解一下?

▲ 512 x 512人臉效果圖

論文綜述

這篇文章源於我對機率散度的思考,企圖得到一種更直接的理解機率散度的方案,其中還受啟發於 WGAN-div。

幸好,最後把這條路走通了,還得到了一些新結果,遂提交到 Github 中,供各位參考,希望得到各位前輩高手的指點。事實上,基於類似的思路,我們可以構造很多類似的散度,比如將平方換成 4 次、6 次方等,只不過理論分析起來就會困難一些了。

限於算力,加之我不是專門研究 GAN 的,所以實驗方面可能做得不夠完善,基本能論證結論即可,請大家體諒,當然也歡迎各位的指導。

相關連結

[1]。 https://kexue。fm/archives/6016

————————————————————————

本文轉自paperweekly,轉載請聯絡原公眾號獲得授權。

本文轉自paperweekly,轉載請聯絡原公眾號獲得授權

轉載請聯絡原公眾號獲得授權