GAN實戰筆記——第五章訓練與普遍挑戰:為成功而GAN

墨戈發表於2022-03-03

訓練與普遍挑戰:為成功而GAN

一、評估

回顧一下第1章中偽造達・芬奇畫作的類比。假設一個偽造者(生成器)正在試圖模仿達・芬奇,想使這幅偽造的畫被展覽接收。偽造者要與藝術評論家(判別器)競爭,後者試圖只接收真正的作品進入展覽。如果你是那位偽造者,目的是偽造這位偉大藝術家的“遺失的作品”,以對達・芬奇風格的完美模仿欺騙藝術評論家,要如何評價自己的做得有多好呢?

GAN試圖解決偽造者與藝術評論家之間水無止境的競爭問題。考慮到生成器通常比判別器更受關注,考慮它的評估時應該格外仔細。但是要如何量化一個偉大畫家的風格,或者說如何模仿他呢?以及如何才能量化生成作品的整體質量?

1. 評估框架

首選解決方案是擁有達・芬奇用他的風格畫出的所有可能的作品,然後看看用GAN生成的影像會不會在這個收藏集中。可以將此過程視為最大化最大似然的非近似版本。事實上,我們已經知道一個影像是否在該集合中,因此不涉及任何可能性。這種解決方案在實際中是水遠不可能實現的。

次優的解決方案是評估影像並指出對應要檢查的地方,然後合計所有錯誤或偽造的畫的數量。這樣侷限性很大,而且最終總是需要人類評論家來審查作品。從根本上講,這種解決方案儘管可能是次優的,但也是不可大規模使用的。

要用一種統計方法來評估生成樣本的質量,這樣可以擴大評估規模並可在實驗中使用。如果沒有一個易於計算的度量標準,也就無法監控進展。想象一下,迴圈中每次超引數初始化時,測量或者反向傳播都需要人為調整——這對於評估不同的實驗尤其是一個問題。GAN對超引數非常敏感,從而讓這個問題更為致命。因此,如果沒有統計指標會非常困難,每次要評估訓練質量時都必須人為核對。

那為什麼不能直接用已經瞭解的方法(如最大似然)作為指標呢?最大似然是統計的放法,可以度量一些模糊的期望,而且不管怎樣都能從中得到隱式的結果。儘管如此,最大似然還是很難使用,因為要對基礎分佈及其可能性進行正確的估計,這可能意味著要處理數十億影像。即使只有一個好的樣本一一我們從訓練集中獲得的有效內容,也有理由想要得到超越最大似然的效果。

最大似然還存在什麼問題呢?它可是許多機器學習研究中固定使用的指標。最大似然具有許多期望性質,但正如上文所說,將其用於GAN的評估並不容易。

此外,實際中,最大似然近似容易過度泛化,因此生成的樣本由於太過多樣化而顯得不真實。使用最大似然可能會生成在現實世界中永遠不會出現的樣本,例如有多個頭的狗或者只長著幾十隻眼睛卻沒有身體的長頸鹿。因為不希望GAN的“暴力生成”給任何人帶來噩夢,所以應該使用損失函式和/或評估方法,淘汰“過於泛化”的樣本。

考慮過度泛化的另一種方法是從偽資料和真實資料的概率分佈開始,看看距離函式(一種測量真假影像分佈之間距離的方法)在概率質量為0的情況下的作用。如果這些樣本之間沒有太大的差異,那麼因這些樣本過度泛化而造成的額外損失可能很小,例如,除了幾個關鍵問題(如多個頭),這些模式都接近真實資料。根據真實資料生成的不應該有一頭牛有多個頭的樣本,但是一個過度泛化的度量標準允許建立這樣的樣本。

這就是為什麼研究人員認為需要不同的評估原則,即使我們切實在做的事一直是使可能性最大化,只是以不同的方式對其進行衡量而已。稍後講到的KL散度和JS散度也是基於最大似然的,因此這裡可以將它們視為可互換的。

