生成式對抗網絡(GANs)的七大未解之謎
根據一些度量指標,在過去兩年,有關生成式對抗網絡(GANs)的研究中已經取得了長足進步。圖像合成模型的實際改進(如下所示),幾乎快得讓人跟不上。
然而,根據其它度量指標,研究并沒有很大的進展。例如,關于評估GANs的方法仍存在著廣泛的分歧。鑒于目前圖像合成基準似乎有點處于飽和的狀態,現在是時候要反思下這個子領域的研究目標。
本文將列出研究中的7個開放性問題,希望能在不久的將來,這些未解之謎能有答案。
如何在GANs和其它生成模型之間權衡?
除了GANs之外,目前還流行其它兩種生成式模型:流動模型和自回歸模型。粗略地說,流動模型可將一堆可逆變換應用于先驗樣本中,以便計算出觀測數據中的對數似然性。另一方面,自回歸模型可將觀測數據的分布因式分解為條件分布,并一次處理一個觀測成分(對于圖像,該模型可以一次處理一個像素)。
最近的研究表明這些模型具有不同的性能特征和權衡。一個耐人尋味的開放性問題是:如何準確地描述這些權衡,并決定其是否是這些模型的基本特質?
具體來說,讓我們暫時關注GANs和流動模型之間計算成本的差異。乍一看,使用流動模型似乎可能會使GANs的存在多余,原因是:流動模型還考慮到精確的對數似然性計算和精確推理。因此如果訓練流動模型和GANs具有相同的計算成本,那么GANs可能沒有什么用。既然花費了大量的精力訓練GANs,那么看起來我們更要關心流動模型是否會把GANs淘汰掉。
但是,訓練GANs和流動模型的計算成本似乎存在著巨大的差距。為了估計這個差距的大小,可以參考兩個在人臉數據集上訓練的模型。
GLOW模型經過訓練,可以使用40個GPU連續2周生成256x256個名人的臉,涉及約2億個參數。相比之下,逐步發展的GANs經過訓練,可以在同樣的數據集上使用8個GPU,連續4天使用大約4600萬個參數,生成1024x1024個圖像。
粗略地說,流動模型要花費17倍的使用GPU的天數,以及使用4倍多的參數,才能生成減少了16倍的像素。這種比較雖不嚴謹,但是還是能給我們提供一些參考的。
為什么流動模型效率較低?可能有以下兩個原因:首先,極大似然訓練在計算層面比對抗訓練更難。特別是,如果訓練集的任何元素被生成模型確定為零概率,那么其將受到極其嚴厲的懲罰!另一方面,GAN生成器只會因為給訓練集元素確定為零概率而間接地受到懲罰,并且這種懲罰不那么嚴厲。其次,規范化流程可能是表示某些函數的低效方法。
我們已經討論過GANs模型和流動模型之間的權衡,但是自回歸模型的權衡又是什么呢?事實證明,自回歸模型可以表示為不可并行的流動模型(因為二者都可逆)。結果還表明,自回歸模型在時間和參數上比流動模型更有效率。總的來說,GANs是高效并行但不可逆的,流動模型是可逆并行但不高效的,而自回歸模型是可逆高效但不并行的。
這引出了一個開放性問題:
問題1:GANs和其它生成模型之間的基本權衡是什么?特別是能否對可逆性、并行性和參數/時間效率做出某種CAP定理類型的聲明。
解決這個問題的一種方法是研究混合了更多模型的模型混合體。該方法已被考慮用來混合GAN和流動模型,但是這種方法仍未得到充分探索。
我們也不確定極大似然訓練是否一定比GAN訓練更難。的確,在GAN訓練損失的情況下,并沒有明確禁止在訓練數據點上放置零權值,但是如果生成器這樣做,那么一個足夠強大的判別器能夠做得比這個更好。不過,看起來GANs在實踐中似乎正在學習低支持度的分布。我們懷疑流動模型關于每個參數的表達能力根本不如任意解碼器函數,而且這在某些假設下是可證明的。
GANs可以為哪種分布建模?
大多數GAN的研究都側重于圖像合成,特別是在一些標準的(在深度學習社區中)圖像數據集上訓練GANs,包括:MNIST、CIFAR-10、STL-10、CelebA 和Imagenet。
關于哪些數據集最容易建模,有一些非官方的說法。比如MNIST和CelebA被認為比Imagenet、CIFAR-10、或STL-10更容易建模,因為它們“非常有規律”。其他人注意到,“大量的類使得ImageNet的圖像合成對GANs來說非常困難。”這些觀察得到了經驗事實的支持,即CelebA上圖像合成模型生成的圖像看起來比Imagenet上圖像合成模型更具說服力。
然而,在這個費時費力而且爭論不休的過程中,必須通過在越來越大和越復雜的數據集上進行GANs的訓練嘗試才能得出結論。這個過程主要研究了GANs對碰巧存在于對象識別的數據集的執行方法。
與任何科學一樣,我們希望有一個簡單的理論來解釋實驗觀察數據。理想情況下,可以查看一個數據集,執行一些需要計算而無需實際訓練的模型,然后說出“這個數據集對于GAN來說很容易建模,但是對于VAE來說就不一樣。”這個問題上已經取得了一些進展,但仍存在以下問題:
問題2:給定一個分布,用GAN對該分布建模的難度有多大?
“為分布建模”是什么意思?是否對低支持表示感到滿意還是想要真正的密度模型?有沒有GAN永遠無法學到的為分布建模的方法?對于一些合理的資源消耗模型,原則上是否有為GAN學習,但是不能有有效學習的分布呢?對于GAN而言,這些問題的答案是否與其它生成模型不同?
以下兩種策略可以回答這些問題:
- 合成數據集:通過研究合成數據集來探究影響可學習性的特征。例如,作者創建了合成三角形的數據集。這個領域尚未得到充分的研究。為了進行系統研究,合成數據集甚至可以由感興趣的量參數化,例如連接度或平滑度。這樣的數據集也可用于研究其它類型的生成模型。
- 修改現有的理論結果:現有理論結果加上嘗試修改假設導致數據集有不同的屬性。例如,可以獲取GANs應用于給定單峰分布數據的結果,并了解當數據分布變為多模態時會發生什么。
如何在圖像合成之外擴展GANs?
除了圖像到圖像的轉化和域適應等應用之外,大多數GAN的成功應用都是在圖像合成方面。GAN在圖像之外的應用主要集中在以下三個領域:
- 文本:文本的離散性使得 GANs的應用變得困難。這是因為GANs依賴于從判別器開始將信號通過生成的內容反向傳播到生成器。有兩種方法可以解決這個問題。首先,GAN只對離散數據的連續表示起作用,如下所示。第二種是使用實際的離散模型,并嘗試使用梯度估計來訓練GAN。其實還有其它更復雜的處理方法,但就我們所知,它們與基于可能性的語言模型相比,都不能產生具有競爭性(就困惑而言)的結果。
- 結構化數據:其它如圖表等非歐幾里得式的結構化數據是什么呢?對這類數據的研究稱為幾何深度學習。GANs在這方面成果有限,但其它的深度學習技術也是如此,因此很難理清GAN的重要性。在該領域,有過使用GANs的嘗試,即讓生成器生成(和判別器“評判”)隨機游動,這些隨機游動與從源圖中采樣的隨機游動相似。
- 音頻:音頻是GANs最接近成功實現合成圖像的領域。作者對GANs在音頻上操作做了各種特殊的考慮。最近研究表明,GANs甚至可以在一些感知指標上超越自回歸模型。盡管已經存在這些嘗試,圖像仍然是GANs最容易處理的領域。對此引出第三個問題。
問題3:如何使GANs在非圖像數據上表現良好?將GANs擴展到其它領域是否需要新的訓練技術?還是僅僅需要為每個領域提供更好的隱式先驗?
期望GANs最終能夠在其它連續數據上實現圖像合成級別的成功,但它需要更好的隱式先驗。找到這些先驗需要仔細思考在給定的領域里什么是有意義的,什么是可計算的。
結構化數據或非連續數據的界限比較模糊,一種可能的方法是使生成器和判別器推動強化學習訓練。要使這種方法有效,可能需要大規模的計算資源。解決這個問題可能只需要基礎研究。
如何描述GAN訓練的全局收斂性?
GAN訓練與其他神經網絡訓練不同,因為我們會交替優化生成模型和判別模型來對抗目標。在特定假設的前提下,這種交替優化會逐漸達到局部穩定。
然而,從總體來看,一些有趣的事情很難進行證明。這是因為判別模型/生成模型的參數均為非凸性損失函數。不過,這是所有神經網絡的通病。我們希望有方法能重點解決交替優化所造成的問題。于是就產生了下面的疑問:
問題4:何時能夠證明GAN具有全局收斂性?哪一種神經網絡收斂性結果能夠應用于GAN?
以上問題已經取得了不少進展。一般來說,目前有3種技術均取得了可喜的成果,但對這3種技術的研究尚不完善:
- 簡化假設——一種策略是對生成模型和判別模型做出簡單化假設。例如,通過某些特殊技術及條件假設進行優化后,簡化后的LGQ GAN(L代表線性生成模型,G代表滿足高斯分布的數據,Q代表二次判別模型)能夠表現出全局收斂性。逐漸放開這些假設并觀察結果似乎前景廣闊。例如,避免單峰分布。單峰分布是一種自然的松弛(relaxation),因為“模式崩潰”(Mode Collapse)是標準的GAN異常狀態。
- 使用常規神經網絡技術——第二種策略是應用分析常規神經網絡(非凸)的技術來解答有關GAN收斂性的問題。例如,《TheLoss Surfaces of Multilayer Networks》一文提出深度神經網絡的非凸性并不是問題,因為隨著神經網絡擴大,損失函數的低質量局部極小值點的數量呈指數級減少。這一分析結果是否可以“應用于GAN領域”?事實上,對用作分類器的深度神經網絡進行分析,并看其是否適用于GAN,這種啟發式算法似乎通常行之有效。
- 博弈理論——一種策略是根據博弈論的原理進行GAN訓練。這些技術能夠得出可收斂到某種接近于納什均衡點的訓練步驟(這一點可進行驗證),而且這一過程是在資源限制的情況下完成的。顯然,下一步就是要盡可能減少資源限制。
應該如何評估GAN,又該何時使用GAN?
目前評估GAN的方法有很多,但尚未達成統一。這些方法包括:
- 初始分數和FID(Fréchet 距離)——二者都使用經過預先訓練的圖像分類器,且都存在已知問題。而且,二者測量的是“樣本質量”,并沒有真正捕捉到“樣本多樣性”,這一點常為人詬病。
- MS-SSIM——該方法可以使用MS-SSIM單獨評估多樣性,但這一技術還存在一定問題,并沒有真正流行起來。
- AIS——該方法建議在GAN的輸出后串接一個高斯觀測模型(Gaussian observation model),并使用退火重要性采樣代碼(annealedimportance sampling)估算該模型下的對數似然值。然而,由于GAN生成模型也是流模型,這種計算方法并不準確。
- 幾何分數——該方法建議計算生成的數據流形的幾何屬性,并將這些屬性與實際數據進行對比。
- 精確和召回——該方法建議測量GAN的“精確率”和“召回率”。
- 技能等級——該方法已表明, 經過訓練的GAN判別模型能夠包含可用于評估的有用信息。
這些只是GAN評估方案中的一小部分。盡管初始分數和FID相對更受歡迎,但究竟用那種方法進行GAN評估顯然尚未有定論。我們認為,不知道如何評估GAN是因為不知道何時使用GAN。因此,將這兩個問題合為問題5:
問題5:什么時候該使用GAN而不是其他生成模型?如何評估GAN在這些背景下的表現?
用GAN來做些什么?要想得到真正的密度模型,GAN可能不是很好的選擇。目前已有實驗表明,GAN學習了目標數據集的“低支撐集(low support)”表征,這意味著GAN可能(隱式地)給測試集大部分數據分配為零似然度。
將GAN研究的重點放在支撐集不會造成問題甚至還有一定幫助的任務上。GAN可能非常適合感知類型的任務,如圖像合成,圖像轉換,圖像填充和屬性操作等圖形應用程序。
如何評估GAN在完成這些感知任務中的表現?理想狀態下,可以使用人力判斷,但這樣成本很高。低成本的代理服務器能夠查看分類器是否可以區分真實和假的樣本,這一過程即為分類器雙樣本測試(C2STs)。這一測試的主要問題是,生成模型哪怕出現一個跨越樣本系統性的微小缺陷,那么這個缺陷將會對評估結果產生決定性影響。
在理想狀態下,整體評估不受單一因素的支配。可行的方法之一是引入一個忽略顯性缺陷的critic(批評者)。但是,一旦這樣做,可能會有其他缺陷占據主導地位,于是就需要另一個critic,然后這一過程不斷重復。如果采取迭代的方式,就可以得到一種“Gram-Schmidt procedure for critics”,并創建一個有序列表,其中包含最重要的缺陷和能夠將其忽略的critic。也許這可以通過在critic激活上執行PCA(主成分分析),并逐步拋棄越來越多的更高方差分量來完成。
盡管有所取舍,我們仍可以對人類進行評估。這將使我們得以測量我們真正關心的事情。通過預測人類答案,并在預測不確定時僅與真人交互,可以減少這種方法的成本。
GAN訓練如何改變批量大小?
已知大規模minibatch有助于擴展圖像分類,那么它們是否也可以幫助擴展GAN?對于有效使用高度并行化的硬件加速器,規模較大的minibatch或能起到重要作用。
乍一看,答案似乎是肯定的——畢竟,大多數GAN中的判別模式不過是一個圖像分類器。如果在梯度噪聲上遇到瓶頸,則大規模的minibatch可以加速訓練過程。然而,GAN有一個分類器所沒有的特殊瓶頸,也就是說,二者的訓練過程可能有所不同。因此,我們提出如下問題:
問題6:GAN訓練時如何確定批量?梯度噪聲在GAN訓練中的作用有多大?是否可以修改GAN訓練,使其更好地改變批量大小?
有證據表明,增大minibatch的規模能夠改進量化結果并縮短訓練時間。如果這種現象始終存在,則表明梯度噪聲是一個主導因素。不過,這一點尚未得到系統研究,因此我們認為這個問題仍待解決。
交替訓練程序是否可以更好地利用大規模批訓練?理論上,傳輸GAN的收斂性比普通GAN更好,但需要更大規模的批量,因為傳輸GAN需要將批量樣本和訓練數據對齊。因此,傳輸GAN很有可能用于將GAN的批量擴展至非常大的規模。
異步SGD算法(異步隨機梯度下降)可以成為利用新硬件的不錯選擇。在這種設定中,限制因素往往在參數的“陳舊”副本上進行計算更新梯度。但實際上,GAN似乎真正得益于對過去的參數快照(snapshots)的訓練,因此我們可能會產生疑問,異步SGD是否以特殊方式與GAN訓練進行交互?
GAN與對抗性例子之間有什么關系?
眾所周知,對抗性例子會對圖像分類器造成影響:人類不易察覺的擾動會導致分類器在添加圖像時輸出錯誤結果。有的分類問題通常可以進行有效學習,但是要想學得穩健,難度就非常大了。
由于GAN判別模型是一種圖像分類器,有人可能擔心它會遇到對抗性例子。盡管研究GAN和對抗性例子的文獻浩如煙海,但關于二者如何聯系在一起的文獻少之又少。因此,提出以下問題:
問題7:判別模型對抗性的穩健性如何影響GAN訓練?
對這個問題,該從哪里入手呢?在給定一個判別模型D的情況下,如果生成樣本G(z)被正確地判別為假樣本,且存在小擾動p,使得G(z)+ p即被判別為真樣本,則D就有了對抗性例子。對于GAN,我們要關注的是生成模型的梯度更新將產生新的發生器G',其中,G'(z)= G(z)+ p。
這個問題是現實存在的嗎?生成模型的對抗性例子表明,對生成模型的故意威脅起到了作用。我們有理由相信這些意外威脅發生的可能性較小。首先,在判別模型再次更新前,生成模型只能進行一次梯度更新;而目前對抗性威脅通常會進行幾十次迭代。其次,給出一部分來自先驗分布的梯度不同的樣本,能夠優化生成模型。該優化過程發生在生成模型的參數空間(而非像素空間)。但是,這些論點都沒有完全排除生成模型創造對抗性例子的可能。因此,進一步探討這一話題能夠取得豐碩的成果。