輸出單一、調參麻煩、損失函數不能收斂、穩定性差。
蘇黎世理工大學的博士Andreas Lugmayr歷數了各種GAN的「罪狀」,說出了今後棄用GAN的話。
說出「棄用」,當然是已經有了B計劃。
Andreas Lugmayr博士和他的團隊開發了一種新的標準化流(Normalizing Flow)模型,能夠彌補GAN在生成任務中的的種種缺陷。
這項研究成果「SRFlow」,還被ECCV 2020 Spotlight收錄。
那麼SRFlow到底有多厲害?能在多大程度上替代GAN呢?
從肉眼可見的生成任務結果上,可以看出SRFlow至少在兩個方面超越了GAN,一是生成結果的多樣性,二是提高圖片解析度後的保真度。
輸入一個低解析度馬賽克圖像,基於GAN的ProgFSR模型和SRFlow生成結果對比:
在提升4倍解析度的任務中,SRFlow的生成結果也比基於GAN的ERSGAN更加清晰真實。
對於眾多的GAN變體來說,有一些缺陷是難以避免的,比如圖像復原生成任務,生成器廣泛忽略了隨機向量,因此,大多數基於GAN的圖像到圖像映射都是單一確定的。
GAN訓練中的損失函數,包括了生成器偽造圖像,而鑑別器卻無法知道哪些圖像是假的。
另一方面,鑑別器的職責就是確定一個圖像是來自生成器還是來自訓練集。
這兩個相互衝突的目標導致了學習參數的持續漂移,導致輸出結果不同程度的失真。
那麼基於標準化流的SRFlow,是如何彌補這些缺陷的呢?
對於GAN忽略輸入的隨機向量,導致輸出單一的問題,傳統的GAN策略是,在模型中增加一個控制信號,並拋棄重建損失函數。
△放大16倍解析度下的SRFlow輸出結果
而SRFlow在訓練過程中,算法核心—標準化流模型將高解析度圖像轉化為高斯分布。圖像條件標準化流的情況並非如此。
為了避免GAN的判別器損失通常會導致模式崩潰,SRFlow採用單一損失進行訓練的,並且對隨機輸出進行內採樣。
條件GAN需要仔細的超參數調整。很多GAN的變體模型中,總損失由多個損失的加權和組成。
所以降低失真需要很大的精力來調整不同的損失函數權重。
此外還必須平衡生成器和判別器,使訓練過程穩定。
在圖像生成任務中SRFlow使用最大似然策略(maximum likelihood),輸入的圖像被轉化為一個高斯潛空間。通過簡單的計算得到高斯向量的似然。然後使用現成的Adam優化器,這個損失函數會穩定地收斂。
Normalizing Flow本質上是穩定的。因為模型只有一層網絡和一個損失,超參數要少得多,訓練起來也更容易。
特別是對於開發新模型的研究人員來說,這一點非常實用。
新手可以更容易地比較不同的架構的Normalizing Flow變體。
在沒有進一步幹預的情況下,有條件的GAN是不具備輸入一致性的。對於提升解析度任務,一個重要的問題是,高解析度的圖像是否與低解析度的輸入保持最大程度一致。
如果不能,那麼該方法到底是真的提高解析度還是僅僅生成一個類似圖片?這點十分值得懷疑。
GAN模型裡有一個不受監督的損失函數,會導致模型自行生成圖片像素。而標準化流模型避免了這種可能。它以且只以輸入圖像為條件,來模擬高解析度圖像的分布。
將SRFlow的輸出與輸入對比,可以看出與GAN的結果不同,具有高度一致性。
研究團隊說,論文中的實驗基於GLOW網絡,使用多達40個GPU來訓練圖像生成。
但如果只是應對簡單的圖片生成任務,只需要一塊GPU就能完成對SRFlow的訓練。
機器學習中有一類是概率模型。訓練一個模型時,常見的一種處理方法是調整參數以使得模型在訓練數據集的概率最大。
為了達到這個目的,需要假設模型滿足一定的概率分布模式。
那麼到底需要什麼樣的分布,既具有接近真實樣本的表達能力,又具有統計機器學習模型較好的解釋性呢?
高斯分布可以基本滿足:採樣方便、解析的密度已知、KL距離容易計算,還有中心極限定理的保證。最常使用的兩種方法是用於分類的Categorical以及用於回歸的Gaussian。
但這兩種方法仍然有一些問題, 因為真實世界中樣本的概率密度函數一般來說,與範疇分布以及高斯分布相差甚遠。
如果簡單地使用高斯作為圖像生成的似然函數,那最後得到的生成結果可能很糟糕。
而標準化流(Normalizing Flow)可以把簡單的概率密度(比如高斯分布)形式轉化成某種更高級分布形式。
Flow指的是數據流經過一系列雙射(可逆映射)。最終映射到合適的表徵空間,normalizing指的是表徵空間的變量積分是1,滿足概率分布函數的定義。
標準化流這種工具,可以產生更強大的分布函數。
從另一個視角來看,標準化流可以看作是一種參數化對先驗概率q的逼近的方法,並且也可以用在其它似然函數方程場景下。
與GAN不同,標準化流模型在採樣、訓練穩定性、損失函數收斂、和一致性方面具有優勢。
標準化流模型更加適合用在圖像生成、強化學習、變分推斷之類的任務。
SRFlow的團隊,已經將這個基於標準化流的模型開源。
那麼你的下一個機器學習任務,會使用SRFlow嗎?
https://arxiv.org/abs/2006.14200
開源地址
https://github.com/andreas128/SRFlow?
— 完 —
量子位 QbitAI · 頭條號籤約
關注我們,第一時間獲知前沿科技動態