我們必須評估樣本,但是又不能簡單地使用最大似然。接下來將討論用於統計評估生成樣本質量的兩個最常用且公認的度量標準: Inception Score(IS)Frechet Inception Distance(FID)。這兩個指標的優點在於,它們已被廣泛證實與至少某些期望性質(如影像的視覺吸引力或真實感)高度相關。IS完全是基於“樣本應該是可識別的”這一理念設計的,但也被證明與人類對真實影像構成的直覺有關。

2. IS

顯然,我們需要一種好的統計評估方法。讓我們從理想的評估方法所要達到的高層次要求開始。

  1. 生成的樣本要看起來像真實的可分辨的東西,如桶或奶牛。樣本不但要看起來通真,而且要是資料集中的物品。此外,分類器確信它看到的就是它識別成的物品。幸運的是,我們已經有了計算機視覺分類器,它能夠將影像分類為某個特定類別,並具有一定的可信度。IS本身就是以其中的一個分類器——以 Inception網路命名的。
  2. 生成的樣本是多種多樣的,並且理想情況下應該包含原始資料集中表示的所有類別。這一點也很重要,生成的樣本應該是訓練資料集的代表。如果生成 MNIST資料集的GAN始終不能生成數字8,則說明它不是一個好的生成模型。不應該存在類間模式崩潰( interclassmode collapse)。

雖然我們可能會對生成模型還有更多的要求,但這是一個良好的開端。

IS最初出現在2016年的一篇論文中,該論文對IS進行了全面的驗證,證實它確實與人類對高質量樣品構成的直覺有關。此後,這個指標在GAN研究界流行起來。

我們已經解釋了為什麼要使用這一指標。現在深入瞭解一下技術細節,計算IS的過程很簡單:

  1. 採用真實分佈和生成分佈之間的 Kullback- Leibler(KL)差異。
  2. 對第1步的結果求指數。

舉個例子:輔助分類器生成對抗網路( Auxiliary Classifier GAN, ACGAN)的失效模式,我們試圖從 ImageNet3資料集中生成雛菊樣本。當在以下ACGAN失效模式下執行Inception網路時,會看到下圖所示的內容。你得到的結果可能會與此有些差異,這取決於作業系統、TensorFlow版本和實施細節。

image

這裡要注意的重點是, Inception分類器不確定它在看什麼,尤其是在前3個類別中。人們會覺得它可能是一朵花,但就連我們也不確定。對預測的總體信心(指數)也很低(分數總和應為1.00)。這是一個IS較低的例子,它符合本節開始的兩個要求。因此這一探索指標的過程是成功的,因為它符合我們的直覺。

3. FID

下一個要解決的問題是樣本多樣性的缺乏。通常,GAN只能學習到每個類別中的一小部分影像。2017年,有人提出了一個新的解決方案: Frechet Inception Distance(FID)。FID通過提高對噪聲的魯棒性檢測類內( intraclass)樣本遺漏來改進IS。

這是很重要的,如果接受IS基準,那麼僅生成一種型別的影像。從技術上來說,這已經滿足了能生成此類別的要求。但是,假如想建立貓咪生成演算法,這實際上並不是我們想要的(比如,有多個品種的貓的樣本)。此外,我們還希望GAN可以從不同角度輸出代表貓的樣本,並且通常是明顯不同的影像。

我們同樣不希望GAN只是簡單地記住影像。幸運的是,這個問題容易檢測——檢視畫素空間中影像之間的距離即可,如下圖所示。(GAN主要通過記憶樣本獲取模式,這也產生了不良結果;表明GAN並未學到很多有用的資訊,很可能不會泛化。證據就在圖中:前兩排是重複的樣本;最後一排是中間那排在訓練集中最近鄰的樣本。請注意,由於GAN設定的解析度較低,顯示這些樣本的解析度非常低)FID的技術實現也很複雜,但背後的高階想法是我們正在尋找一個樣本的生成分佈,使得為了確保生成分佈與真實分佈相似而必須進行的修改最小化

