梁俊杰,韋艦晶+,蔣正鋒
1.湖北大學(xué) 計算機與信息工程學(xué)院,武漢430062
2.廣西民族師范學(xué)院 數(shù)學(xué)與計算機科學(xué)學(xué)院,廣西 崇左532200
近年來,隨著計算能力的提高,數(shù)據(jù)量的積累以及對動物神經(jīng)網(wǎng)絡(luò)的研究及成果[1],使得人工智能領(lǐng)域發(fā)展迅速,尤其在機器學(xué)習(xí)方面最為突出。依據(jù)數(shù)據(jù)集是否有標記,機器學(xué)習(xí)任務(wù)被分為有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)。目前機器學(xué)習(xí)方法,特別是深度學(xué)習(xí)方法在有監(jiān)督學(xué)習(xí)任務(wù)中取得令人振奮的成績,如圖像識別[2-3]、語音合成[4-5]、機器翻譯[6-7]等。
有監(jiān)督學(xué)習(xí)依賴帶標記的數(shù)據(jù),然而大量帶標記數(shù)據(jù)的獲取代價昂貴,在數(shù)據(jù)生成、策略學(xué)習(xí)等學(xué)習(xí)任務(wù)中,這些標記數(shù)據(jù)的獲取甚至不可行。無監(jiān)督學(xué)習(xí)更符合智能的思想,研究者們普遍認為,無監(jiān)督學(xué)習(xí)將會是人工智能未來重要的發(fā)展方向之一。
生成模型是無監(jiān)督學(xué)習(xí)任務(wù)中的關(guān)鍵技術(shù),早期的生成模型有深度信念網(wǎng)絡(luò)(deep belief network,DBN)[8]、深度玻爾茲曼機(deep Boltzmann machines,DBM)[9]等網(wǎng)絡(luò)結(jié)構(gòu),它們將受限玻爾茲曼機(restricted Boltzmann machine,RBM)[10]、自編碼器(autoencoder,AE)[11]等生成模型融合其中,形成了效果不錯的生成式模型,但泛化能力卻不強。
生成對抗網(wǎng)絡(luò)(generative adversarial networks,GAN)是Goodfellow 等人[12]在2014 年提出的一種新的生成式模型。GAN 獨特的對抗性思想使得它在眾多生成器模型中脫穎而出,被廣泛應(yīng)用于計算機視覺(CV)、機器學(xué)習(xí)(ML)、語音處理(AS)等領(lǐng)域。在arXiv 上以generative adversarial networks、generative adversarial nets 和adversarial learning 為關(guān)鍵詞的論文發(fā)文量總體呈逐年上升趨勢(如圖1),并且GAN被應(yīng)用的學(xué)科領(lǐng)域很廣,如圖2 顯示的是arXiv 上GAN 論文所屬學(xué)科領(lǐng)域。這些數(shù)據(jù)說明了對GAN這一模型研究的火熱程度,也說明了該方法在人工智能等領(lǐng)域的重要性。
Fig.1 Trend of the number of GAN papers published on arXiv圖1 arXiv 上GAN 論文數(shù)量的變化趨勢
Fig.2 Top 10 subject categories of GAN papers published on arXiv圖2 arXiv 上GAN 論文所屬的TOP 10 學(xué)科領(lǐng)域
GAN 的網(wǎng)絡(luò)結(jié)構(gòu)由生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)組成,模型結(jié)構(gòu)如圖3 所示。生成器G接收隨機變量z,生成假樣本數(shù)據(jù)G(z)。生成器的目的是盡量使得生成的樣本和真實樣本一樣。判別器D的輸入由兩部分組成,分別是真實數(shù)據(jù)x和生成器生成的數(shù)據(jù)G(x),其輸出通常是一個概率值,表示D認定輸入是真實分布的概率,若輸入來自真實數(shù)據(jù),則輸出1,否則輸出0。同時判別器的輸出會反饋給G,用于指導(dǎo)G的訓(xùn)練。理想情況下D無法判別輸入數(shù)據(jù)是來自真實數(shù)據(jù)x還是生成數(shù)據(jù)G(z),即D每次的輸出概率值都為1/2(相當于隨機猜),此時模型達到最優(yōu)。在實際應(yīng)用中,生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)通常用深層神經(jīng)網(wǎng)絡(luò)來實現(xiàn)。
Fig.3 GAN network model structure diagram圖3 GAN 網(wǎng)絡(luò)模型結(jié)構(gòu)示意圖
GAN 的思想來自于博弈論中的二人零和博弈[13],生成器和判別器可以看成是博弈中的兩個玩家。在模型訓(xùn)練的過程中生成器和判別器會各自更新自身的參數(shù)使得損失最小,通過不斷迭代優(yōu)化,最終達到一個納什均衡狀態(tài),此時模型達到最優(yōu)。GAN 的目標函數(shù)定義為:
生成器本質(zhì)上是一個可微分函數(shù),生成器接收隨機變量z的輸入,經(jīng)G生成假樣本G(z)。在GAN中,生成器對輸入變量z基本沒有限制,z通常是一個100 維的隨機編碼向量,z可以是隨機噪聲或者符合某種分布的變量。生成器理論上可以逐漸學(xué)習(xí)任何概率分布,經(jīng)訓(xùn)練后的生成網(wǎng)絡(luò)可以生成逼真圖像,但又不是和真實圖像完全一樣,即生成網(wǎng)絡(luò)實際上是學(xué)習(xí)了訓(xùn)練數(shù)據(jù)的一個近似分布,這在數(shù)據(jù)增強應(yīng)用方面尤為重要。
判別器同生成器一樣,其本質(zhì)上也是可微分函數(shù),在GAN 中,判別器的主要目的是判斷輸入是否為真實樣本,并提供反饋以指導(dǎo)生成器訓(xùn)練。判別器和生成器組成零和游戲的兩個玩家,為取得游戲的勝利,判別器和生成器通過訓(xùn)練不斷提高自己的判別能力和生成能力,游戲最終會達到一個納什均衡狀態(tài),此時生成器學(xué)習(xí)到了與真實樣本近似的概率分布,判別器已經(jīng)不能正確判斷輸入的數(shù)據(jù)是來自真實樣本還是來自生成器生成的假樣本G(x),即判別器每次輸出的概率值都是1/2。
原始的GAN 并不成熟,存在著諸多問題,其中梯度消失和模式崩潰(collapse mode)問題嚴重限制GAN 的發(fā)展。只有了解問題發(fā)生的本質(zhì),才能做出相應(yīng)的改進,本章主要對GAN 在訓(xùn)練中存在梯度消失和模式崩潰的原因進行分析。
梯度消失即是利用誤差反向傳播(back propagation,BP)算法[14]對深度神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練時,梯度后向傳播到淺層網(wǎng)絡(luò)時基本不能引起數(shù)值的擾動,最終導(dǎo)致神經(jīng)網(wǎng)絡(luò)收斂很慢甚至不能收斂。GAN 存在梯度消失的問題,并且在判別器訓(xùn)練得越好的時候,生成器梯度消失得越嚴重[15]。最優(yōu)判別器如式(2):
在最極端的情況下,當判別器達到最優(yōu)時,此時生成器模型如式(3):
原始GAN 模型使用KL 散度(Kullback-Leibler divergence)[16]和JS 散度(Jensen-Shannon)17]衡量兩個分布之間的差異,即是:
訓(xùn)練GAN 網(wǎng)絡(luò)需要極小化C(G),即是要求min(JS(pdata||pg)),JS 散度的值越小表示兩個分布之間越接近,這符合生成器的優(yōu)化目標,即是要生成以假亂真的樣本(兩個樣本之間的概率分布很接近)。當兩個分布有重疊的時候,優(yōu)化JS 散度是可行的,而在兩個分布完全沒有重疊部分,或者重疊的部分可以忽略時,JS 散度是一個常數(shù),此時梯度為0,即生成器在訓(xùn)練的過程中得不到任何的梯度信息,出現(xiàn)梯度消失的現(xiàn)象。下面從兩個分布是否有重疊部分分析梯度消失的原因。
對于兩個分布pdata(x)和pg(x),不難得出如下四種情況,如圖4 所示。
情況1pdata(x)=0 且pg(x)=0
情況2pdata(x)≠0 且pg(x)≠0
情況3pdata(x)=0 且pg(x)≠0
情況4pdata(x)≠0 且pg(x)=0
Fig.4 Sample probability distribution圖4 樣本分布圖
(1)兩個分布沒有重疊部分。對于情況1,由于pdata和pg的取值都在函數(shù)的支撐集(support)之外,因此情況1 對JS 散度無貢獻。情況2 由于兩個分布的支撐集沒有交集,因此對最后的JS 散度也無貢獻。對于情況3,將pdata(x)=0 且pg(x)≠0 帶入式(4),得到式(5)。
(2)兩個分布有重疊部分。文獻[18]指出,兩個分布在高維空間是很難相交的,即使相交,其相交部分其實是高維空間中的一個低維流形,其測度為0,這說明兩個分布相交部分可以忽略不計,此時JS 散度的值和(1)討論的一致,換言之,pdata和pg兩個分布只要它們沒有重疊部分或者重疊部分可以忽略,那么JS 散度就固定是常數(shù)lb 2,這對于梯度下降法而言意味著梯度為0。文獻[19]證明了若存在一個判別器D無限接近于最優(yōu)解時,即||D-D?||<ε,有如下關(guān)系:
GAN 模式崩潰(mode collapse)是指GAN 生成不了多樣性的樣本,而是生成了與真實樣本相同的樣本,該缺陷在數(shù)據(jù)增強領(lǐng)域中是致命的。為解決GAN 梯度消失問題,Goodfellow 等人重新定義了損失函數(shù),如式(8)。
要優(yōu)化該目標函數(shù),則要求同時滿足式(10)、式(11)。
式(10)要求pg和pdata的概率分布一樣,而式(11)則要求pg和pdata的概率分布不一樣,這樣會產(chǎn)生矛盾,使得生成器無法穩(wěn)定訓(xùn)練。放寬約束,只要求滿足式(10)同樣不可行。如下:
(1)當pg(x)→0 且pdata(x)→1 時,0,此時的KL(pg||pdata)趨近于0。該情況說明了生成器生成了與真實樣本相似的樣本。
(2)當pg(x)→1 且pdata(x)→0 時,∞,此時的KL(pg||pdata)趨近于正無窮。該情況說明生成器生成了不真實的樣本。
情況(1)生成的樣本缺乏多樣性,懲罰較小,生成器寧可生成一些重復(fù)但很安全的樣本,也不愿意生成多樣性的樣本,該現(xiàn)象就是模式崩潰。情況(2)是生成器生成了不真實的樣本,樣本缺乏準確性,懲罰較大。
研究者們針對GAN 存在訓(xùn)練困難等問題,通過不斷探索,最終提出了很多基于GAN 的變體。本章主要對一些典型的GAN 變體進行討論。
原始GAN 對于生成器幾乎沒有任何約束,使得生成過程過于自由,這在較大圖片的情形中模型變得難以控制。CGAN(conditional GAN)[20]在原始GAN 的基礎(chǔ)上增加了約束條件,控制了GAN 過于自由的問題,使網(wǎng)絡(luò)朝著既定的方向生成樣本。CGAN的網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示,CGAN 生成器和判別器的輸入多了一個約束項y,約束項y可以是一個圖像的類別標簽,也可以是圖像的部分屬性數(shù)據(jù)。CGAN 的目標函數(shù)變成如下式(12)。
Fig.5 CGAN model architecture diagram圖5 CGAN 模型架構(gòu)圖
CGAN 的缺點在于其模型訓(xùn)練不穩(wěn)定,從損失函數(shù)可以看到,CGAN 只是為了生成指定的圖像而增加了額外約束,并沒有解決訓(xùn)練不穩(wěn)定的問題。
LAPGAN[21]基于CGAN 進行改進,它能夠生成高品質(zhì)的圖片,如圖6 是LAPGAN 模型的學(xué)習(xí)過程。LAPGAN 的創(chuàng)新點是將圖像處理領(lǐng)域中的高斯金字塔[22]和拉普拉斯金字塔[23]的概念引入GAN 中,高斯金字塔用于對圖像進行下采樣,拉普拉斯金字塔用于上采樣以此重建圖像。高斯金字塔被定義為,其中I0=I是原始圖像,Ik+1是Ik下采樣的圖像,K是尺度變換的層數(shù),拉普拉斯金字塔由式(13)表示。
Fig.6 Learning process of LAPGAN model圖6 LAPGAN 模型學(xué)習(xí)過程
其中,u(?)表示上采樣,該式表達了原始圖像與經(jīng)過變換之后圖像的殘差,即是hk=Ik-u(d(Ik)),其中d(?)表示下采樣。LAPGAN 實際是學(xué)習(xí)樣本和生成樣本之間的殘差,如式(14)。
DCGAN(deep convolutional GAN)[24]的提出對GAN 的發(fā)展有著極大的推動作用,它將卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)和GAN 結(jié)合起來,使得生成的圖片質(zhì)量和多樣性得到了保證。其網(wǎng)絡(luò)模型結(jié)構(gòu)如圖7 所示。DCGAN 使用了一系列的訓(xùn)練技巧,如使用批量歸一化(batch normalization,BN)穩(wěn)定訓(xùn)練,使用ReLU 激活函數(shù)降低梯度消失風(fēng)險,同時取消了池化層,使用步幅卷積和微步幅卷積有效地保留了特征信息。DCGAN 雖然能生成多樣性豐富的樣本,但是生成的圖像質(zhì)量并不高,而且也沒有解決訓(xùn)練不穩(wěn)定的問題,在訓(xùn)練的時候仍需要小心地平衡G和D的訓(xùn)練進程。
傳統(tǒng)的不同兩個域中的圖片要實現(xiàn)相互轉(zhuǎn)化,一般需要兩個域中具有相同內(nèi)容的成對圖片作為訓(xùn)練數(shù)據(jù)。比如pix2pix[25],但是這種成對的訓(xùn)練數(shù)據(jù)往往很難獲得。CylcleGAN[26]可以讓兩個域的圖片互相轉(zhuǎn)化并且不需要成對的圖片作為訓(xùn)練數(shù)據(jù)。CylcleGAN 是一個互相生成的網(wǎng)絡(luò),其網(wǎng)絡(luò)是個環(huán)形結(jié)構(gòu),如圖8 所示。
Fig.7 DCGAN model architecture diagram圖7 DCGAN 生成模型架構(gòu)圖
Fig.8 CylcleGAN structure diagram圖8 CylcleGAN 結(jié)構(gòu)圖
x表示X域的圖像,y表示Y域的圖像,G和F是兩個轉(zhuǎn)換器,DX和DY是兩個判別器。如圖8(a),X域的圖像x經(jīng)轉(zhuǎn)換器G轉(zhuǎn)換成Y域的圖片G(x),并由判別器DY判別它是否是真實圖片。同理,Y域的圖像y經(jīng)轉(zhuǎn)換器F轉(zhuǎn)換成X域的圖片F(xiàn)(y),再由判別器DX判別它是否是真實圖片。為了避免轉(zhuǎn)換器將域內(nèi)的所有圖片都轉(zhuǎn)換成另一個域內(nèi)的同一張圖片,CylcleGAN使用循環(huán)一致性損失(cycle consistency loss)做約束。最終的損失函數(shù)由三部分組成,如式(15)。
CylcleGAN 的缺點是其循環(huán)機制能保證成像不會偏離太遠,但是循環(huán)轉(zhuǎn)換中會造成一定的信息丟失,使得生成圖像質(zhì)量不高。
根據(jù)文字描述人工生成對應(yīng)高質(zhì)量圖片一直是計算機視覺領(lǐng)域的一個挑戰(zhàn),StackGAN[27]是第一個根據(jù)文字描述生成圖像分辨率達到256×256 的網(wǎng)絡(luò)模型。其網(wǎng)絡(luò)模型結(jié)構(gòu)圖如圖9 所示。
Fig.9 StackGAN network model structure圖9 StackGAN 網(wǎng)絡(luò)模型結(jié)構(gòu)圖
StackGAN 的訓(xùn)練分為兩個階段,它們分別被定義為Stage-Ⅰ和Stage-Ⅱ。Stage-Ⅰ階段是根據(jù)給定的文字描述,學(xué)習(xí)到初始的形狀和色彩,生成低分辨率(64×64)的圖片;Stage-Ⅱ階段根據(jù)Stage-Ⅰ生成的低分辨率圖像以及原始文字描述,生成具有更多細節(jié)的高分辨率(256×256)圖片。在Stage-Ⅰ階段中,詞嵌入向量φt經(jīng)過全連接層生成高斯分布N(μ0(φt),σ0(φt))中的μ0和σ0,最后與z噪聲向量拼接作為G0的輸入,通過一組上采樣生成64×64 的圖像。Stage-Ⅱ階段以高斯隱含變量以及Stage-I 生成器的輸出作為輸入,來訓(xùn)練生成器和判別器。但是這種分段式模式可能會出現(xiàn)每個任務(wù)找不到重點,最終導(dǎo)致生成失敗。
StackGAN 及其改進版StackGAN++[28]都是用于文本生成圖像的網(wǎng)絡(luò),目前在該領(lǐng)域比較新的突破性工作是由斯坦福大學(xué)李飛飛教授小組發(fā)表的文獻[29],該研究引入了場景圖的概念,相比于StackGAN 和StackGAN++方法,它能夠處理更加復(fù)雜的文本,并且取得了不錯的效果。
GAN 強大的學(xué)習(xí)能力最終可以學(xué)習(xí)到真實樣本的分布,但對輸入噪聲信號z和數(shù)據(jù)的語義特征之間的對應(yīng)關(guān)系不清楚。一個理想的情況是清楚它們之間的對應(yīng)關(guān)系,這樣就能通過控制對應(yīng)的維度變量來達到相應(yīng)的變化。比如對于MNIST 手寫數(shù)字識別項目,在知道其對應(yīng)關(guān)系的情況下,可以控制輸出圖像的光照、筆畫粗細、字體傾斜度等。InfoGAN[30]解決了這個問題,它將輸入噪聲z分成兩部分,一部分是噪聲信號z,另一部分是可解釋的有隱含意義的信號c。InfoGAN 模型結(jié)構(gòu)圖如圖10 所示。
Fig.10 InfoGAN model structure圖10 InfoGAN 模型結(jié)構(gòu)
生成器的輸入多了一個隱含變量C(c1,c2,…,cL),它代表的是如上面提到的圖像的光照、筆畫粗細、字體傾斜度等圖像的語義特征信息。InfoGAN 對目標函數(shù)進行了約束,即c和G(z,c) 之間的互信息I(c;G(z,c)),如式(16)。
實驗證明了InfoGAN 確實學(xué)到了一些可解釋的語義特征,通過控制這些特征可以生成想要的數(shù)據(jù)。如圖11,通過控制角度、寬度,生成形狀不一樣的數(shù)據(jù)。
Fig.11 Feature learning of angle or width of image圖11 圖像的角度或?qū)挾鹊奶卣鲗W(xué)習(xí)
原始GAN 訓(xùn)練出現(xiàn)梯度消失和模式崩潰的主要原因是使用JS 距離來衡量兩個分布,WGAN(Wasserstein GAN)[31]使用Wasserstein 距離(又稱EM(Earth-mover)距離)代替JS 距離對真實樣本和生成樣本之間的距離進行度量。
Wasserstein 距離在兩個分布沒有重疊或者重疊部分可以忽略的情況下仍然能夠很好地度量它們之間的距離,同時Wasserstein 距離是平滑的,這在理論上能解決梯度消失/爆炸的問題。但在實驗過程中發(fā)現(xiàn),WGAN 往往存在梯度消失/爆炸的情況,其主要原因是為了滿足Lipschitz 限制條件,直接用weight clipping 方式將參數(shù)clip 到[-c,c]范圍內(nèi),在最優(yōu)策略下,參數(shù)往往會走極端,即參數(shù)要么取最大值(如0.01),要么取最小值(如-0.01),這意味著擬合能力差,同時參數(shù)c很難確定,稍有不慎就會引起梯度消失/爆炸,如圖12 所示。
Fig.12 WGAN gradient disappearance/explosion analysis圖12 WGAN 梯度消失/爆炸分析
WGAN-GP[32]是針對WGAN 為滿足Lipschitz 連續(xù)性條件強行將權(quán)重剪切到一定范圍,如[-0.01,0.01]之后造成網(wǎng)絡(luò)擬合能力差、容易發(fā)生梯度消失/爆炸等問題而進行改進的一種GAN 模型。作者拋棄了WGAN 中的weight clipping,使用一種稱作梯度懲罰(gradient penalty)的方式來滿足Lipschitz 連續(xù)性條件。具體而言,它增加了一個額外的loss 函數(shù)來實現(xiàn)判別器梯度與K之間的聯(lián)系(Lipschitz 限制是要求判別器梯度不超過K),如下:
這里K=1。
WGAN-GP 解決了梯度消失/爆炸的問題,同時能生成更高質(zhì)量的樣本。但在實驗中發(fā)現(xiàn)該方法收斂速度慢,在同一數(shù)據(jù)集下,WGAN-GP 需要訓(xùn)練更多次數(shù)才能收斂。
EBGAN(energy-based GAN)[33]從能量的角度詮釋GAN,它將判別器D視為一個能量函數(shù),該能量函數(shù)將靠近真實樣本域附近視為低能量區(qū)域,遠離真實樣本區(qū)域則視作高能量區(qū)域。因此EBGAN 在訓(xùn)練中,生成器會盡可能生成能量最小的樣本,而判別器則會對這些生成的樣本賦予高能量,其模型結(jié)構(gòu)如圖13 所示。
Fig.13 EBGAN model structure圖13 EBGAN 模型結(jié)構(gòu)
EBGAN 將判別器設(shè)計成能量函數(shù),這種改進的優(yōu)點是可以用更多、更廣泛的損失函數(shù)來訓(xùn)練GAN結(jié)構(gòu),但EBGAN 同樣存在缺點,在實驗中發(fā)現(xiàn)其收斂速度很慢,其他模型都已經(jīng)能夠生成大致表達圖像的輪廓,它生成的圖像依然雜亂無章。
傳統(tǒng)的GAN 是優(yōu)化生成數(shù)據(jù)分布與真實數(shù)據(jù)分布之間的距離,認為兩者的分布越相似,G的生成能力越好,很多GAN 的改進也是基于該思路。BEGAN(boundary equilibrium GAN)[34]并沒有直接去估計生成分布pg和真實分布px的距離,而是估計兩者分布誤差的距離。作者認為,分布之間的誤差分布相近的話,也可以認為pg和px是相近的。BEGAN 將判別器G設(shè)計成自編碼器用來重構(gòu)分布誤差,并優(yōu)化分布誤差之間的距離,如下式:
BEGAN 提出一種均衡概念,用以平衡G和D的訓(xùn)練,使GAN 即使使用很簡單的網(wǎng)絡(luò),不加如BN、minibath 等訓(xùn)練技巧也能得到很好的訓(xùn)練效果。同時還提出了一種能夠在樣本多樣性和樣本質(zhì)量上均衡的超參數(shù)以及衡量模型收斂性的方法。實驗中發(fā)現(xiàn)BEGAN 收斂很快,并且G和D訓(xùn)練平衡,但超參數(shù)的選取比較考量經(jīng)驗。
LSGAN(least squares GAN)[35],又叫最小二乘生成對抗網(wǎng)絡(luò),具體工作是將傳統(tǒng)GAN 的交叉熵損失函數(shù)換成最小二乘損失函數(shù),該做法有效改善了傳統(tǒng)GAN 生成圖片質(zhì)量不高,訓(xùn)練不穩(wěn)定的問題。最小二乘損失與交叉熵損失相比,優(yōu)勢在于生成樣本在欺騙判別器的前提下同時讓生成器把距離決策邊界比較遠的生成圖片拉向決策邊界,這樣保證了生成高質(zhì)量的樣本。作者認為以交叉熵作為損失,會使得生成器不會再優(yōu)化那些被判別器識別為真實圖片的生成圖片,即使這些生成圖片距離判別器的決策邊界仍然很遠,也就是距離真實數(shù)據(jù)比較遠,因為此時的交叉熵損失已經(jīng)很小,生成器完成了為它設(shè)計的目標。LSGAN 的缺陷在于它并沒有解決當判別器足夠優(yōu)秀時生成器發(fā)生梯度彌散的問題,因為按照WGAN 的理論(式(17)),最小二乘函數(shù)并不滿足Lipschitz連續(xù)性條件,它的導(dǎo)數(shù)沒有上界。
BigGAN[36]是目前為止生成圖像質(zhì)量最好的GAN 模型,它在ImageNet(128×128 分辨率)訓(xùn)練下,IS(inception score)高達166.3,比之前最好的52.52(SAGAN(self-attention generative adversarial networks)[37])提升2 倍多,同時FID(frechet inception distance)下降至9.6。BigGAN 通過將模型擴大得到性能的提升,它在訓(xùn)練中使用了很大的Batch(2 048),并且在卷積層的設(shè)計上使用了更大的通道數(shù)(channel)。同時文章還使用截斷技巧(truncation trick),使模型性能得到提升,并且訓(xùn)練變得更加平穩(wěn)。為了在樣本多樣性和保真度上進行平衡,將正交正則化應(yīng)用到生成器上,同時對判別器的梯度做適當懲罰。BigGAN的缺點也很明顯,BigGAN模型很大,參數(shù)多,訓(xùn)練成本高。
表1 是典型GAN 模型的對比。
Table 1 Comparisons of typical GAN models表1 典型GAN 模型對比
針對表1 的總結(jié),在MNIST 數(shù)據(jù)集上進行實驗以驗證其準確性。圖14 是各個GAN 訓(xùn)練過程中生成器和判別器損失函數(shù)變化(實驗代碼參考網(wǎng)絡(luò)https://github.com/znxlwm/pytorch-generative-modelcollections),可以看出:原始GAN 訓(xùn)練不平衡,而CGAN 僅在損失函數(shù)上加上一個約束項,沒有針對GAN 訓(xùn)練不穩(wěn)定的根本原因進行改進,即沒有真正解決模型訓(xùn)練不穩(wěn)定問題;BEGAN 是在Wasserstein距離上得到啟發(fā),本質(zhì)上還是滿足Lipschitz 連續(xù)性條件,因此其訓(xùn)練平衡、穩(wěn)定且收斂速度極快;EBGAN從能量角度對GAN 進行改進,有效解決了訓(xùn)練不平衡問題,但是收斂速度慢,迭代40 000 次后生成器依然沒有收斂;LSGAN 使用最小二乘損失函數(shù)代替原始的交叉熵損失函數(shù),但其不滿足Lipschitz 連續(xù)性條件,可以看到訓(xùn)練中存在梯度消失/爆炸的情況;WGAN對截斷參數(shù)c選擇不合理會造成訓(xùn)練不穩(wěn)定的情況,這對經(jīng)驗有較高的要求;WGAN-GP 使用梯度懲罰(gradient penalty)技巧滿足了Lipschitz 連續(xù)性條件,解決了WGAN 訓(xùn)練不平衡的問題,但是收斂速度慢;InfoGAN 增強了對GAN 的解釋性,使得訓(xùn)練平衡,同時收斂速度快。DCGAN 能生成多樣性豐富的樣本,但分辨率較低,并且DCGAN 只是在網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練技巧上進行了改進,并沒有真正解決模型訓(xùn)練不穩(wěn)定的問題;LAPGAN 的生成器在每一階段都能學(xué)習(xí)到不同的分布,并作為下一層的補充信息,這有助于生成高分辨率的圖像;BigGAN 是一個規(guī)模很大的GAN,使用截斷、正交正則化等技巧訓(xùn)練生成高分辨率的圖像,同時缺陷也很明顯,其參數(shù)量龐大,需要在TPU(tensor processing unit)或多個GPU(graphics processing unit)下訓(xùn)練,成本高;CycleGAN 使用循環(huán)機制有效充分運用了兩個域的信息,同時其對訓(xùn)練數(shù)據(jù)要求不高,只需提供不同風(fēng)格數(shù)據(jù)圖像就可以實現(xiàn)風(fēng)格轉(zhuǎn)換,實現(xiàn)成本低,但循環(huán)轉(zhuǎn)換會造成一定的信息丟失,使得生成樣本質(zhì)量較低;StackGAN 應(yīng)用在文本到圖像生成的領(lǐng)域,它能生成高分辨率的圖像,但是其分段式模式也往往造成各個分任務(wù)找不到重點,導(dǎo)致生成失敗。
Fig.14 Change process of loss when GAN model is trained on MNIST dataset圖14 GAN 模型在MNIST 數(shù)據(jù)集上訓(xùn)練時loss的變化過程
變分自編碼器(variational autoencoder,VAE)和受限玻爾茲曼機(RBM)是除GAN 之外的兩個優(yōu)秀的生成式模型,在MNSIT 數(shù)據(jù)集上對比了GAN 與VAE、RBM 的性能,最后總結(jié)GAN 對比于這兩大生成式模型存在的優(yōu)勢與劣勢。
從圖15 可以看到VAE 和RBM 生成的圖像相對于GAN 而言較模糊,這說明了GAN 能生成更加清晰的圖像。圖16 中圖(a)、(b)分別為GAN 生成器和判別器的損失,圖(c)、(d)分別為KL 散度變化以及VAE 損失變化的過程,可以看到GAN 是比較難訓(xùn)練的??傮w而言,GAN 的優(yōu)勢在于:
(1)從實際結(jié)果看,GAN能產(chǎn)生更好的生成樣本。
(2)GAN 框架可以訓(xùn)練任何生成網(wǎng)絡(luò),在模型設(shè)計上不需要遵循任何種類的因子分解,所有的生成器和鑒別器都可以正常工作。
(3)相比RBM,GAN 沒有變分下界,也沒有棘手的配分函數(shù),樣本是一次生成的,并沒有重復(fù)地應(yīng)用Markov Chain 來生成。
Fig.15 3 generation models generate results on MNIST圖15 3 種生成模型在MNIST 上生成結(jié)果
Fig.16 GAN and VAE training parameters change process圖16 GAN 和VAE 訓(xùn)練參數(shù)變化過程
(4)相比于VAE,GAN 沒有引入任何決定性偏置(deterministic bias),VAE 由于優(yōu)化的是對數(shù)似然的下界,而不是對數(shù)似然本身,因此引入了決定性偏置,這也導(dǎo)致了其生成的實例比GAN 更模糊。
GAN 的劣勢體現(xiàn)在:
(1)訓(xùn)練GAN 需要達到納什均衡,目前沒有找到很好的達到納什均衡的方法,甚至是否存在納什均衡仍然沒有很好的理論證明,因此GAN 相對于VAE而言其訓(xùn)練是不穩(wěn)定的。
(2)GAN 對離散數(shù)據(jù)的生成效率很低,如文本數(shù)據(jù)。
(3)可解釋性差,生成模型的分布沒有顯式的表達;極易受到對抗樣本的干擾,導(dǎo)致模型錯誤的輸出。
目前,數(shù)據(jù)缺乏仍是限制深度學(xué)習(xí)發(fā)展的重要因素之一,而GAN 能夠從大量的無標簽數(shù)據(jù)中無監(jiān)督地學(xué)習(xí)到一個具備生成各種形態(tài)(圖像、語音、語言等)數(shù)據(jù)能力的函數(shù)(生成器)。以生成圖像為例,GAN 能夠生成百萬級分辨率的高清圖像[38],如BigGAN、WGAN,WGAN-GP 等優(yōu)秀的模型。但是GAN 并不是單純地對真實數(shù)據(jù)的復(fù)現(xiàn),而是具備一定的數(shù)據(jù)內(nèi)插和外插作用,因此可以達到數(shù)據(jù)增廣的目的。比如用GAN 來生成一張紅顏色的汽車圖像,GAN 生成的汽車圖像顏色可能變成了黑色,或者在汽車的輪胎、車窗上和原圖像有差別,這樣一張圖像就可以生成出很多張不同的圖像,與經(jīng)過剪切、旋轉(zhuǎn)生成的圖像相比,使用GAN 生成的圖像數(shù)據(jù)更符合模型訓(xùn)練的需要。不同GAN 模型生成圖像結(jié)果如圖17 所示。
Fig.17 Image results generated by different GAN models圖17 不同GAN 模型生成圖像結(jié)果
圖像超分辨率一直是計算機視覺領(lǐng)域的一個研究熱點,SRGAN(super-resolution generative adversarial network)[39]是GAN 在圖像超分辨率應(yīng)用上的一個成功案例。SRGAN 基于相似性感知方法[40]提出了一種新的損失函數(shù),有效解決了恢復(fù)后圖像丟失高頻細節(jié)的問題,并使人能有良好視覺感受。在此之前的其他超分辨率圖像處理模型如Residual Network[41]以及在其基礎(chǔ)上改進而來的SRResNet[42]都是追求高的PSNR(peak signal-to-noise ratio),但在實驗中發(fā)現(xiàn)較高的PSNR并不能帶來良好的視覺效果[43-44]。SRGAN從特征上定義損失,它將生成樣本和真實樣本分別輸入VGG-19 網(wǎng)絡(luò),然后根據(jù)得到的特征圖的差異來定義損失項,最后將對抗損失、圖像平滑項(生成圖像的整體方差)和特征圖差異這3 個損失項作為模型的損失函數(shù),得到了很好的效果。圖18 是應(yīng)用在圖像超分辨率上的網(wǎng)絡(luò)模型實驗的結(jié)果,可以看到SRGAN 的PSNR 雖然不是最高,但生成的圖像細節(jié)、紋理更明顯。
Fig.18 Super-resolution image generation圖18 超分別率圖像生成
圖像風(fēng)格遷移是將一張圖片的風(fēng)格“遷移”到另一張圖片上。深度學(xué)習(xí)最早是使用CNN 框架來實現(xiàn)的[45],但這樣的模型存在訓(xùn)練速度慢,對訓(xùn)練樣本要求過高等問題。由于GAN 的自主學(xué)習(xí)和生成隨機樣本的優(yōu)勢,以及降低了對訓(xùn)練樣本的要求,使得GAN在圖像風(fēng)格遷移領(lǐng)域取得了豐碩的研究成果[46-52]。
GAN 除了應(yīng)用在數(shù)據(jù)生成、圖像超分辨率、圖像翻譯和風(fēng)格遷移等領(lǐng)域外,在其他領(lǐng)域也有著很好的表現(xiàn),如與人體相關(guān)的人體姿態(tài)估計[53]、行為軌跡追蹤[54]、人體合成[55];與人臉相關(guān)的人臉檢測、人臉合成[56]、人臉表情識別[57]、預(yù)測年齡[58]等。此外GAN 還在圖像分割[59]、圖像復(fù)原[60]、圖像補全[61]中表現(xiàn)出色,文獻[60]使用生成對抗網(wǎng)絡(luò)思想的對抗損失提出了一種端到端的模糊圖像復(fù)原方法;文獻[61]提出一種基于生成式對抗網(wǎng)絡(luò)的圖像補全方法,生成器用于對圖像缺失區(qū)域進行補全,判別器對補全效果判別并指導(dǎo)生成器學(xué)習(xí)。GAN 對時間序列數(shù)據(jù)同樣表現(xiàn)出強大的學(xué)習(xí)能力,如音樂生成[62]、視頻預(yù)測與生成[63-64]。文獻[65]使用一種對偶對抗學(xué)習(xí)機制,經(jīng)過訓(xùn)練后能夠準確預(yù)測下一幀或多幀的視頻;文獻[64]采用將隨機噪音向量映射到視頻幀的方法來實現(xiàn)未來幀的預(yù)測;不僅如此,GAN 在重癥監(jiān)護室的ICU 記錄生成[66]、檢測惡意代碼攻擊[67]、醫(yī)療影像分割[68]、目標跟蹤檢測[69-71]、自動駕駛[72]等領(lǐng)域都有令人非常驚艷的表現(xiàn)。
(1)性能與成本權(quán)衡的問題。SAGAN、BigGAN等都證明了龐大的GAN 模型能得到性能上的提升,如BigGAN 生成了超清晰的圖像,但是龐大的模型需要使用TPU 或者多個GPU 訓(xùn)練,成本高。一個可行的方法是保證性能的同時將模型壓縮,如使用模型量化[73]等方法,但這仍是一個嚴峻的挑戰(zhàn)。
(2)GAN 在使用類別特定數(shù)據(jù)集(如人臉、臥室)進行訓(xùn)練時已經(jīng)能生成逼真、高質(zhì)量樣本,但建模具有多個類別,高度多樣化的數(shù)據(jù)集(如ImageNet)的分布仍然是一項重大的挑戰(zhàn),通常需要根據(jù)另一種輸入信號來調(diào)節(jié)生成或為特定任務(wù)訓(xùn)練模型,此外GAN 在這種高可變性的數(shù)據(jù)集中難以生成全局一致的高分辨率樣本。
(3)GAN 的全局收斂性未得到真正證明。GAN的訓(xùn)練方式是交替優(yōu)化生成器和判別器,這和其他神經(jīng)網(wǎng)絡(luò)不同。目前比較常用的是基于博弈理論原理進行GAN 的訓(xùn)練,但這一過程是在資源限制的情況下完成的,下一步應(yīng)該要研究怎樣減少這樣的資源限制?;蛘咴噲D分析常規(guī)神經(jīng)網(wǎng)絡(luò)來解答GAN 收斂性的問題,因為生成器模型和判別器模型的參數(shù)均為非凸性損失函數(shù),這與絕大多數(shù)神經(jīng)網(wǎng)絡(luò)有相似之處。
雖然目前GAN 的理論結(jié)構(gòu)仍不太成熟,限制了GAN 在相關(guān)領(lǐng)域的應(yīng)用與發(fā)展,但GAN 仍然是一種很有發(fā)展前景的網(wǎng)絡(luò)模型,未來GAN 將在以下方面取得進一步的發(fā)展:
(1)理論突破。GAN 的理論基礎(chǔ)是博弈論中的二人零和博弈,目前還沒能在理論上真正證明均衡點的存在性,同時GAN 訓(xùn)練的不穩(wěn)定性如梯度消失、模式崩潰、過擬合和生成樣本自由度較高等模型性能問題仍是當前GAN 所面臨的問題。從理論層面上進行突破,找出導(dǎo)致以上問題的根本原因并做出改進是GAN 未來的一個重點研究方向。
(2)算法拓展。GANs 在圖像合成、圖像超分辨率等連續(xù)樣本上表現(xiàn)良好,但是在離散樣本如文本處理上的表現(xiàn)還低于基于似然的語言模型。對GAN的算法拓展,使GAN 這一個優(yōu)秀模型的應(yīng)用范圍更加廣泛,是迫切需要解決的問題。目前的一個方向是GAN 吸收機器學(xué)習(xí)中最新的理論與研究成果并與之相結(jié)合,如GAN 與強化學(xué)習(xí)結(jié)合。
(3)解決對抗樣本帶來的困擾。分類器極易受到對抗樣本的影響,往往會因為故意添加的一些細微干擾就會導(dǎo)致模型判斷錯誤。比如判別器D判別一個生成樣本G(z)為假,卻將加了擾動的生成樣本G(z)+p判定為真。對抗樣本影響GAN 的性能,如何解決這個問題,使得模型的精度和穩(wěn)定性有所提升,是未來一個充滿前景的研究方向。
(4)證明GAN 可以為什么樣的分布建模。研究者們發(fā)現(xiàn),GAN 在MNIST 數(shù)據(jù)集上訓(xùn)練比在Imagenet、CIFAR-10 等數(shù)據(jù)集上訓(xùn)練更為容易,原因是MNIST 數(shù)據(jù)集的類別相對較少。這說明GAN 對數(shù)據(jù)集的規(guī)模存在偏好。GAN 可以對一些數(shù)據(jù)建模但效率很低,或者甚至存在一些GAN 無法學(xué)習(xí)的分布。如何建立一套理論和標準來判斷一個數(shù)據(jù)集是否適合使用GAN 來訓(xùn)練,將是GAN 領(lǐng)域未來的一個重要的研究方向。
(5)完善評測體系。目前GAN 模型沒有一個科學(xué)的、統(tǒng)一的評估標準,各項研究工作中無非是提出適用于當前研究成果的判定方法,或是直接由人的肉眼來評判。因此提出一個更精確的評價指標,采用統(tǒng)一的標準,構(gòu)建標準化、通用化的科學(xué)評估體系是亟待解決的問題。
(6)針對GAN 可解釋性差進行改進。GAN 一般是輸入一個噪聲信號z進行訓(xùn)練,但是對輸入的噪聲信號和數(shù)據(jù)的語義特征之間的對應(yīng)關(guān)系不清楚,使得很難控制GAN 生成需要的樣本,雖然InfoGANs 等模型對此做了相應(yīng)的一些改進,但這方面仍缺乏系統(tǒng)的研究。解決GAN 解釋性差的問題,將會對GAN未來的發(fā)展有著重大的意義。
本文對GAN 這一模型在原理、應(yīng)用、存在挑戰(zhàn)和未來研究方向等方面進行了介紹和總結(jié),GAN 模型的提出為人工智能領(lǐng)域注入了新的活力,特別在無監(jiān)督學(xué)習(xí)上,GAN 的對抗性思想提供了一種新的算法框架,促進了這一領(lǐng)域的發(fā)展。雖然GAN 目前還存在諸多未解決的難題,但對GAN 的繼續(xù)探索,相信未來一定能突破這些難題,打造出更優(yōu)秀的模型。