我为什么弃用GAN?
賈浩楠發(fā)自凹非寺
量子位報道公眾號 QbitAI
輸出單一、調(diào)參麻煩、損失函數(shù)不能收斂、穩(wěn)定性差。
蘇黎世理工大學的博士 Andreas Lugmayr 歷數(shù)了各種 GAN 的“罪狀”,說出了今后棄用 GAN的話。
說出“棄用”,當然是已經(jīng)有了B計劃。
Andreas Lugmayr 博士和他的團隊開發(fā)了一種新的標準化流(Normalizing Flow)模型,能夠彌補 GAN 在生成任務中的的種種缺陷。
這項研究成果“SRFlow”,還被 ECCV 2020 Spotlight 收錄。
那么 SRFlow 到底有多厲害?能在多大程度上替代 GAN 呢?
SRFlow“又多又好”
從肉眼可見的生成任務結(jié)果上,可以看出 SRFlow 至少在兩個方面超越了 GAN,一是生成結(jié)果的多樣性,二是提高圖片分辨率后的保真度。
輸入一個低分辨率馬賽克圖像,基于 GAN 的 ProgFSR 模型和 SRFlow 生成結(jié)果對比:
在提升 4 倍分辨率的任務中,SRFlow 的生成結(jié)果也比基于 GAN 的 ERSGAN 更加清晰真實。
對于眾多的 GAN 變體來說,有一些缺陷是難以避免的,比如圖像復原生成任務,生成器廣泛忽略了隨機向量,因此,大多數(shù)基于 GAN 的圖像到圖像映射都是單一確定的。
GAN 訓練中的損失函數(shù),包括了生成器偽造圖像,而鑒別器卻無法知道哪些圖像是假的。
另一方面,鑒別器的職責就是確定一個圖像是來自生成器還是來自訓練集。
這兩個相互沖突的目標導致了學習參數(shù)的持續(xù)漂移,導致輸出結(jié)果不同程度的失真。
那么基于標準化流的 SRFlow,是如何彌補這些缺陷的呢?
SRFlow 不會忽略隨機向量
對于 GAN 忽略輸入的隨機向量,導致輸出單一的問題,傳統(tǒng)的 GAN 策略是,在模型中增加一個控制信號,并拋棄重建損失函數(shù)。
△放大 16 倍分辨率下的 SRFlow 輸出結(jié)果
而 SRFlow 在訓練過程中,算法核心—標準化流模型將高分辨率圖像轉(zhuǎn)化為高斯分布。圖像條件標準化流的情況并非如此。
為了避免 GAN 的判別器損失通常會導致模式崩潰,SRFlow 采用單一損失進行訓練的,并且對隨機輸出進行內(nèi)采樣。
模型穩(wěn)定超參數(shù)少,調(diào)參方便
條件 GAN 需要仔細的超參數(shù)調(diào)整。很多 GAN 的變體模型中,總損失由多個損失的加權和組成。
所以降低失真需要很大的精力來調(diào)整不同的損失函數(shù)權重。
此外還必須平衡生成器和判別器,使訓練過程穩(wěn)定。
在圖像生成任務中 SRFlow 使用最大似然策略(maximum likelihood),輸入的圖像被轉(zhuǎn)化為一個高斯?jié)摽臻g。通過簡單的計算得到高斯向量的似然。然后使用現(xiàn)成的 Adam 優(yōu)化器,這個損失函數(shù)會穩(wěn)定地收斂。
△SRFlow 的單一損失穩(wěn)定且可收斂
Normalizing Flow 本質(zhì)上是穩(wěn)定的。因為模型只有一層網(wǎng)絡和一個損失,超參數(shù)要少得多,訓練起來也更容易。
特別是對于開發(fā)新模型的研究人員來說,這一點非常實用。
新手可以更容易地比較不同的架構(gòu)的 Normalizing Flow 變體。
輸入輸出保持高度穩(wěn)定
在沒有進一步干預的情況下,有條件的 GAN 是不具備輸入一致性的。對于提升分辨率任務,一個重要的問題是,高分辨率的圖像是否與低分辨率的輸入保持最大程度一致。
如果不能,那么該方法到底是真的提高分辨率還是僅僅生成一個類似圖片?這點十分值得懷疑。
GAN 模型里有一個不受監(jiān)督的損失函數(shù),會導致模型自行生成圖片像素。而標準化流模型避免了這種可能。它以且只以輸入圖像為條件,來模擬高分辨率圖像的分布。
將 SRFlow 的輸出與輸入對比,可以看出與 GAN 的結(jié)果不同,具有高度一致性。
生成任務只需 1 張 GPU 訓練
研究團隊說,論文中的實驗基于 GLOW 網(wǎng)絡,使用多達 40 個 GPU 來訓練圖像生成。
但如果只是應對簡單的圖片生成任務,只需要一塊 GPU 就能完成對 SRFlow 的訓練。
什么是標準化流模型?
機器學習中有一類是概率模型。訓練一個模型時,常見的一種處理方法是調(diào)整參數(shù)以使得模型在訓練數(shù)據(jù)集的概率最大。
為了達到這個目的,需要假設模型滿足一定的概率分布模式。
那么到底需要什么樣的分布,既具有接近真實樣本的表達能力,又具有統(tǒng)計機器學習模型較好的解釋性呢?
高斯分布可以基本滿足:采樣方便、解析的密度已知、KL 距離容易計算,還有中心極限定理的保證。最常使用的兩種方法是用于分類的 Categorical 以及用于回歸的 Gaussian。
但這兩種方法仍然有一些問題, 因為真實世界中樣本的概率密度函數(shù)一般來說,與范疇分布以及高斯分布相差甚遠。
如果簡單地使用高斯作為圖像生成的似然函數(shù),那最后得到的生成結(jié)果可能很糟糕。
而標準化流(Normalizing Flow)可以把簡單的概率密度(比如高斯分布)形式轉(zhuǎn)化成某種更高級分布形式。
Flow 指的是數(shù)據(jù)流經(jīng)過一系列雙射(可逆映射)。最終映射到合適的表征空間,normalizing 指的是表征空間的變量積分是1,滿足概率分布函數(shù)的定義。
標準化流這種工具,可以產(chǎn)生更強大的分布函數(shù)。
從另一個視角來看,標準化流可以看作是一種參數(shù)化對先驗概率q的逼近的方法,并且也可以用在其它似然函數(shù)方程場景下。
與 GAN 不同,標準化流模型在采樣、訓練穩(wěn)定性、損失函數(shù)收斂、和一致性方面具有優(yōu)勢。
標準化流模型更加適合用在圖像生成、強化學習、變分推斷之類的任務。
SRFlow 的團隊,已經(jīng)將這個基于標準化流的模型開源。
那么你的下一個機器學習任務,會使用 SRFlow 嗎?
論文地址
https://arxiv.org/abs/2006.14200
開源地址
https://github.com/andreas128/SRFlow?
總結(jié)
以上是生活随笔為你收集整理的我为什么弃用GAN?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 旅行速写是谁画的呢?
- 下一篇: 咸蛋黄还能人造?20粒才9.9元 专家教