從某些指標來看,在過去的兩年中,生成式對抗網絡(Generative Adversarial Networks,簡稱GAN)的研究已經取得了長足進展。對圖像合成模型進行的實際改進速度非常快,讓人有種跟不上技術進步步伐的感覺。
然而,從其他指標來看,實際發生的情況可能並非如此樂觀。舉例來說,關於「應該如何評估GAN」仍然存在廣泛的分歧。鑑於目前的圖像合成基準似乎有些泛濫,我們認為現在是反思這個人工智慧子領域研究目標的最佳時機。
這些開放性問題列表在這方面對其他領域有所幫助。本文提出了許多GAN尚未解決的問題,它們會讓我們對其他研究人員的工作感到興奮。下面讓我們討論下有關GAN尚未解決的七大難題:
1.與其他生成模型相比,GAN有何優勢?
除了GAN,目前流行的還有另外兩種生成模型:即流程模型(Flow Models)和自回歸模型2(AutoregressiveModels2)。粗略地說,流程模型將一組可逆變換應用於先前的樣本,這樣就可以計算出觀測值的精確對數概率。另一方面,自回歸模型將觀察到的分布分解為條件分布,並一次處理一個觀察組件(對於圖像,它們可能每次處理一個像素)。最近的研究表明,這些模型具有不同的性能特徵和優勢。我們認為,準確地描述這些優勢,並確定它們是否是模型家族固有特徵是個有趣的開放性問題。
具體來說,我們暫時關注下GAN和流程模型之間計算成本的差異。乍一看,流程模型似乎使GAN變得不必要。流程模型允許精確的對數似然計算和精確推理,因此,如果訓練流程模型和GAN具有相同的計算成本,GAN可能就沒有什麼用,還要在訓練GAN上花費大量的精力,所以我們似乎應該關心流程模型是否會使GAN過時。
然而,GAN訓練的計算成本與流程模型之間似乎存在著巨大的差距。為了估算這種差距,我們可以考慮兩個正接受面部數據集訓練的模型。其中,GLOW模型被訓練為使用40個GPU在2周內生成256x256張名人臉,並使用大約2億個參數。相比之下,漸進式GAN使用大約4600萬個參數,在包含8個GPU的類似面部數據集上訓練4天,以生成1024x1024個圖像。粗略地說,流程模型需要17倍於GPU的時間和4倍參數才能生成像素減少16倍的圖像。這種比較並不完美,但它能讓你體驗到兩者的差距。
那麼,為何流程模型效率較低?我們看到兩個可能的原因:首先,最大似然訓練在計算上可能比對抗性訓練更難。特別是,如果你的訓練集上的任何元素被你的生成模型分配為零的概率,你將會受到無限嚴厲的懲罰!而另一方面,GAN生成器只會因為給訓練集元素分配零概率而間接地受到懲罰,而且這種懲罰沒有那麼嚴厲。其次,規範化流可能是表示某些功能的低效方法。下文有些關於表達性實驗的描述,但目前我們還沒有對這個問題進行深入的分析。
我們已經討論了GAN模型和流程模型之間的優劣,那麼自回歸模型呢?事實證明,將自回歸模型表示為流程模型是不可並行的。結果表明,自回歸模型比流程模型具有更好的時間和參數效率。因此,GAN是並行且有效但不可逆的,而流程模型是可逆且並行但效率較低的,自回歸模型則是可逆且有效但不並行的。
這就引出了我們第一個懸而未決的問題:和其他生成模型相比,GAN模型有何優勢?特別地,我們可以做些CAP定理關於可逆性、並行性和參數/時間效率的類型聲明嗎?解決這個問題的一種方法是研究更多的模型,這些模型是多個模型族的混合。有人考慮使用混合GAN/流程模型,但我們認為這一方法仍未得到充分的探索。
我們也不確定最大似然計算訓練是否一定比GAN訓練更難。的確,在GAN訓練損失的情況下,沒有明確禁止在訓練數據點上放置零。但是如果生成器這樣做,一個足夠強大的鑑別器能夠做得更好,這也是事實。看起來GAN確實在實踐中學習低支持度的分布。最後,我們懷疑流程模型對於每個參數的表達能力根本不如任意解碼器函數,並且我們懷疑這在某些假設下是可以證明的。
2.GAN可以對哪種分布進行建模?
大多數GAN研究集中於圖像合成。特別是,人們利用某些標準(在深度學習社區)的圖像數據集訓練GAN,比如MNIST、CIFAR-10、STL-10、CelebA以及Imagenet等。關於這些數據集中哪種「最容易」建模,人們眾說紛紜。特別是MNIST和CelebA被認為比Imagenet、CIFAR-10或STL-10更容易,因為它們「非常有規律」。其他人注意到,大量的分類使得ImageNet合成對GAN來說非常困難。這些觀察結果得到了實證的支持,即CelebA生成的圖像合成模型比Imagenet上的圖像合成模型更有說服力。
然而,我們必須通過在更大更複雜的數據集上訓練GAN,以便能在更惡劣和嘈雜的過程得出這些結論。特別是,我們主要研究了GAN如何在碰巧用於對象識別的數據集上運行。與任何科學一樣,我們希望有個簡單的理論來解釋我們的實驗。理想情況下,我們可以查看一個數據集,執行些計算,而不需要真正訓練一個生成模型,然後說「這個數據集對於GAN來說很容易建模,但是對於VAE來說卻不容易」這樣的話。在這個問題上已經取得了一些進展,但我們覺得還有更多的事情可以做。
現在我們可以引出問題了:在給定分布中,我們能說GAN對這個分布建模有多難嗎?我們可能還會問以下相關問題:「對分布建模」是什麼意思?我們是滿足於低支持度表示,還是想要真正的密度模型?是否存在GAN永遠無法學會建模的分布?對於GAN來說,是否有些分布在原則上是可學習的,但是對於某些合理的資源消耗模型卻不能有效學習?對於GAN來說,這些問題的答案和其他生成模型的答案有什麼不同嗎?
我們提出兩種策略來回答這些問題:一是合成數據集,我們可以研究合成數據集來探究哪些特徵影響GAN的學習能力。例如,在作者創建合成三角形的數據集時。我們認為這個角度還沒有得到充分的探索。合成數據集甚至可以由感興趣的量加以參數化,例如連接度或平滑度,以便進行系統研究。這樣的數據集對於研究其他類型的生成模型也很有用。
二是修改現有的理論結果,我們可以使用現有的理論結果,並嘗試修改假設,以探索數據集的不同屬性。舉例來說,我們可以獲得應用於給定單峰數據分布的GAN結果,然後看看當數據分布變成多模態時會發生什麼。
3.我們如何在圖像合成之外擴展GAN?
除了像圖像到圖像的翻譯這樣的應用,大多數GAN取得的成功都是在圖像合成方面。GAN在圖像之外的應用主要集中在三個領域:
1)文本:文本的離散性使得應用GAN變得困難。這是因為GAN依賴於將信號從鑑別器通過生成的內容反向傳播給生成器。有兩種方法可以解決這個問題。首先,GAN只對離散數據的連續表示發揮作用;二是利用實際的離散模型,嘗試用梯度估計的方法訓練GAN。其他更複雜的處理方法也存在,但就我們所知,它們都沒有產生與基於可能性的語言模型具有競爭性的結果。
2)結構化數據:那麼其他非歐幾裡德結構化數據呢,比如對這類數據的研究稱為幾何深度學習。GAN在這方面的成功有限,但其他深度學習技術也是如此,因此很難說GAN有多重要。我們知道在這個空間中使用GAN的一個嘗試,它使生成器產生(和鑑別器「評論」)隨機漫步模型,這些模型與從源圖中採樣的相似。
3)音頻:音頻是GAN最接近於通過圖像獲得成功的領域。將GAN應用於無監督音頻合成的第一個嚴肅嘗試是,作者對GAN在音頻上操作的事實做了各種特殊的考慮。最近的研究表明,在某些感知指標上,GAN甚至可以超越自回歸模型。
儘管有這些嘗試,但圖像顯然是GAN最簡單的建模領域。
這就引出了第三個問題:如何確保GAN在非圖像數據上運行良好?將GAN擴展到其他領域需要新的培訓技術嗎,還是僅僅需要為每個領域提供更好的隱式先驗?
我們期望GAN最終能夠在其他連續數據上獲得圖像合成級別的成功,但這需要更好的隱式先驗。要找到這些先驗,需要認真思考在給定的領域中什麼是有意義的,什麼是在計算上可行的。對於結構化數據或非連續數據,我們不太確定。一種方法可能是使產生器和鑑別器都經過強化學習訓練。要使這種方法有效,可能需要大規模的計算資源。最後,這個問題可能只需要基礎研究取得進展。
4.我們能對GAN訓練的全局收斂有何期待?
訓練GAN不同於訓練其他神經網絡,因為我們同時優化了反目標的產生器和判別器。在某些假設情況下,這種同步優化是局部漸近穩定的。但不幸的是,很難證明關於一般情況的有趣事情。這是因為鑑別器/發生器的損耗是其參數的非凸函數。但是所有的神經網絡都有這個問題!我們想要找到些方法來專注於解決同時優化所產生的問題。
這就引出了我們的第四個問題:什麼時候才能證明GAN是全局收斂的?哪些神經網絡收斂結果可以應用於廣義神經網絡?在這個問題上已經取得了不小的進展。概括地說,現有的技術有三種,它們都產生了喜人的結果,但沒有一種已經研究完成:
1)簡化假設:第一個策略是簡化關於生成器和鑑別器的假設。例如,如果使用特殊的技術和某些額外的假設進行優化,簡化後的LGQ?GAN(線性生成器、高斯數據和二次判別器)可以顯示出全局收斂性。似乎有希望逐步放鬆這些假設,看看會發生什麼。例如,我們可以遠離單峰分布。這是個自然放鬆的研究,因為「模式崩潰」是個標準的GAN病理學。
2)使用正常神經網絡的技術:第二種策略是應用分析正常神經網絡(也是非凸的)的技術來回答關於GAN收斂性的問題。例如,有人認為深度神經網絡的非凸性不是問題,因為隨著網絡的變大,低質量的局部損失函數極小值會以指數級的方式變得罕見。這個分析能「提升到GAN領域」嗎?實際上,對用作分類器的深層神經網絡進行分析,看看它們是否適用於GAN,似乎是一種普遍有用的啟發式方法。
3)博弈論:最後一種策略是利用博弈論中的概念建立GAN訓練模型。這些技術產生了可證明收斂於某種近似納什均衡的訓練過程,但這樣做使用了不合理的大資源約束。在這種情況下,「顯而易見」的下一步是嘗試減少這些資源約束。
5.我們應該如何評估GAN,什麼時候使用它們?
當涉及到評估GAN時,有很多建議,但很少能取得共識。這些建議包括:
1)Inception?Score和FID:這兩個分數都使用預先訓練好的圖像分類器,並且都有已知的問題。對它們提出的普遍批評在於,這些分數衡量的是「樣本質量」,而不是真正的「樣本多樣性」。
2)MS-SSIM:建議使用MS-SSIM來單獨評估多樣性,但這種技術存在許多問題,並沒有真正流行起來。
3)AIS:提出對GAN的輸出建立高斯觀測模型,並利用退火的重要抽樣估計該模型下的對數似然。但結果表明,在GAN發生器也是流程模型的情況下,用這種方法計算的估計是不準確的。
4)幾何分數:建議計算生成的數據流形的幾何屬性,並將這些屬性與實際數據進行比較。
5)精度和召回:嘗試同時測量GAN的「精度」和「召回」。
6)技能等級:研究表明,訓練有素的GAN甄別器可以包含有用的信息,評估可以執行。
這些只是GAN評估方案的一小部分。雖然Inception?Score和FID比較流行,但是GAN評估顯然不是個已經達成共識的問題。最後,我們認為對如何評估GAN的困惑源於對何時使用GAN的困惑。
因此,我們把這兩個問題結合起來描述:什麼時候我們應該使用GAN而不是其他生成模型?我們應該如何在這些情況下評估其性能?我們應該用GAN做什麼?如果你想要真正的密度模型,GAN可能不是最好的選擇。現在有很好的實驗證據表明,GAN學習了目標數據集的「低支持度」表示,這意味著測試集中可能有大量部分被GAN(隱式地)賦值為零的可能性。
與其為此擔心太多,我們認為應該把GAN的研究重點放在那些有意義的任務上,GAN很可能非常適合於需要感知能力的任務。圖像合成、圖像翻譯、圖像填充和屬性操作等圖形應用程式都屬於這一類。那麼,我們應該如何評價GAN執行這些感知任務?理想情況下,我們只需要人類法官,但這可能是昂貴的。便宜的代理就可以確保分類器能否區分真實和虛假的例子。這被稱為分類器雙樣本測試(C2ST)。C2STs的主要問題是,如果產生器有個很小的缺陷,而且是跨樣本的系統缺陷,這將主導評估。
理想情況下,我們應該有個不受單一因素支配的整體評估方案。一種方法可能是讓批評家對主要缺陷視而不見。但是一旦我們這樣做了,其他的缺陷可能會佔據主導地位,我們需要新的批評家,如此往復循環。如果我們通過迭代的方式做這件事,我們可以得到一種「針對批評者的Gram-Schmidt過程」,創建有序的列表,列出最重要的缺陷並忽略它們的批評者。也許這可以通過對批評家激活執行PCA來實現,並逐漸剔除越來越多的高方差分量。
最後,我們可以對人類進行評估,儘管花費不菲。這可以讓我們衡量我們真正關心的東西。這種方法可以通過預測人類的答案來降低成本,並且只有在預測不確定時才與真人交互。
6.GAN培訓是如何按批次規模進行的?
龐大的小批量處理幫助擴大了圖像分類,它們也能幫助我們擴大GAN?對於有效地使用高度並行的硬體加速器,小批量處理可能特別重要。乍一看,答案似乎應該是肯定的。畢竟,大多數GAN中的鑑別器只是一個圖像分類器。如果梯度噪聲成為訓練瓶頸,大批量訓練可以加快訓練速度。然而,GAN有個分類器沒有的獨特瓶頸,即訓練過程可能會出現分歧。
由此,我們引出了第六個問題:GAN培訓是如何按批次規模進行的?梯度噪聲在GAN訓練中的作用有多大?GAN培訓是否可以進行修改,以便更好地適應批量訓練?有證據表明,增加小批量的規模可以提高量化結果,減少培訓時間。如果這一現象屬實,說明梯度噪聲是一個主要因素。然而,這個問題還沒有得到系統的研究,所以我們認為這個問題仍然存在。
交替培訓程序能否更好地利用大批量培訓?最優傳輸GAN在理論上比一般的GAN具有更好的收斂性,但由於需要對批量樣本和訓練數據進行對齊,因此需要較大的批處理容量。因此,它們似乎是擴展到非常大的批處理規模的不錯選擇。最後,異步SGD可能是使用新硬體的一個很好的替代方案。在這種情況下,限制因素往往是梯度更新在參數的「陳舊」副本上計算。但是GAN實際上似乎可以從對過去參數的培訓中獲益,所以我們可能會問異步SGD是否以一種特殊的方式與GAN培訓交互。
7.GAN和對抗性例子之間有什麼關係?
眾所周知,圖像分類器面臨著對立的例子:當添加到圖像中時,人類無法察覺的幹擾會導致分類器給出錯誤的輸出。現在我們還知道,有些分類問題通常可以有效地學習,但是指數級的學習卻非常困難。由於GAN識別器是一種圖像分類器,人們可能會擔心它會遇到反例。儘管有大量關於GAN和對抗性例子的文獻,但似乎沒有多少關於它們之間關係的研究。
因此,我們可以問這樣一個問題:判別器的對抗性穩健性如何影響GAN訓練?我們如何開始思考這個問題?考慮一個固定的鑑別器D,如果有個生成器G被正確分類為假圖,並且有個很小的幹擾p,比如G(z)?+?p被分類為真圖,那麼D就會存在一個對立的例子。使用GAN時,需要考慮的是生成器的梯度更新將生成新的生成器G',其中G',其中G'(z) = G(z) + p。
這種擔憂現實嗎?研究表明,對生成模型的蓄意攻擊是可行的,但我們更擔心的是可能是被稱為「意外攻擊」的東西。有理由相信,這些意外攻擊的可能性較小。首先,在再次更新鑑別器之前,生成器只允許進行一次梯度更新。相比之下,當前的對抗性攻擊通常要運行幾十次迭代。
其次,對生成器進行優化,給出了前一步生成的一批樣本,該批樣本對於每個梯度步驟都是不同的。最後,優化是在生成器的參數空間進行的,而不是在像素空間。然而,這些論證都沒有明確排除生成器創建對抗性示例的可能性。我們認為這是一個值得進一步探索、並可產生豐富成果的課題。