image

image

FID是通過Inception網路執行影像來計算的。在實際應用中,我們比較的是中間表示(特徵圖或層)而不是最終輸出(換句話說,是嵌入它們)。更具體地說,計算嵌入均值的距離、方差和兩個分佈(真實分佈和生成分佈)的協方差。

為了從影像中抽象出來,如果我們有一個包含一些容易理解的分類器的域,就可以使用它們的預測來衡量特定樣本看起來是否真實。總而言之,FID是一種從人類評估者那裡抽象出來的方法,它可以根據分佈進行統計推理,甚至可以用於諸如影像的真實感這樣難以量化的事物。

這一指標實在是太新了,因此我們仍然有必要拭目以待,看看以後的論文會不會發現它的缺陷。但考慮到已經有很多知名的學者開始使用這個指標,本章便將其包括在內了。

二、訓練中的挑戰

訓練GAN可能很複雜,我們將在本節介紹最優方法,但僅給出高階的、易於理解的解釋。

下面列舉了一些訓練中的主要問題。

  1. 模式崩潰。在模式崩潰中,某些模式(如某些類)在生成的樣本中沒有很好地表示出來。即使真實資料分佈中有樣本分佈在這一部分,該模式也崩潰了。例如,MNIST資料集沒有生成數字8。注意,即使網路已經收斂,模式崩潰也可能發生。我們在解釋IS時已經討論了類間模式崩潰,在解釋FID時討論了類內模式崩潰。
  2. 收斂速度慢。這是GAN在GAN和無監督場景下的一個大問題。在這種情況下,收斂速度和可用的計算資源是主要的限制;而在監督學習中,可用的標記資料通常是首要障礙。有些人認為,未來的人工智慧競賽的決定因素將會是計算力,而不是資料。此外,每個人都希望不出幾天的訓練就能快速得到模型。
  3. 過度泛化。我們特別討論一下不應該得到支援(不應該存在)的模式(潛在資料樣本),例如,一頭牛有多個身體但只有一個頭,或者只有一個身體但有多個頭。當GAN過度泛化並學習到基於真實資料不應該存在的事物時,這種情況就會發生。

注意,模式崩潰和過度泛化有時可以通過重新初始化演算法來簡單地解決,但這樣的演算法是脆弱的。上面列出的問題大致提出了兩個關鍵指標:速度和質量。即便是兩個指標,它們也是相似的,許多訓練最終都專注於更快地消除真實分佈和生成分佈之間的差距。

那麼該如何解決呢?在GAN訓練方面,下列幾種技術可用於改善訓練過程。

  1. 增加網路深度。
  2. 更改網路設定。
    • 原始論文提出的最小—最大(Min-Max)設計和停止判則。
    • 原始論文提出的非飽和(Non- Saturating)設計和停止判則
    • 最近的改進——沃斯坦生成對抗網路( Wasserstein GAN)
  3. 其他一些的訓練技巧。
    • 歸一化輸入
    • 梯度懲罰。
    • 多訓練判別器。
    • 避免稀疏梯度。
    • 使用平滑和帶噪聲的標籤。

1. 增加網路深度

與許多機器學習演算法一樣,最簡單的使學習更穩定的方法是降低複雜性。如果可以從簡單的演算法開始並逐步地增加複雜性,則訓練過程可以更穩定收斂更快,並且還有潛在的其他好處。

我們可以使用簡單的生成器和判別器來快速實現穩定性,然後在訓練時增加複雜性,正如在GAN論文中所解釋的那樣。論文中提到, NVIDIA的研究者逐步擴大這兩個網路,在每個訓練週期結束時將生成器的輸出大小加倍,判別器的輸入也加倍。我們從兩個簡單的網路開始訓練,直到獲得良好的效能。

這樣可確保不是從一個比初始輸入大幾個數量級的巨大引數空間開始,而是從生成一個4畫素×4畫素的影像開始,在將輸出大小加倍之前操控這個引數空間。重複此操作,直到獲得大小為1024畫素×1024畫素的影像。

