劉鶴丹,趙旭磊,葉漢平,王 健
(1.廈門大學嘉庚學院 信息科學與技術學院,福建 漳州 363105;2.中國船舶第七六〇研究所 海上試驗測繪中心,遼寧 大連 116000)
近年來,研究人員一直在努力提升計算機的自主學習能力,計算機學習逐步進入了人工智能階段。人工智能作為一門交叉性強的學科,致力于使計算機可以模擬人類的學習方法。在常見的機器學習模型中,大部分模型是需要監(jiān)督學習的,而監(jiān)督學習需要收集大量的數(shù)據集才能得到較好的訓練結果,并且數(shù)據集的標注往往是需要通過人工的手段,這無疑會提高人工成本。在2014年,生成對抗網絡模型GAN的出現(xiàn)為解決該類問題提出了很好的方案,GAN擁有無監(jiān)督學習和優(yōu)越的樣本輸出等優(yōu)勢,受到大批學者的喜愛,特別是在圖像生成和目標檢測等領域得到了廣泛的應用與發(fā)展。
GAN采用博弈論中零和博弈的思想[1],其中包含兩個模型:生成器和判別器。生成器會生成一系列的樣本欺騙判別器,而判別器的目的是識別出這些樣本的真實性,在兩者的對抗過程中,會不斷地提升模型的效率,直到生成器可生成能夠欺騙判別器的樣本為止,此時達到納什均衡[2]。
GAN模型[3]包含生成式模型G和判別式模型D(以下生成器與判別器均用G和D替代),G從統(tǒng)計學的角度直觀地展示了數(shù)據分布情況,并對其進行建模P(X|Y),再通過貝葉斯公式進行預測,最后根據訓練數(shù)據學習聯(lián)合概率分布P(X,Y)。模型對比情況見表1所列。
表1 模型對比情況
經典GAN網絡架構如圖1所示,兩個神經網絡G和D構成了一個動態(tài)博弈的過程。G和D使用聯(lián)合損失函數(shù),其中x表示真實數(shù)據,D(x)是每個圖像x的單個標量值,表示此圖像x是來自數(shù)據集的真實圖像的可能性。此外,噪聲z的發(fā)生器輸出的G(z)、D(G(z))是鑒別器對假實例的真實概率的估計。EZ是G的所有輸入的預期值。生成器G試圖最小化函數(shù),而D試圖將函數(shù)最大化。優(yōu)化目標公式如下:
圖1 經典GAN架構
DCGAN(Deep Convolutional Generative Adversarial Networks)[4]于2015年被提出,其架構如圖2所示。對GAN架構進行了三方面改進:(1)代替空間池化函數(shù)為步幅卷積,允許網絡對自身空間下采樣學習,允許D對自身空間上采樣學習;(2)最頂層的卷積后面消除全連接層;(3)批處理規(guī)范化。其中G使用了卷積神經網絡,除了最終輸出層使用了tanh,其余使用激活函數(shù)ReLu,模型目標是最小化判別網絡的準確率。DCGAN的Generate網絡結構如圖3所示。D同樣使用卷積神經網絡,使用的激活函數(shù)是Leaky ReLu,以實現(xiàn)最大化判別網絡的準確率。
圖2 DCGAN的網絡結構
圖3 DCGAN的Generate網絡結構
Mirza等人[5]提出了兩個問題:如何擴大已有模型以適應預測的大量輸出類別,如何實現(xiàn)GAN從一對多的映射;同時提出了CGAN(Conditional Generative Adversarial Networks)模型。該模型結構額外為生成器和判別器增加了條件y(表示希望生成的標簽)。D會生成符合條件y的樣本,而G會對生成的圖像進行判斷,判斷是否符合條件y和是否具有真實性,并會對后續(xù)的優(yōu)化目標公式進行相對應的優(yōu)化改進。
Denton 等人[6]在2016年提出SGAN(Semi-supervised learning GAN),訓練時可通過少量帶標簽的數(shù)據配合無標簽數(shù)據。該模型結構解決了一個半監(jiān)督分類任務的同時還學習一個生成模型;在數(shù)據集上學習G的同時訓練一個圖像分類器C;共享了D和C之間的部分權重,一些權重專屬于D,一些權重專屬于C;讓GAN生成帶類別標簽的樣本,要求D/C指派標簽。
針對傳統(tǒng)GAN使用高度混雜的模型和隨機噪聲z,但不能顯式地表示真實數(shù)據空間下的屬性或特征的問題,Chen等人[7]提出InfoGAN以無監(jiān)督方式學習隱空間下非混雜方式的真實特征表示。將隨機噪聲分成不可壓縮部分z和可解釋的隱編碼c。Generate(G)表示為G(z,c),通過最大化c與生成數(shù)據x之間的信息來防止GAN在訓練過程中忽略c的特征表示能力,并增加c和G(z,c)之間的互信息I(c;G(z,c))為約束。
Arjovsky等人[8]針對訓練梯度不穩(wěn)定、生成樣本單一、模式崩潰、梯度消失等問題提出了四點改進措施:去除D最后一層的sigmoid,G和D的損失不再取對數(shù),在更新D的參數(shù)后截斷其絕對值到固定常數(shù)c下,使用RMSProp、SGD等算法替代基于動量的優(yōu)化算法。
Zhang等人[9]指出先前的模型過分使用卷積來模擬不同圖像區(qū)域之間的依賴,導致傳統(tǒng)卷積GAN存在一些問題,因此提出SAGAN。將self-attention機制加入傳統(tǒng)的卷積GAN,該機制在模擬遠程依賴、計算和統(tǒng)計時有更加出彩的表現(xiàn),能夠更好地處理長范圍、多層次的依賴,生成圖像時做好每一個位置的細節(jié)和遠端的協(xié)調。此外,D能夠更精準地對全局圖像使用幾何約束。
針對GAN難以實現(xiàn)從復雜數(shù)據集中生成高分辨率、多樣化樣本的缺點,Brock等人[10]提出了BigGAN,該模型增大了BatchSize和channel number,采用“截斷技巧”等,用原有GAN的8倍batch size大小,將隱藏層變量數(shù)量擴充到原有模型的4倍進行訓練,獲得了很好的效果。
2017年NVIDIA提出了ProGAN[11],該模型采用漸進式訓練,解決了高分辨率圖像生成困難的問題,但控制生成圖像的特定特征能力有限。Karras等人[12]提出了StytleGAN,每一層視覺特征都可以通過修改該層的輸入來控制,且該過程并不受其他層級的影響。StytleGAN的模型結構除了采用傳統(tǒng)的輸入,將一個可學習的常數(shù)作為生成器的初始輸入,還采用8個由全連接層所組成的映射網絡來實現(xiàn)輸出的w與輸入的z大小相同;引入樣式模塊(AdalN),將w通過卷積層的AdaIN輸入到生成網絡中;添加尺度化噪聲到合成網絡的分辨率級上,然后通過輸入層輸入到G中;對G使用混合正則化,對訓練樣本使用樣式混合的方式生成圖像,在訓練過程中使用兩個隨機隱碼z,而不是一個,在生成圖像時會在合成網絡上隨機地選擇一個點,實現(xiàn)一個隱碼到另一個隱碼的切換,并且加入感知路徑長度和線性可分性兩種新的量化解耦方法。
He等人[13]提出了通過明確的維度來控制特定層中語義屬性表示的EigenGAN模型,可無監(jiān)督地從不同生成器層挖掘可解釋和可控的維度。EigenGAN將一個具有正交基礎的線性空間嵌入到每個生成器層;在對抗訓練中,這些子空間會在每一層中發(fā)現(xiàn)一組“特征維度”,對應一組語義屬性或可解釋的變化。
GAN所生成圖像與訓練的數(shù)據集密切相關,這導致生成的圖像存在局限性。而Casanova等人[14]提出ICGAN(Instance-Conditioned GAN)模型,可生成逼真且與訓練集圖像不同的圖像組合。對于每個訓練的數(shù)據點,采用參數(shù)化的混合形式對其周圍密度進行建模處理;模型引入了一種非參數(shù)化方法對復雜數(shù)據集的分布進行建模,使用條件實例和噪聲向量作為神經網絡的輸入,并且隱式地對其局部密度進行建模。ICGAN中,G與D可以聯(lián)合訓練,都參與了一個兩者最小-最大博弈,在博弈中找到納什均衡。
近年來,Transformers[15]在NLP領域大放異彩,TransGAN的研究者將Transformers結構作為GAN的主結構,并完全拋棄了CNN結構[16]。實驗表明,采用Transformers作為GAN模型的主體結構在其性能上幾乎能夠匹敵目前最好的GAN模型。
針對傳統(tǒng)的生成模型很難生成視覺上連貫的圖像問題,Yoon等人[17]提出了OUR-GAN模型,用低分辨率生成視覺上連貫的圖像,應用無縫銜接的子區(qū)域超分辨率來提高分辨率,解決了邊界不連續(xù)問題,通過向特征圖添加垂直位置嵌入來提高視覺連續(xù)性和多樣性。
文獻[18]提出了P2GAN(Posterior Promoted GAN),該模型采用D生成的后驗分布的真實信息來提升G,并且通過將圖像隱射到多元高斯分布來提取出真實的信息;G則使用AdaIN后的真實信息和潛碼提升自身。
文獻[19]提出了Inclusive GAN模型,通過有效融合對抗模型與重建模型提升對少數(shù)樣本群體的覆蓋能力,提升了模型的包容能力。引入IMLE重建方法調和GAN,使其成為IMLE-GAN,綜合了兩個模型的優(yōu)劣,保證了數(shù)據的覆蓋性,有效提升模型整體的覆蓋能力且更適應了對少數(shù)群體的包容能力。
許多GAN及其變體模型很難適應不同的數(shù)據集,當真實分布和生成分布的支撐集不夠重疊時,判別器反饋給生成器的梯度無法提供有益信息。文獻[20]提出了MSG-GAN,可多尺度地提供梯度給D和G。
GAN作為生成式模型,結構簡單,不需要類似GSNs的馬爾科夫鏈,只是用到了反向傳播,其創(chuàng)造的數(shù)據樣本遠遠優(yōu)于其他的生成模型。這表明GAN可以訓練任何形式下具有非特定目的生成網絡;GAN的學習方式為無監(jiān)督式學習,該方式被廣泛應用于無監(jiān)督和半監(jiān)督學習領域,其訓練方式不需要推斷隱變量;對比VAEs,GANs尚未引入決定性偏置,也沒有變分下界,因此GANs的生成實例相比于VAEs更為清晰。如果D訓練妥善,那么G將會得到完美的訓練樣本分布。GANs的生成過程是漸進一致的過程,而VAE有偏差。
GAN普遍存在評價指標和梯度消失、模式崩潰、訓練不穩(wěn)定等問題。對于如何實現(xiàn)GAN在訓練中達到納什均衡,目前還沒有較好的方法。雖然可以通過梯度下降法實現(xiàn),但會導致其缺乏穩(wěn)定性;GAN不適合處理文本類的離散型數(shù)據,因為通常需要將一個詞映射為一個高維向量,當G向D輸出結果不同時,D均會返回同樣的結果,導致梯度信息不能很好地傳遞到D中。此外,GAN損失函數(shù)為JS散度,并不適用于衡量不相交分布之間的距離。
生成對抗神經網絡是當下人工智能領域的前沿。越來越多的研究人員開始在這一領域進行挖掘,并產生越來越多的高效率模型。本文從介紹GAN模型的生成器和判別器出發(fā),闡述了GAN模型的基本原理,并通過典型的GAN變體模型展示了GAN的發(fā)展歷程。GAN目前仍面臨著許多挑戰(zhàn),但值得期待。