最近,生成模型的快速發展引起了廣泛的關注,尤其是由Goodfellow等人發明的生成對抗網絡(GANs),其所建立的學習框架就像老頑童的“左右互搏術”,由生成器G和判別器D組成,兩者在博弈過程中扮演著不同角色。
對于給定訓練數據Dt,生成器G的目的就是創建與訓練數據Dt具有相同概率分布的樣本。判別器D屬于常見的二分類器,主要負責兩個工作。 首先,它要判別輸入究竟是來自真實的數據分布(Dt)還是生成器;此外,判別器通過反傳梯度指導生成器G創造更逼真的樣本,這也是生成器G優化其模型參數的唯一途徑。在博弈過程中,生成器G將隨機噪聲作為輸入并生成樣本圖像Gsample,要使判別器D以為這是來自真實訓練集Dt的判斷概率最大化。
訓練期間,判別器D的一半時間將訓練集Dt的圖像作為輸入,另一半時間將生成器得到的圖像Gsample作為輸入。訓練判別器D要能最大化分類正確的概率,能夠區分來自訓練集的真實圖像和來自生成器的假樣本。最后,希望博弈最終能達到平衡——納什均衡。
所以,生成器G要能使得生成的概率分布和真實數據分布盡量接近,這樣判別器D就無法區分真實或假冒的樣本。
在過去的幾年中,GANs已經被用于許多不同的應用,包括:生成合成數據,圖像素描,半監督學習,超分辨率和文本到圖像生成。然而,大部分關于GANs的工作都集中在開發穩定的訓練技術上。的確,我們都知道GANs在訓練期間是不穩定的,并且對超參數的選擇十分敏感。本文將簡要介紹目前GANs前沿技術,關于如何提高生成器G樣本質量的新方法。
卷積生成對抗網絡
深度卷積生成對抗網絡(DCGAN)為GANs能夠成功用于圖像生成邁進了一大步。它屬于ConvNets家族的一員,利用一些結構約束使得GANs的訓練更穩定。在DCGAN中,生成器G由一系列轉置卷積算子組成,對于輸入的隨機噪聲向量z,通過逐漸增加和減少特征的空間維度,對其進行變換。
使用DCNNs進行無監督表示學習的網絡結構示意圖
DCGAN引入了一系列網絡結構來幫助GAN訓練更穩定,它使用帶步幅的卷積而不是池化層。此外,它對生成器和判別器都使用BatchNorm,生成器中使用的是ReLU和Tanh激活函數,而判別器中使用Leaky ReLU激活函數。下面,我們來具體看一下:
BatchNorm是為了將層輸入的特征進行規范化,使其具備零均值和單位方差的特性。BatchNorm對于網絡訓練是至關重要的,它可以讓層數更深的模型工作正常而不會發生模式崩塌。模式崩塌是指生成器G創建的樣本具有非常低的多樣性,換句話說就是生成器G對于不同的輸入信號都返回相同的樣本。此外,BatchNorm有助于處理由于參數初始化不良引起的問題。
此外,DCGAN在判別器網絡中使用Leaky ReLU激活函數。與常規ReLU函數不同,Leaky ReLU不會把所有的負值都置零,而是除以一個比例,這樣就能傳遞一些很小的負的梯度信號,從而使判別器中更多的非零梯度進入生成器。
ReLU函數(左),Leaky ReLU(右),與ReLU不同,Leaky ReLU函數對于x軸左側的負值導數不為零。
DCGAN這樣的網絡結構目前仍被廣泛應用,但大部分的工作都集中在如何使GAN訓練更加穩定。
1.基于自注意力的生成對抗網絡
自注意力生成對抗網絡(Self-Attention for Generative Adversarial Networks,SAGAN)是這種類型的網絡之一。近來,基于注意力的方法已經被成功用于機器翻譯等問題上。 自注意力GANs具有特殊的網絡結構,使得生成器G能夠建模長程依賴關系,核心思想是使生成器G能夠生成具有全局細節信息的樣本。
如果我們看一下DCGAN模型會發現常規的GANs模型主要基于卷積,使用局部感受野(卷積核)來學習表征。 卷積具有很多非常好的屬性,比如參數共享和平移不變性。
典型的深度卷積網絡(Deep ConvNets)通過層級遞進的方式來學習表征。 用于圖像分類的常規ConvNets前幾層中只會學到邊緣和角點等簡單的特征。然而ConvNets卻能夠使用這些簡單的表征來學習到更為復雜的表征。 簡而言之,ConvNets的表征學習是基于簡單的特征表示,很難學習到長程依賴關系。
實際上,它可能只適用于低分辨率特征向量。問題在于,在這種粒度下,信號的損失量難以對長程細節進行建模。下面我們看一些樣本圖像:
使用DCNNs進行無監督表示學習的生成樣本示意圖
這些圖像是使用DCGAN模型基于ImageNet數據集訓練而生成得到的。正如自注意力GANs文章中所指出的,對于含有較少結構約束的類別,比如海洋、天空等,得到結果較好;而對于含有較多幾何或結構約束的類別則容易失敗,比如合成圖像中狗(四足動物)的毛看起來很真實但手腳很難辨認。這是因為復雜的幾何輪廓需要長程細節,卷積本身不具備這種能力,這也是注意力能發揮很好作用的地方。
所以解決這一問題的核心想法在于不局限于卷積核,要為生成器提供來自更廣泛的特征空間中的信息,這樣生成器G就可以生成具有可靠細節的樣本。
實現
給定卷積層L一個特征輸入,首先用三種不同的表示來對L進行變換。這里使用了1x1卷積對L進行卷積以獲得三個特征空間:f,g和h。這一方法使用矩陣乘法來線性組合f和g計算得到注意力,并將其送入softmax層。
自注意力GANS網絡示意圖
最后得到的張量o是與h的線性組合,由尺度因子gamma控制縮放。 要注意,gamma從0開始,因此在訓練剛開始時,gamma為零相當于把注意力層去掉了,此時網絡僅依賴于常規卷積層的局部表示。然而,隨著gamma接收梯度下降的更新,網絡逐漸允許來自非局部域的信號通過。此外要注意的是特征向量f和g具有與h不同的維度。事實上f和g使用的卷積濾波器大小要比h小8倍。
2.譜范數(L2范數)歸一化
此前,Miyato等人提出了一種稱為譜范數歸一化(spectral normalization ,簡稱SN)的方法。 簡而言之,SN可約束卷積濾波器的Lipschitz常數,作者使用它來穩定判別器D網絡訓練。實踐證明的確很有效。
然而,在訓練歸一化判別器D的時候存在一個基本問題。先前的工作表明,正則化判別器D會使得GAN的訓練變慢。一些已有變通方法往往通過調整生成器G和判別器D之間的更新速率,使得在更新生成器G之前多更新判別器D幾次。這樣在更新生成器G之前,正則化判別器D可能需要五次或更多次更新。
有一種簡單而有效的方法可以解決學習緩慢和更新率不平衡的問題。我們知道在GAN框架中,生成器G和判別器D是一起訓練的。 基于這點,Heusel等人在GAN訓練中引入了兩個時間尺度的更新規則(two-timescale update rule,簡稱TTUR),對生成器G和判別器D使用不同的學習率。在這里,設置判別器D訓練的學習率是生成器G 的四倍,分別為0.004和0.001。 較大的學習率意味著判別器D將吸收梯度信號的較大部分。較高的學習速度可以減輕正則化判別器D學習速度慢的問題。此外,這種方法也可以使得生成器G和判別器D能以相同的速率更新。事實上,我們在生成器G和判別器D之間使用的是1:1的更新間隔。
此外,文章還表明,生成器狀態的好壞與GAN性能有著因果關系。鑒于此,自注意力GAN使用SN來穩定生成器網絡的訓練必然有助于提高GAN網絡的整體性能。對于生成器G而言,譜范數歸一化既可防止參數變得非常大,也可以避免多余的梯度。
實現
值得注意的是,Miyato等人引入的SN算法是迭代近似。 它定義了對于每個層W,用W的最大奇異值來對每個卷積層W正則化。但是,在每一步都用奇異值分解那就計算量太大了。所以Miyato等人使用一種被稱作power iteration的方法來獲得近似的最大奇異值的解。
要注意的是在訓練期間,在power iteration中計算得到的?值會在下一次迭代中被用作u的初始值。這種策略允許算法僅經過一輪power iteration就獲得非常好的估計。此外,為了歸一化核權重,將它們除以當前的SN估計。
訓練細節
在實驗中生成器G輸入隨機向量z并生成128x128大小的RGB圖像。所有層(包括全連接層)都使用了SN。生成器G使用Batchnorm和ReLU激活函數,在中層到高層的特征圖中使用了自注意力模型。與原作者實現方法一樣,我們將注意力層放置在32x32大小的特征圖上。
判別器D還使用譜范數歸一化(所有層)。它將大小為128x128的RGB圖像樣本作為輸入,并輸出無標度的概率。它使用leaky ReLU激活函數,alpha參數設置為0.02。與生成器G一樣,它在32x32大小的特征圖上上也有一個自注意力層。
最終的結果如下圖所示:
通過自注意力和譜歸一化的方式可以實現更好的生成效果,如果你想了解更多,下面的兩篇論文是不錯的選擇:
SAGAN: https://arxiv.org/abs/1805.08318
Spectral Normalization: https://arxiv.org/pdf/1802.05957.pdf https://openreview.net/pdf?id=B1QRgziT-
-
濾波器
+關注
關注
161文章
7924瀏覽量
179584 -
GaN
+關注
關注
19文章
2076瀏覽量
75049 -
生成器
+關注
關注
7文章
321瀏覽量
21314
原文標題:GAN提高生成器G樣本質量新玩法:自注意力和譜范數
文章出處:【微信號:thejiangmen,微信公眾號:將門創投】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦

python生成器
基于生成器的圖像分類對抗樣本生成模型

python生成器是什么
TSMaster報文發送的信號生成器操作說明

評論