看看效果多麼令人印象深刻——下圖中的兩幅圖都是生成的。現在,我們已經超越了自編碼器生成的64畫素×64畫素的模糊影像。

image

這種方法具有以下優點:穩定、訓練速度快,最重要的是生成樣本的質量好、尺寸大。在實驗中一定要用這種方法的原因還包括這種技術幾平可以應用於任何型別的GAN。

2. 遊戲設定

思考GAN的雙方博棄本質的一種方法是,想象正在玩圍棋遊戲或其他可能在任何時候結束的棋盤遊戲,比如國際象棋(並將其分為策略網路和價值網路)。作為一名玩家,你不僅需要了解遊戲的目的和兩個玩家都想達成的目標,還需要了解你離勝利有多近。因此,要有規則並且有距離(勝利)指標,如丟失的棋子數量。

但正如並非每一個棋盤遊戲的勝利指標都適用於其他遊戲一樣,某些GAN勝利指標距離或散度一一往往用於特定的遊戲設定。我們有必要分別研究每個損失函式(勝利指標)和玩家動態(遊戲設定)。

3. 最小—最大GAN

我們可以從遊戲理論的角度思考GAN的設定,這種假設下有兩個玩家都在試圖超越對手2014年的原始論文也提到遊戲有兩個版本。原則上,更易理解且理論上更有根據的方法正是現在所描述的:僅將GAN問題視為一個最小一最大min-max)博棄。下式描述了判別器的損失函式。

\[\text{J}^D = E_{x\sim p_r}log[D(x)] + E_{z\sim p_g}log[1 - D(G(z))]\qquad\qquad\qquad(式5.1) \]

Es代表對x(真實資料分佈)或z(潛在空間)的期望,D代表判別器的函式(將影像對映到概率),G代表生成器的函式(將潛在向量對映到影像)。任何二元分類問題都應該熟悉這第一個方程。如果給一定的自由並擺脫複雜性,則可以把這個方程改寫為

\[\text{J}^D = D(x) - D(G(z)), for D(x), D(G(z))\in[0, 1]\qquad\qquad\qquad(式5.2) \]

這說明判別器正在嘗試最大程度地減少將真實樣本誤認為是偽樣本(第一部分)或將偽樣本誤認為是真實樣本(第二部分)的可能性。

現在我們將注意力轉向式5.2中生成器的損失函式。

\[\text{J}^G = -\text{J}^D \]

因為只有兩方起作用且它們彼此競爭,所以有理由認為生成器的損失對判別器來說是負損失。

將它們放在一起:有兩個損失函式,而且一個是另一個的負值。這樣對抗性就很明顯了,生成器試圖比判別器更聰明。至於判別器,請記住它是一個二元分類器,只輸出一個數字(而不是兩類),因此它會因其可信度或缺乏可信度而受到懲罰。剩下的只是一些花哨的數學運算,這些運算證明了一些很好的性質,例如JS散度的漸近一致性。

前面已經解釋了通常不用最大似然的原因。我們使用如KL散度和JS散度以及最近的推土機距離(也稱為 Wasserstein距離)來代替。所有這些散度均有助於理解真實分佈與生成分佈之間的差異。JS散度度量了兩個概率分佈的相似度,它是基於KL散度的變體,解決了KL散度非對稱的問題。一般來說,JS散度是對稱的

定義:JS散度(JSD)是KL散度的對稱版本。\(若KL(p,q)!=KL(q,p),則有JSD(p,q)=JSD(q,p)\)

KL散度和JS散度通常被視為GAN最終在試圖最小化的東西。這兩種都是距離指標,有助於理解高維空間中兩種分佈的差異。一些精巧的證明將這些散度與GAN的min-max版本聯絡起來了。

