天天看點

從入門到放棄心得 | 我為什麼棄用GAN?

來源:公衆号 量子位 授權

輸出單一、調參麻煩、損失函數不能收斂、穩定性差。

蘇黎世理工大學的博士Andreas Lugmayr曆數了各種GAN的“罪狀”,說出了今後棄用GAN的話。

從入門到放棄心得 | 我為什麼棄用GAN?

說出“棄用”,當然是已經有了B計劃。

Andreas Lugmayr博士和他的團隊開發了一種新的标準化流(Normalizing Flow)模型,能夠彌補GAN在生成任務中的的種種缺陷。

這項研究成果“SRFlow”,還被ECCV 2020 Spotlight收錄。

那麼SRFlow到底有多厲害?能在多大程度上替代GAN呢?

SRFlow“又多又好”

從肉眼可見的生成任務結果上,可以看出SRFlow至少在兩個方面超越了GAN,一是生成結果的多樣性,二是提高圖檔分辨率後的保真度。

輸入一個低分辨率馬賽克圖像,基于GAN的ProgFSR模型和SRFlow生成結果對比:

從入門到放棄心得 | 我為什麼棄用GAN?

在提升4倍分辨率的任務中,SRFlow的生成結果也比基于GAN的ERSGAN更加清晰真實。

從入門到放棄心得 | 我為什麼棄用GAN?

對于衆多的GAN變體來說,有一些缺陷是難以避免的,比如圖像複原生成任務,生成器廣泛忽略了随機向量,是以,大多數基于GAN的圖像到圖像映射都是單一确定的。

GAN訓練中的損失函數,包括了生成器僞造圖像,而鑒别器卻無法知道哪些圖像是假的。

另一方面,鑒别器的職責就是确定一個圖像是來自生成器還是來自訓練集。

這兩個互相沖突的目标導緻了學習參數的持續漂移,導緻輸出結果不同程度的失真。

那麼基于标準化流的SRFlow,是如何彌補這些缺陷的呢?

SRFlow不會忽略随機向量

對于GAN忽略輸入的随機向量,導緻輸出單一的問題,傳統的GAN政策是,在模型中增加一個控制信号,并抛棄重建損失函數。

從入門到放棄心得 | 我為什麼棄用GAN?

△放大16倍分辨率下的SRFlow輸出結果

而SRFlow在訓練過程中,算法核心—标準化流模型将高分辨率圖像轉化為高斯分布。圖像條件标準化流的情況并非如此。

為了避免GAN的判别器損失通常會導緻模式崩潰,SRFlow采用單一損失進行訓練的,并且對随機輸出進行内采樣。

從入門到放棄心得 | 我為什麼棄用GAN?

模型穩定超參數少,調參友善

條件GAN需要仔細的超參數調整。很多GAN的變體模型中,總損失由多個損失的權重群組成。

是以降低失真需要很大的精力來調整不同的損失函數權重。

此外還必須平衡生成器和判别器,使訓練過程穩定。

在圖像生成任務中SRFlow使用最大似然政策(maximum likelihood),輸入的圖像被轉化為一個高斯潛空間。通過簡單的計算得到高斯向量的似然。然後使用現成的Adam優化器,這個損失函數會穩定地收斂。

從入門到放棄心得 | 我為什麼棄用GAN?

△SRFlow的單一損失穩定且可收斂

Normalizing Flow本質上是穩定的。因為模型隻有一層網絡和一個損失,超參數要少得多,訓練起來也更容易。

特别是對于開發新模型的研究人員來說,這一點非常實用。

新手可以更容易地比較不同的架構的Normalizing Flow變體。

輸入輸出保持高度穩定

在沒有進一步幹預的情況下,有條件的GAN是不具備輸入一緻性的。對于提升分辨率任務,一個重要的問題是,高分辨率的圖像是否與低分辨率的輸入保持最大程度一緻。

如果不能,那麼該方法到底是真的提高分辨率還是僅僅生成一個類似圖檔?這點十分值得懷疑。

GAN模型裡有一個不受監督的損失函數,會導緻模型自行生成圖檔像素。而标準化流模型避免了這種可能。它以且隻以輸入圖像為條件,來模拟高分辨率圖像的分布。

從入門到放棄心得 | 我為什麼棄用GAN?

将SRFlow的輸出與輸入對比,可以看出與GAN的結果不同,具有高度一緻性。

生成任務隻需1張GPU訓練

研究團隊說,論文中的實驗基于GLOW網絡,使用多達40個GPU來訓練圖像生成。

但如果隻是應對簡單的圖檔生成任務,隻需要一塊GPU就能完成對SRFlow的訓練。

什麼是标準化流模型?

機器學習中有一類是機率模型。訓練一個模型時,常見的一種處理方法是調整參數以使得模型在訓練資料集的機率最大。

為了達到這個目的,需要假設模型滿足一定的機率分布模式。

那麼到底需要什麼樣的分布,既具有接近真實樣本的表達能力,又具有統計機器學習模型較好的解釋性呢?

從入門到放棄心得 | 我為什麼棄用GAN?

高斯分布可以基本滿足:采樣友善、解析的密度已知、KL距離容易計算,還有中心極限定理的保證。最常使用的兩種方法是用于分類的Categorical以及用于回歸的Gaussian。

但這兩種方法仍然有一些問題, 因為真實世界中樣本的機率密度函數一般來說,與範疇分布以及高斯分布相差甚遠。

如果簡單地使用高斯作為圖像生成的似然函數,那最後得到的生成結果可能很糟糕。

而标準化流(Normalizing Flow)可以把簡單的機率密度(比如高斯分布)形式轉化成某種更進階分布形式。

Flow指的是資料流經過一系列雙射(可逆映射)。最終映射到合适的表征空間,normalizing指的是表征空間的變量積分是1,滿足機率分布函數的定義。

标準化流這種工具,可以産生更強大的分布函數。

從另一個視角來看,标準化流可以看作是一種參數化對先驗機率q的逼近的方法,并且也可以用在其它似然函數方程場景下。

與GAN不同,标準化流模型在采樣、訓練穩定性、損失函數收斂、和一緻性方面具有優勢。

标準化流模型更加适合用在圖像生成、強化學習、變分推斷之類的任務。

SRFlow的團隊,已經将這個基于标準化流的模型開源。

那麼你的下一個機器學習任務,會使用SRFlow嗎?

論文位址

https://arxiv.org/abs/2006.14200

開源位址

https://github.com/andreas128/SRFlow?