最小一最大GAN(MM-GAN)用於給出良好的理論解釋,除此之外通常不在實際中使用。它是理解GAN的一個簡潔的理論框架:既是一個博弈論的概念(源於兩個網路玩家之間的競爭本質),又是一個資訊理論的概念。除此之外,MM-GAN通常沒有任何優勢,接下來的兩種結構更為典型。

4. 非飽和GAN

在實際應用中,我們經常發現 MM-GAN會帶來很多問題,例如判別器收效緩慢。GAN的原始論文提出了一種替代方法:非飽和GAN( Non-Saturating GAN,NS-GAN)。在這一版本中,沒有讓兩個損失函式成為彼此的直接競爭對手,而是使兩個損失函式相互獨立,如式5.3所示,但在方向上與原始公式(式5.2)一致。

同樣讓我們專注於一個一般性的解釋:這兩個損失函式不再直接相互抵消。但是在式5.3中,可以看到生成器正在試圖最小化方程式5.4中判別器第二項的相反項,它試圖讓它所生成的樣本不被發現(是假的)。

\[\text{J}^G = E_{z\sim p_g}log[D(G(z))]\qquad\qquad\qquad (式5.3) \]

\[\text{J}^D = E_{x\sim p_r}log[D(x)]+E_{z\sim p_g}log[1-D(G(z))]\qquad\qquad\qquad (式5.4) \]

從直觀上看,判別器與之前完全相同——式5.1和式5.4相同,但是式5.2的等價形式已經變了。使用NS-GAN的主要原因是在 MM-GAN的情況下,梯度很容易飽和到接近0,這種情況下,反向傳播的權重更新為0或很小,從而導致收斂緩慢。下圖能更清晰地展示這點。(y軸是生成器的損失函式,而D(G(z))是判別器對生成樣本可能性的“猜測”。可以看到, Minimax(MM)保持平坦狀態的時間過長,給生成器的資訊太少——梯度消失了)

image

可以看到在0.0附近,最大似然和MM-GAN的梯度都接近於0,這是很多早期訓練發生的地方:而NS-GAN在0.0附近的梯度要高得多,所以訓練在一開始就進行得更快。

對NS變體為什麼會收斂到納什均衡,沒有很好的理論解釋。實際上,由於NS-GAN是啟發性的,因此使用這種形式不再提供過去獲得的簡潔的數學保證。由於GAN問題的複雜性,即使用NS-GAN訓練,也有可能完全不收斂,儘管經驗證明它表現得比MM-GAN更好。

但是這種可怕的犧牲帶來了效能的顯著提升。NS方法的優點不但在於初始訓練更快,而且由於生成器學習得更快,判別器也學習得更快。這正是我們所期待的,(幾乎)所有人在計算和時間上的預算都很緊,當然學習得越快越好。有人認為,在使用固定的計算力時,NS-GAN仍沒有被超越,甚至 Wasserstein GAN也不能說是一個比它更好的架構。

5. 何時停止訓練

嚴格地說,NS-GAN不再與JS散度漸近一致,且具有理論上更加難以解釋的平衡狀態。

第一點很重要,因為JS散度是一個有意義的工具,它可以解釋為什麼隱式生成分佈應該完全收斂到真實分佈,並從原則上給出了停止訓練的標準。但是在實際中,這幾乎毫無意義,因為永遠無法驗證真實分佈和生成分佈何時收斂。人們一般通過每隔幾次迭代査看生成的樣本來決定何時停止。最近,有些人開始考慮通過FID、IS或不太流行的分段 Wasserstein距離來定義停止標準。

第二點也很重要,因為不穩定顯然會導致訓練出現問題。一個更重要的問題是知道何時停止。GAN問題的兩個原始公式從來沒有給出在實際中完成訓練的明確條件。原則上總是說一旦達到納什均衡訓練就完成了,但實踐中這又很難驗證,因為高維性使得均衡難以證明。如果繪製生成器和盤別器的損失函式,它們通常會隨處亂跳。這很容易解釋,因為它們互相競爭,如果一個變得更好,另一個損失就會更大。因此,僅通過觀察兩個損失函式還不能知道何時真正完成了訓練。

NS-GAN的擁護者們聲稱,NS-GAN仍然比 Wasserstein GAN快得多。因此,NS-GAN或許可以通過更快地執行來克服這些限制。

6. WGAN

最近,GAN訓練的新發展迅速在學術界流行起來: Wasserstein GAN(WGAN)。現在幾乎所有主要學術論文和從業人員都會提到它。歸根結底,WGAN之所以重要,有以下3個原因。

  1. 它顯著改進了損失函式,使得損失函式現在可以解釋並提供了更清晰的停止標準。
  2. 根據經驗,WGAN往往可以得到更好的結果
  3. 與許多對GAN的研究不同,WGAN從損失開始就有明確的理論支援,還表明我們試圖估計的KL散度在理論上和實踐上最終都是不合理的,並在此基礎上提出了一種較好的損失函式來解決這一問題。

第一點的重要性在第5節中已經相當明顯。由於生成器和判別器之間的競爭性質,沒有個明確的停止訓練的時間點。WGAN使用推土機距離( earth movers distance)作為損失函式,該函式與生成樣本的視覺質量明顯相關。第二點和第三點的好處是顯而易見的——我們當然希望擁有更高質量的樣本和更好的理論基礎。

這是怎麼實現的?讓我們先來詳細看看判別器或者說批評家(critic)的 Wasserstein損失,如式5.5所示。

\[maxE_{x\sim P_r}[f_w(x)]-E_{z\sim p(z)}[f_w(g_\theta(z))]\qquad\qquad\qquad(式5.5) \]

該方程式與之前看到的類似(作為方程式5.1的高階簡化),但有一些重要的區別。公式中有函式\(f_w\),它充當判別器。判別器試圖估計推土機距離,並在函式的不同(有效)引數下,尋求真實分佈(第一項)與生成分佈(第二項)之間的最大差異。現在只是簡單地測量差異,判別器試圖讓生成器的處境變得最困難——通過檢視在共享空間中使用\(f_w\)的不同投影,來最大化生成器必須移動的概率量。

式5.6展示了生成器,它現在必須包括推土機距離。

\[minE_{x\sim P_r}[f_w(x)]-E_{z\sim p(z)}[f_w(g_\theta(z))]\qquad\qquad\qquad(式5.6) \]

在此公式中,我們試圖最小化真實分佈的期望與生成分佈的期望之間的距離。介紹WGAN的論文很複雜,但它的要點是\(f_w\)是滿足技術約束的函式。

注意:\(f_w\)滿足的技術約束為\(1-Lipschitz\)\(對於所有x1, x2:|f(x)_1-f(x)_2|\le|x_1 - x_2|\)​。

生成器試圖解決的問題與之前類似,在這裡更詳細地介紹一下:

  1. 從真實分佈(\(x\sim P_r\))或生成分佈\(x^*(g_\theta(z)), 其中Z\sim p(z)\)中提取x。
  2. 生成樣本是從z(潛在空間)中取樣,通過\(g_\theta\)進行變換以在同一空間中獲得樣本(\(x^*\)),然後使用\(f_w\)進行評估。
  3. 試圖最小化損失函式或距離函式,本例中是推土機距離。實際的數是用推土機距離計算出來的。

設定也很好,因為有一個更容易理解的損失(例如,沒有對數)。我們還有更多可調的訓練,因為在WGAN中必須設定一個裁剪常數( clipping constant),其作用類似於標準機器學習中的學習率。這為我們提供了一個額外的引數來調參,但是如果GAN架構對它非常敏感的話,就可能是一把雙刃劍。在不深入研究數學的情況下,WGAN有如下兩個實際意義。

  1. 有更清晰的停止標準,因為該GAN已被後來許多論文所驗證,它們顯示了判別器損失與感知質量之間的相關性。可以簡單地測量 Wasserstein距離,這有助於告知何時停止訓練。
  2. 可以訓練WGAN直至收斂。這是相關的,因為有meta-review論文表明,使用JS損失和真實分佈中生成器之間的差異來衡量訓練進度通常是沒有意義的。換言之,在國際象棋中有時需要輸掉幾個回合,暫時表現變差,以便在幾次迭代中學習並最終做得更好。

這聽起來像魔術,部分是因為WGAN使用的距離指標與迄今為止遇到的任何指標都不同。這個距離指標被稱為推土機距離或 Wasserstein距離,其背後的想法很聰明。有兩種高維分佈:真實的資料分佈(我們從未完全看到)和來自生成器的樣本分佈(假的)。試想一下,即使是32×32RGB(×3×256畫素值)影像的樣本空間會有多巨大。現在把這兩個分佈的概率質量都想象成兩組山丘。

想象一下,我們必須把代表概率質量的所有土從假分佈中移走,以使它看起來與真實分佈完全相同,或者至少與我們所看到的類似。就好比你的鄰居有一個超酷的沙堡,而你有很多沙子,並試圖做出完全一樣的沙堡。需要花費多少工夫オ能做得惟妙性肖?

使用 Wasserstein距離的近似形式,我們可以評估離生成看起來像來自真實分佈的樣本有多近。為什麼是近似?因為從來沒有看到過真實的資料分佈,所以很難計算出確切的推土機距離。

推土機距離具有比JS散度或KL散度更好的效能,並且已經在WGAN的基礎上有了重要的貢獻,同時也驗證了它的卓越效能。儘管在某些情況下,WGAN並沒有完全勝過其他所有GAN,但它至少在任何情況下都表現得一樣好。

總的來說,WGAN(或其梯度懲罰版本,WGAN-GP)得到了廣泛的使用,並已經成為GAN的研究和實際應用中的行業標準一一儘管NS-GAN不應那麼快被遺忘。如果你看到一篇新論文沒有將WGAN作為比較的基準之一併且沒有充分理由時,那就要當心了!

三、總結遊戲設定

我們已經介紹了GAN結構的3個核心版本:最小ー最大GAN、非飽和GAN和WGAN。每篇論文的開頭都會提到其中一個版本,你至少應該知道論文是使用原始的版本(更容易解釋,但在實踐中效果不佳),還是非飽和版本(失去了很多數學上的保證,但效果要好得多)還是更新的 Wasserstein版本(既具有理論基礎,又具有出色的效能)。

下表列出了NS-GAN、WGAN甚至改進的WGAN-GP的公式。為完整起見,我們將WGAN-GP也列入表中,因為這3個都是學術和行業的首選。

名稱 公式 註釋
NS-GAN \(\begin{array}{l}L_{D}^{N S}=E[\log (D(x))]+E[\log (1-D(G(z)))] \\L_{G}^{N S}=E[\log (D(G(z)))]\end{array}\) 這是原始公式之一,除非作為基礎模組或比較,通常不在實踐中使用。這是一個和上文介紹的NS-GAN等價的公式,只是沒有常數,它們實際上是等價的
WGAN \(\begin{array}{l}L_{D}^{W A N}=E[D(x)]-E[D(G(z))] \\L_{G}^{W A N}=E[D(G(z))]\end{array}\) 這是有著簡化損失的WGAN,它似乎為GAN創造了一個新的範例,上文把這個方程更詳細地解釋為式5.5
WGAN-GP \(\begin{array}{l}L_{D}^{W A N-G P}=E[D(x)]-E[D(G(z))]+\text { GPterm } \\L_{G}^{W A N-G P}=E[D(G(z))]\end{array}\) 這是具有梯度懲罰(GP)GAN的例子。WGAN-GP通常有最好的結果。在本章中還沒有詳細討論WGAN-GP:為了完整起見,我們將其包含在這裡

四、訓練技巧

1. 輸入的歸一化

根據幾乎所有機器學習資源,包括Chintala的清單,將影像歸一化在-1和1之間通常情況下是一個好主意。之所以進行歸一化操作,是因為計算更容易處理,機器學習的其餘情況也是如此。考慮到對輸入的這種限制,最好使用tanh啟用函式來限制生成器的最終輸出。

2. 批歸一化

對批歸一化化的看法變化為:最初批歸一化被認為是一種非常成功的技術;但最近研究表明,它有時會產生不好的結果,特別是在生成器中,但在判別器中,大多對提升結果有幫助。

3. 梯度懲罰

此訓練技巧基於Chintala列表中的第10點,根據直覺,如果梯度的範數過高,就會出現問題。即使在今天,BigGAN之類的網路也在這一領域進行創新。

但技術問題仍然存在,簡單的加權裁剪可能會產生其他深度學習中已知的梯度消失或爆炸問題。我們可以限制判別器輸出相對於其輸入的梯度範數。換言之,如果稍微改變輸入內容,更新後的權重也不應該會有太大變化。這在WGAN結構中尤其重要,也可以應用在其他地方。許多論文都以某種形式使用了這一技巧。

4. 對判別器進行更多的訓練

最近,對判別器進行更多的訓練是一種成功的方法。在Chintala的原始列表中,這種方法被標記為效果不確定,因此請謹慎使用。這裡主要有兩種方法:

  1. 在生成器有機會生成任何樣本之前對判別器進行預訓練。
  2. 每個訓練週期更多次地更新判別器,通常,判別器權重更新5次,生成器才更新1次。

5. 避免稀疏梯度

從直覺上講,稀疏梯度(如ReLU或 MaxPool生成的梯度)會增加訓練難度是有道理的原因如下。

  1. 直覺,尤其是平均池化,這樣說可能會令人困惑,但請這樣思考:如果使用標準的最大池化,那麼將會失去除了卷積的感受野中的最大值以外的所有值,這使得在DCGAN的情況下使用轉置卷積來恢復資訊變得更加困難。使用平均池化至少可以知道平均值是多少,但它仍然不是完美——我們仍在丟失資訊,但至少比以前少了,因為平均值比簡單的最大值更具代表性。
  2. 如果使用ReLU啟用,則會導致另一個問題——資訊損失。解決此問題的一種方法是應用此操作時考慮丟失了多少資訊,因為稍後可能需要恢復它。回想一下,ReLU(x)只是max(0,x),這意味著對於所有負值來說所有資訊都會永遠丟失。如果能確保把負數區域的資訊留到以後處理並標記這些資訊是不同的,就可以保留所有這些資訊。

幸運的是,對於這兩種問題,都有簡單的解決方案:可以使用 LeakyReLU啟用函式(例如對於x<0而言是0.1x,對於x≥0而言是x),平均池化也可以解決很多這些問題。還有其他啟用函式(例如 sigmoid、ELU和tanh),但是人們最常用的是LeakyReLU啟用函式。

注意LeakyReLU函式的值可以是任何實數,通常為0<x<1。

總的來說,我們試圖最小化資訊損失,並使資訊流盡可能地合乎邏輯,而不是要求GAN以某種奇怪的方式反向傳播錯誤,在這種情況下,它還必須學習對映。

6. 平滑和帶噪聲的標籤

研究人員使用多種方法來給標籤新增噪聲或使其平滑。lan Goodfellow推薦使用單邊標籤平滑(例如,以0和0.9作為二元標籤),但一般來說,增加噪聲或裁剪似乎是個好主意。

五、總結

  1. 能夠使訓練更快的技巧如下
    • 歸一化輸入,這是機器學習中的標準做法。
    • 使用梯度懲罰令訓練更具穩定性。
    • 預訓練鑑別器可以提供良好的生成器,這樣會為生成的樣本設定更高的標準。
    • 避免稀疏梯度,因為它們會丟失太多資訊。
    • 使用平滑和帶有噪聲的標籤,而不是典型的二分類標籤。

相關文章