孫書魁,范 菁,曲金帥,路佩東
1.云南民族大學 電氣信息工程學院,昆明650000
2.云南民族大學 云南省高校信息與通信安全災備重點實驗室,昆明650000
近年來,隨著不同行業領域海量數據的涌現以及硬件設備的算力不斷增強,人工智能的身影開始出現在各個領域。其中機器學習是人工智能的核心應用,它關注的是計算機學習能力所依據的程序和算法的改進與優化。根據有無監督,機器學習[1]分為監督學習和非監督學習。在監督學習中,人工標記的數據即昂貴又耗時;另外,自動收集數據也較繁雜。在深度學習中,解決這個問題的關鍵技術之一是數據擴充,將這種方法應用于模型可以提高模型的能力,并減少泛化誤差。通過對圖像進行旋轉、裁剪、縮放和其他簡單變換等操作,創造出新的、可接受訓練的樣本集,從而實現數據擴充。然而,使用這種方法獲得的數據是有限的。最先進的數據擴充方式是通過生成模型生成高質量的樣本。考慮到生成模型具有生成大規模數據的能力,標簽數據短缺的問題將得到大幅度緩解。
生成模型通常基于馬爾科夫鏈、最大似然估計和近似推理。受限玻爾茲曼機[2]及其開發模型、深度信念網絡[3]以及深度玻爾茲曼機[4]都是基于最大似然估計的,這些模型存在一些嚴重的缺陷,泛化能力不強。為解決這些缺陷,Goodfellow等人在2004年提出生成式對抗網絡(generative adversarial networks,GAN)[5]。自首次提出,GAN就被研究學者譽為“深度學習中最重要的創新之一”。作為深度學習領域領軍人物的LeCun 曾表示,GAN 及其變體是“過去20 年來深度學習中最酷的想法”。
如今,GAN 已經滲透到各個領域,例如視頻語音、計算機視覺以及諸如醫學物理等學科領域。圖1 顯示了Scoups 上至2021 年以來GAN 在不同學科領域所發表論文數量。圖2表示近年來Scoups上GAN論文的數量變化趨勢。從這些數據可以得知GAN是人工智能中不可多得的技術,并且有非常大的應用前景等待人們去發掘。

圖1 Scopus上GAN論文所屬Top 10學科領域Fig.1 Top 10 disciplines of GAN papers on Scopus

圖2 Scopus上GAN論文數量的變化趨勢Fig.2 Change trend of GAN papers on Scopus
本文闡述了GAN 在架構、訓練、目標函數、面臨挑戰和評估指標等方面的最新研究進展,然后對GAN 在圖像、序列數據和半監督學習等領域中的應用進行了梳理,最后進行了總結并對其下一步研究方向進行展望。
主要介紹了GAN 的網絡架構、訓練過程以及目標函數,并且討論了GAN如今所面臨的挑戰。
GAN 是一種類似于二人博弈的網絡模型,該模型由生成網絡G和判別網絡D組成。GAN的架構如圖3所示。Xdata和G(z)分別表示真實數據樣本和生成器G生成的偽數據樣本,判別器D判斷輸入數據的真偽。在GAN中,生成器G以固定長度的隨機噪聲向量z(均勻分布或高斯分布)作為輸入,生成器的目的是盡量使生成數據分布近似于真實數據分布。鑒別器D的輸入有兩部分:Xdata和G(z),其輸出為概率值,表示D認為輸入數據是真實樣本的概率,同時輸出會反饋給G,用于指導G的訓練。理想情況下D無法判別輸入數據是來自真實數據還是生成數據,即D每次的輸出概率值都是1/2,此時模型達到最優[6]。

圖3 GAN架構Fig.3 Architecture of GAN
GAN 是一組非常復雜且富有挑戰性的網絡,因為生成和判別網絡是以對抗方式同時進行訓練。GAN的核心是兩個網絡之間的平衡。圖4顯示了GAN的訓練過程。在圖4(a)中,通過更新判別分布(藍色虛線)使其能夠區分輸入是來自真實分布(黑色虛線)還是生成數據分布(綠色實線)。在圖4(b)中,判別器經過訓練可以區分真假數據,并且很容易完成任務。在圖4(c)中,固定判別器,只訓練生成器,使其生成假數據的分布更接近真實數據分布。更新一直持續到判別器無法區分為止(圖4(d))[7]。值得注意的是,訓練過程并不像圖4 所示的這么簡單。理想情況下,假數據分布與真實的數據分布完全重疊,但實踐中存在各種挑戰[8]。

圖4 GAN訓練過程Fig.4 Training process of GAN
原始GAN 使用兩個目標函數:(1)D最小化二元分類的負對數似然;(2)G最大化生成樣本為真實的概率。D參數為θD,G參數為θG,θG和θD分別最小化和最大化目標函數,因此這是一場零和博弈。等式(1)中的pdata(x)和pz(z)分別表示數據空間x中定義的真實數據概率和隱藏空間定義的z的概率分布。

V(G,D)為二元交叉熵函數,常用于二元分類問題,可以注意到G將z從Z中映射到X的元素中,而D接收輸入X,并判斷X是真實數據還是由G生成的假數據。為了更新各自的模型,G和D的訓練是通過它們各自的模型執行反向傳播來實現的。從D的角度來看,如果樣本來自真實數據樣本,D將其最大化,若樣本來自生成器生成的樣本數據,D則將其最小化輸出。與此同時,G試圖欺騙D,所以當一個假樣本輸入D時,它試圖最大化D的輸出[9]。因此,D試圖最大化V(G,D),而G試圖最小化V(G,D),從而形成了等式(1)的極大極小關系。等式(1)是通過交替執行兩個梯度更新來求解的:

λ是學習率,t是迭代次數。實際上,在等式(1)的第二項ln(1-D(G(z))梯度飽和并使梯度不飽和的流向G時,即梯度變小,停止學習。為了克服梯度消失,可以將等式(1)的目標函數分解成等式(2):

這兩個單獨目標函數的G梯度具有相同的固定點,且總是在相同的方向上訓練。在等式(2)中的損失計算出來后,利用反向傳播更新參數。若有充足訓練,G能夠將簡單的隱式分布pg轉換為更復雜的分布,即pg收斂于pdata。
原始GAN 生成的樣本缺乏多樣性,生成器在存在多個可能輸出類別的情況下,卻一直生成單一類別輸出[10],即模式崩潰。模式崩潰是GAN 訓練過程中常見的問題,其原因和解決方法尚未被完全理解。GAN 在訓練過程中G和D也會發生振蕩,而不是固定點收斂。當一個玩家比另一個玩家強大的時候,網絡可能無法學習并受梯度消失影響。在本節中,將討論GAN 訓練過程中所面臨的挑戰。
1.4.1 模式崩塌

通常來說,模式崩潰[11]是泛化能力差的結果,這類崩潰大致可以分為兩種:(1)輸入數據中的大部分模式在生成的數據中不存在;(2)G只學到了特定模式的子集,對于一些修改D的目標函數[12-13]和修改G的目標函數[14]的GAN 的變體而言,不合適的目標函數也可能會導致模式崩潰。在這些變體中,G處于平衡狀并且能夠學習整個數據分布,但在實際中收斂常是難以捉摸的。為了解決這個問題,最近幾項研究引入了具有新目標函數或替代訓練方案的新型網絡架構。圖5 顯示了GAN 在玩具集上的模式崩潰,其中目標分布是二維空間中的高斯分布。

圖5 2D玩具數據集上的模式崩潰示例Fig.5 Example for mode collapse problem on 2D toy dataset
1.4.2 非收斂性和不穩定性
在原始GAN 中,G使用的兩個損失函數是Ez[lnD(G(z))]和Ez[ln(1-D(G(z)))]。當D可以輕松區分真假樣本時,前一個損失函數Ez[lnD(G(z))]可能是梯度消失問題的原因。對于最優D,G損失最小化類似于真實圖像分布和生成圖像分布之間的JSD(Jensen-Shannon divergency,JSD)最小化。在這種情況下,JSD將是2ln2。這允許最優D將概率0 分配給假樣本,將1分配給真實樣本,并導致G損失函數梯度接近于0,這稱為G上的梯度消失。圖6顯示,隨著D的優化,G的梯度逐漸消失[15]。

圖6 原始代價函數的梯度Fig.6 Gradient of original cost function
在GAN 中,D試圖最小化交叉熵,而G則嘗試最大化。當D的置信度很高時,D拒絕G生成的樣本,然后G的梯度消失。緩解此問題的第一種方案是反轉用于構建交叉熵成本的目標。第二個被認為-lnD方式。G的損失函數Ez[ln(1-D(G(z)))]的最小化等于最小化DKL(pg||pdata)-2(DJS(pdata||pg)),這會導致梯度不穩定,因為它會同時最小化KL 散度(Kullback-Leibler divergence)和最大化JSD。這種情況稱為G的梯度更新不穩定。圖7 顯示了G的梯度正在快速增長。且還顯示了梯度的方差在增長,更新梯度將導致產生低質量樣本[15]。

圖7 -lnD 代價函數的梯度Fig.7 Gradient of-lnD cost function
如上所述,為了應對GAN 所面臨的挑戰,文獻[16]提出一種新的、魯棒性更強的算法去尋找二人博弈的納什均衡,該方法能夠在各種結構和散度度量上穩定地訓練GAN,并能夠達到局部收斂,但全局收斂性還有待研究。文獻[17]對如今的訓練方法進行分析比較,并指出通過添加一致優化正則項和zero centered gradient可以較好地實現收斂,這為以后的研究指明了方向。
1.4.3 評估指標
GAN 模型已被廣泛應用于很多的領域,且衍生出較多的變體。但不同模型的評估仍存在大量的分歧。目前雖然已經有評估GAN 的性能的措施和方案,但這些評估方案是定性的,而且這些評估耗時、主觀且無法捕獲分布特征。由于選擇合適的模型對于獲得良好的應用性能至關重要,因此選擇合適的評價指標對于得出正確的結論也至關重要。為了設計更好的GAN 模型,需要通過開發或使用適當的定量度量來克服定性度量的局限性。
表1 展示一種基于GAN 設計和優化方案的新型GAN分類。近年來,基于兩種主要技術:重組網絡架構和新型損失函數,人們提出了很多解決方案來更好地設計和優化原始GAN 。重組網絡架構側重于對原始GAN 架構進行重新組合和創新[18-20],新型損失函數涵蓋對GAN 損失函數的修改和重新設計[21-22]。對于每種技術,相關的研究從未停止且已經提出了相應的解決方案來解決上述GAN 所面臨的挑戰[12]。

表1 GAN衍生變體分類Table 1 Classification of GAN derived variants
生成和判別網絡的架構會極大地影響GAN的訓練穩定性。如上文討論,目前有很多學者對架構進行分析和優化,并嘗試與其他的模型結合,以結合彼此的優勢。這些基于架構優化的模型大致可以分為三類:條件、卷積和自動編碼器,現在的絕大多數變體都是基于以上三種經典模型進行開發的。在下文中,將詳細介紹這三種經典架構。
2.2.1 基于條件優化的GAN
如上所述,在原始GAN中,把隨機噪聲向量z輸入到G中,G從噪聲z中輸出一個樣本。假設GAN的訓練集有很多類樣本,由于原始GAN 對于生成器幾乎沒有任何約束限制,因此無法控制生成特定類的樣本,在生成內容復雜圖像的情形時模型會變得更加難以控制。因此,文獻[23]提出了條件生成對抗網絡(conditional generative adversarial network,cGAN),在原始GAN 的基礎上添加條件信息有y,通過y用戶可以讓G具體輸出某一類別的數據樣本,D則以真實圖像和附加信息y作為輸入。使網絡朝著既定的方向生成樣本[24]。cGAN的目標函數是:

為實現等式(3),將one-hot編碼y連接到x作為判別器的輸入,同時將y連接到噪聲z作為生成器的輸入。因此,判別器和生成器的輸入層被放大以接受連接的輸入,這樣用戶就可以讓生成器輸出特定類別的數據[25]。
現有的研究表明,cGAN只是為了使生成的圖像更具有控制性而增加了控制信息,并沒有解決訓練不穩定問題。因此,cGAN 不能很好地執行監督任務,如語義分割、實例分割、直線檢測等。可能的原因是G通過最小化并不直接依賴于真實數據標簽的損失函數來優化。為了解決上述問題,文獻[26]還提出了一種類條件GAN,該GAN 不需要人工標注類標簽。而標簽是通過在D的特征空間中應用聚類自動導出的。聚類操作會自動發現不同的模式,并要求G明確地覆蓋它們。在后面的介紹中,很多的應用都直接或間接地用到cGAN,或者是對cGAN 的進一步改進,但使控制信息應用到GAN 的思想是不變的。因此,條件生成可以說是GAN應用中極為重要的一部分。
2.2.2 基于卷積優化的GAN
卷積神經網絡(convolutional neural network,CNN)[27]作為如今最有效和應用最多的學習模型,近幾年在計算機視覺領域開始變得舉足輕重。在原始GAN 中,多層感知機(multilayer perceptron,MLP)用于生成和鑒別網絡。由于MLP 的訓練不穩定且具有挑戰性,并且CNN在特征提取方面比MLP 具有更好的性能,因此提出了深度卷積GAN(deep convolutional GAN,DCGAN)[28]架構。在這個體系架構中,通過對CNN 進行了一些更改以便可以將其應用于生成和判別網絡。這些更改主要是通過在架構、設置和訓練上的大量實驗和錯誤中獲得的。表2 顯示了對CNN 所做的更改。DCGAN 可以很好地生成高分辨率圖像,也可以說是設計和訓練可持續GAN模型的最關鍵步驟之一,大多數GAN模型都是基于這種架構。

表2 在GAN中應用CNN架構Table 2 Application of CNN architecture in GAN
在DCGAN架構中,生成器捕獲潛在空間中的隨機點作為輸入并生成圖像,所提出的方法是通過使用轉置卷積層來實現這一目標。換句話說,步幅為2會產生相反的效果,即在標準卷積層中將使用上采樣操作而不是下采樣操作。圖8 顯示了發生器的結構。鑒別器是一個標準的卷積網絡,它捕獲圖像作為輸入并顯示二進制分類(真或假)作為輸出。在標準模式下,深度卷積網絡利用池化層減少深度網絡的輸入維數和特征圖。對于DCGAN,并沒有使用池化層而是使用跨步卷積降維。

圖8 DCGAN的生成器Fig.8 Generator of DCGAN
雖然實驗證明DCGAN訓練更加的穩定,但是伴隨訓練的時間延長,濾波子集有時會折疊為單一振蕩模型,對于這一不穩定現象,需進一步研究。
2.2.3 基于自編碼器優化的GAN
自編碼神經網絡是一種用于提取特征和重建操作的無監督神經網絡模型。這個網絡由兩部分組成:編碼器z=f(x)和解碼器x?=g(z)。編碼器通過輸入降維過程將x轉換為潛層z。同時,解碼器通過接收來自潛在層z的代碼來重構輸入x以輸出。在過去的幾年中,自動編碼器網絡已被用于深度生成模型中。自編碼器網絡的缺點之一就是編碼器產生的潛層在指定空間上沒有均勻分布,導致分布中存在大量間隙。
因此,提出了對抗式自動編碼(adversarial autoencoder,AAE)[29],這是對抗式網絡與自動編碼器的組合。在這種方法中,先前的任意分布被施加在編碼器獲得的潛在層分布上,以確保不存在間隙,從而解碼器可以從其每個部分重建有意義的樣本。AEE架構如圖9所示,在這種架構中,潛在代碼z表示假信息,z′由指定分布的p(z)表示,兩個輸入都充當判別器。在完成訓練過程后,編碼器可以學習期望的分布,而解碼器則可以生成根據所需分布重構的樣本。表3 為基于架構優化的衍生體對比分析。

圖9 自動編碼器(AAE)的結構Fig.9 Structure of automatic encoder(AAE)

表3 cGAN、DCGAN和AAE的對比Table 3 Comparison of cGAN,DCGAN和AAE
文獻[5]提出GAN 網絡時,對生成器的目標是最小化pdata和pG分布距離[30]。在本節中,將討論如何使用各種距離和從這些距離導出的目標函數來測量pdata和pG之間的差異。
2.3.1 f-divergence
文獻[5]中使用JS散度來衡量兩個分布之間的差異,但是JS散度有自身的函數域,這可能會造成PG和Pdata分布的可能取值域缺乏重疊。理論上來說,真實的數據分布通常是一個低維流形,數據并不具備高維特性,而是嵌入在高維度的低維空間中,而實際當中,數據維度的空間遠遠不止3維,甚至上百維,這樣的話,數據就更難以重合。為解決上述問題,文獻[15]提出通用模式f-divergence來衡量分布之間的差異。使用兩個分布的比率,Pdata和PG與函數f的f-divergence定義如下:

上式中,Pdata和PG是兩個不同的分布;pdata(x)和pG(x)代表著分別從Pdata和PG中采樣出x的概率。f可以是任意類型的收斂,只需滿足它是一個凸函數同時f(1)=0。
當令f(x)=xlnx,f-divergence 轉換為KL-divergence:

當令f(x)=-lnx,f-divergence 轉換為Reverse KL Divergence:

f-divergence 根據任意凸函數f下的f散度來構建目標函數。由于不知道確切的分布,方程(2)應該通過易于處理的形式來估計,例如期望形式。通過使用共軛,等式(2)可以被重新整理如下:

其中f*是凸函數f的Fenchel共軛,domf*表示了f*域。
等式(7)源于最大值的總和大于總和的最大值,并且Γ 是滿足χ→R的任意函數類。可以注意到將方程(6)中的t替換為方程(7)中的T(x):χ→domf*使t參與到fχ。如果將T(x)表示為滿足a(?):? →domf*的T(x)=a(Dω(x))和Dω(x):χ→?,可以將T(x)解釋為具有特定激活函數a(?)的判別器。
f-divergence 統一了GAN 模型,對任何滿足條件的f都有一個對應的GAN。解決訓練過程中模式崩塌的問題,但是在訓練的過程中,不同的f-divergence對訓練結果并沒有改善。
2.3.2 最小二乘GAN
如上所述,通過JS散度衡量兩個分布的差異進而拉近PG(x)與Pdata(x)的距離,由于JS散度自身函數域的影響可能會導致PG與Pdata缺乏重疊。從數學的角度來看,無論兩種分布多么接近,只要沒有相交,那么它們的JS散度都是一個常數ln 2。因此如果生成的樣本被判別器分類為真實樣本,那么即使生成的樣本遠離真實數據分布,也沒有理由更新生成器。
針對上述問題,文獻[20]提出了LSGAN(least squares GAN,LSGAN)的方法。原始GAN 的鑒別器使用sigmoid 交叉熵損失去判斷輸入是真還是假。通過上面分析,知道sigmoid 交叉損失無法將生成的樣本推向真實數據分布,因為它已經實現了分類的作用。受此啟發,用更加平滑和非飽和的最小二乘損失代替了sigmoid 交叉熵損失。通過D將G生成的樣本拖到真實數據流形中。與公式(1)相比,LSGAN 解決了以下問題:

其中a、b和c是判別器的基線值。
等式(10)和(11)使用最小二乘損失,在此情形下,判別器被迫分別具有真實樣本和生成樣本的指定值(a、b和c),而不是真實或假樣本的概率。因此最小二乘損失不僅可以對真實樣本和生成樣本進行分類,還可以將生成的樣本拉近真實數據分布。此外,LSGAN 還可以連接到f-divergence框架。
2.3.3 Wasserstein GAN
如上所述,為了較好地測量PG和Pdata分布的差異的問題,文獻[11]提出了用Wasserstein距離(也稱was距離、EM距離),以便較好地測量兩個分布之間的差異,從而解決JS和f-divergence散度不能充分體現兩個分布之間差異的弊端。Wasserstein距離定義如下:

其中,Π(pdata,pG)表示聯合分布的集合,γ(x,y)的邊緣分布為pdata(x)和pG(x)[31]。
由于方程(12)中的inf 項是難以處理的,它通過具有Lipschita 函數類[27-28]的Kantorovich-Rubinstein 對偶性轉換為易于處理的方程,即f:X→R,滿足dR(f(x1),f(x2))≤1×dX(x1,x2),?x1,x2∈X其中dX表示域X的度量距離。等式(12)的對偶性如下:

因此,如果將帶有w的函數f參數化1-Lipschitz函數,則該公式變成了一個極大極小問題,因為首先通過公式(13)中的最大值來訓練fw以逼近W(pdata,pG),并且通過優化生成器gθ來最小化這種近似距離。為了保證fω是Lipschitz 函數,對w的每次更新進行權重裁剪,以確保w的參數空間位于緊湊空間中。值得注意的是,在WGAN中輸出的是was距離,原始GAN的輸出結果在(0,1)區間之內,但是was距離是沒有上下界的,意味著隨著訓練的進行,判別器將永遠無法收斂,雖然文獻[11]中做了權重裁剪處理,但是這個方法并沒有讓D真的限制在Lipschitz 函數內,所以WGAN 嚴格意義上說并沒有給出was距離的計算方法。
2.3.4 Wasserstein GAN-Gradient Penalty
具有梯度懲罰的WGAN(Wasserstein GAN-Gradient Penalty,WGAN-GP)[32]指出:WGAN并未能將D限制在Lipschitz 函數內,在訓練WGAN 時對判別器進行權重裁剪會導致判別器的不良行為,并建議添加梯度懲罰而不是權重裁剪。它表明,通過權重裁剪來保證判別器的Lipschitz 條件將判別器限制在所有Lipschitz 函數的一個非常有限的子集中;這使判別器偏向于簡單的功能。權重裁剪還會產生梯度問題,因為它將權重推到了裁剪范圍的極端。為了通過直接約束判別器的梯度來實現Lipschitz 條件,建議在方程(13)中添加一個梯度懲罰項,而不是權重裁剪[33]。
Loss sensitive GAN(LS-GAN)[33]也使用Lipschitz約束,但方法不同。它學習損失函數Lθ而不是判別器,這樣真實樣本的損失應該比生成樣本小一個與數據相關的邊距,導致關注邊際高的假樣本。此外,LS-GAN假設真實樣本pdata(x)的密度是Lipschitz 連續的,因此附近的數據不會突然變化。采用Lipschitz 條件的原因與WGAN 的Lipschitz 條件無關。關于LS-GAN 的文獻討論了Goodfellow 等人提出的模型應該無限容量的非參數假設。文獻[5]的條件過于苛刻,即使對于深度神經網絡也無法滿足,并導致訓練中出現各種問題;因此它將模型限制在Lipschitz 連續函數空間中,而WGAN的Lipschitz 條件來自kantorovich-Rubinstein 對偶,并且只有判別器受到限制。此外,LS-GAN 使用權重衰減正則化技術將模型的權重強加在有界區域內,以確保Lipschitz函數條件。
雖然WGAN-GP 很好解決了WGAN 遺留的問題,但是WGAN-GP依然存在改進的空間,因為它并沒有保證每一個x梯度的模都小于或等于1,對于這一問題,在文獻[34]中通過頻譜范數正則化得到了很好的解決。表4總結分析了基于損失函數優化的衍生體。

表4 基于損失函數優化的衍生體比較Table 4 Comparison of variants based on loss function optimization
GAN 衍生體目前種類繁多,如果僅僅憑借人工去評測生成樣本的優劣,將會消耗大量的人力以及時間成本,并且極易受到主觀因素影響。考慮到定性評估存在以上的內在缺陷,因此定量評估就顯得十分重要,本節以下內容對GAN的定量評價指標進行了全面的概述。
文獻[35]于2016 年提出Inception Score(IS),它對每個生成的圖像使用Inception 模型來獲得條件標簽分布p(y|x)。IS指標常用來評估生成圖像的質量,采用熵的形式體現了量化的概念。生成圖像的多樣性與熵的大小成正比,熵值越大意味著樣本越豐富。鑒于考慮圖像質量和多樣性的情形,以互信息形式設計GAN 評價指標。為了簡化計算添加了指數項,因此IS表達式如下:

其中結果取冪是為了方便比較。較高的IS表明生成樣本多樣性且高質量。然而,IS 也有缺點,如果生成模型陷入模式崩潰,則IS可能仍然很好,而實際情況則非常糟糕。
如上所述,由于IS 指標在GAN 發生模式崩潰時并不能較好的工作且只考慮生成數據的分布pg而忽略真實數據的分布pdata,于是文獻[36]在2017 年提出了Fréchet Inception Distance(FID),FID 計算了在特征空間高斯分布中真實數據與生成數據的弗雷歇距離。FID需要先選取一個特征函數φ(默認是Inception網絡的卷積特征)。FID 將φ(pdata)和φ(pg)建模為具有均值μr、μg和協方差Cr、Cg的高斯隨機變量并計算:

FID距離與GAN的性能成反比,且反映了兩個分布之間的親疏關系。FID 數值越大,兩個分布相差越大。然而,IS和FID均不能很好地處理過擬合問題。為了緩解這個問題,文獻[32]提出了內核初始距離(KID)。總的來說,FID 還是相對有效的,其不足之處是高斯分布的假設只存在于理想情況下。
MMD(maximum mean discrepancy)[37]主要用來測量兩個不同但相關的分布的距離。MMD計算了在希爾伯特空間中兩個分布的距離,是一種核學習方法。受到FID啟發,將求解FID距離的方法替換成MMD,數據分布之間的距離可以作為GAN 性能指標。MMD 距離與GAN 的性能成反比,MMD 值越低,則兩種分布越相似。實驗證明MMD可以較好地識別模式崩塌,盡管是有偏的,但仍推薦使用[38]。
SSIM(structural similarity)[39]主要用來度量圖像之間的相似性。與單尺度相比,多尺度結構相似性(multiscale structural similarity,MS-SSIM)[40]是用來評估多尺度圖像質量。它通過嘗試預測人類感知相似度判斷進而定量評估圖像的相似度。MS-SSIM 值得范圍在0 和0.1之間,較低的MS-SSIM值通常意味感知上更不相似的圖像。文獻[41]建議MS-SSIM 應與FID 和IS 指標一起考慮去測量樣本的多樣性。
1-NN(1-nearest neighbor classifier)[42]是如今評價GAN的完美指標,且具備其他指標的所有優勢,其輸出分數還在[0,1]區間,類似于分類問題中的準確率/誤差[38]。1-NN 比較訓練數據集與生成數據集的概率分布,如果兩者的結果一樣,則說明GAN 的性能良好,反之較差,這類的方法通常采用準確率作為評價指標。1-NN 分類器進行評估時,通過留一(leave-one-out,LOO)的準確率去評估Pr和Pg的差異。假設Tr~、Tg~分別是來自兩個概率分布和的樣本,同時樣本的數量一樣,即 |Tr|=|Tg|,如果兩個分布完全匹配的話,則LOO的準確率即為50%。
上述可知,不同的GAN 評估指標側重點不同。在ImageNet上預訓練ResNet的卷積空間中,MMD和1-NN在判別力、魯棒性和效率都是優秀的指標,而IS、FID和MMD 不適合于ImageNet 差異較大的數據集。盡管人們廣泛認為GAN 對訓練數據過擬合,但這只在訓練樣本很少的情況下才會發生[38]。考慮到應用場景多樣化的情形,評價指標的設計也應該多樣化,同時最大化保持模型性能。
如上所述,GAN是一個非常神奇的生成模型,它可以根據任意噪聲向量z生成逼真的數據,且無需知道數據真實分布,也無需任何數學假設。這些特性使得GAN 身影遍布諸多領域。本章將討論GAN 在幾個領域中的應用。
4.1.1 圖像翻譯
圖像到圖像的翻譯是一種無監督學習,用于將圖像從一種表示轉換成另一種表示。傳統方式是利用每個像素的分類或回歸。在這些方法中,每一個輸出像素都是針對整個輸入圖像進行預測,并獨立于先前輸入圖像的所有像素,導致圖像的大部分語義丟失。為了解決上述問題,文獻[43]提出了基于cGAN 架構的像素到像素的構架(pix2pix),該體系結構可以在圖像到圖像翻譯應用程序中生成真實的高分辨率圖像。與舊的GAN模型相比,它還允許創建更高分辨率圖像(256×256)。圖10展示了pix2pix 的性能。在pix2pix 架構中,生成器和鑒別器分別受到U-Net[44]和PatchGAN[45]的啟發。此體系結構中的兩個網絡使用的都是卷積神經網絡。在PatchGAN中,對所有圖像進行分類是一步進行的,而在pix2pix 的鑒別器中,取而代之的是每個圖像首先被分成n×n個patch。然后,對于每個patch分別預測圖像是真的還是假的。最終,通過平均所有響應來執行最終分類。

圖10 pix2pix生成的圖像Fig.10 Image generated by pix2pix
4.1.2 圖像合成
人臉生成以及人臉識別被廣泛應用,盡管已有研究提出基于數據的深度學習來達到目的,但是該領域仍然具有一定的挑戰性。由于人類視覺對面部畸形和變形很敏感,因此生成逼真的面部圖像并非易事。GAN 已被證明能夠生成具有精致紋理的高質量人臉圖像。
雙路徑GAN(two-pathway generative adversarial network,TP-GAN)[46]可以使用側面輪廓圖像生成高分辨的正面圖像(如圖11)。這種技術可以像人類一樣考慮局部和全局信息,該方法生成的人臉圖像很好地保留了個人身份的很多特征。它還可以處理不同模式和光照下的多幅圖像并且具有雙路徑架構。訓練全局生成器生成面部標記(標記點)周圍的細節。

圖11 TP-GAN基于側面輪廓合成正面人臉圖像Fig.11 TP-GAN synthesizes front face image based on side contour
4.1.3 圖像修復
圖像修復試圖重建圖像中丟失的部分,使讀者無法察覺重建的區域。這種方法通常用于從圖像中刪除不需要的對象或恢復圖像中損壞的部分。在傳統的技術中,圖像中的孔洞是通過復制原始圖像的像素或圖像庫來填補的。基于深度學習的方法在恢復圖像中丟失的區域取得了良好的結果。這些方法可以創建可接受圖像結構和紋理。其中一些使用卷積網絡的技術,在用正確的特征填補空白方面表現不佳。因此,開發了生成模型以找到訓練過程中已知的正確特征。第一種基于GAN 的圖像恢復方法是上下文編碼器[47]。該方法基于編碼器-解碼器架構進行訓練,以根據圖像語義推斷圖像中任意缺失的大區域。盡管如此,在這種方法中,全連接層無法存儲準確的空間信息。上下文編碼器有時會創建與孔周圍區域成比例的模糊紋理。文獻[48]將“風格遷移”的思想和上下文編碼相結合。但是,該模型不足以用復雜的結構填充缺失的區域。圖12顯示了該方法和上下文編碼器的示例結果。

圖12 Context encoder與PatchGAN生成圖像比較Fig.12 Comparison of images generated by Context encoder and PatchGAN
文獻[49]提出了一種基于GAN的圖像恢復方法,該方法與全局和局部環境兼容。輸入是帶有附加二進制掩碼的圖像,以顯示缺失的孔。恢復圖形的輸出具有相同的分辨率。生成器采用編碼器-解碼器架構和擴展卷積層而不是標準卷積層來支持更大的空間[50]。并且由兩個判別器,一個能夠捕獲整個圖像作為輸入的全局判別器和一個能夠覆蓋小區域的孔作為輸入的局部判別器。這兩個判別器網絡確保生成的圖像在“全局”和“局部”尺度上都是兼容的,這使它能夠恢復任意孔洞的高分辨率圖像。
生成離散值的GAN變體大多借用了RL(reinforcement learning,RL)的策略梯度算法,以規避離散值的直接反向傳播。為了輸出離散值,生成器作為一個函數,需要將潛在變量映射到元素不連續的域中。然而,如果將反向傳播作為另一個連續值的生成過程,判別器會穩定地引導生成器生成類似真實的數據,而不是突然跳到目標離散值。因此,生成器的這種微小變化不能輕易地尋找有限的真實離散數據源[51]。此外,在生成音樂或語言等序列時,需要逐步評估部分生成的序列,衡量生成器的性能,這也可以通過策略梯度算法來解決。
4.2.1 音樂
當生成音樂時,需要一步一步地生成音樂的音符和音調,而這些元素不是連續的值。一種簡單而直接的辦法是連續RNN-GAN(C-RNN-GAN)[52],它將生成器和判別器建模為具有長-短期記憶(long short term memory)[53]的RNN,直接提取整個音樂序列。然而,如上所述,只能評估整個序列,而不是評估部分的序列此外,它的結果不是非常令人滿意,因為它不考慮音樂元素的離散屬性。
相反,序列GAN(sequence generative adversarial network,SeqGAN)[51]和Lee 等人[54]使用了策略梯度算法,無需一次生成整個序列。它們將生成器的輸出作為代理的策略,并將判別器的輸出視為獎勵。選擇帶有鑒別器的獎勵是一種常規操作,因為生成器的作用是從判別器中獲得大的獎勵,類似于代理學習在強化學習中獲得的較大獎勵。
4.2.2 語言和語音
RankGAN(ranking generative adversarial network)[55]提出了語言(句子)生成方法和排名器而不是傳統鑒別器。在自然語言處理中,除了真實性之外,還需要考慮自然語言的表達能力。因此,RankGAN 在生成句子和人工編寫的參考句子之間采用了相對排名概念。生成器嘗試將其生成的語言樣本排名靠前,而排名器評估人類編寫句子的排名分數高于機器編寫的句子。由于生成器輸出離散符號,它同樣采用類似于SeqGAN 和ORGAN(objective reinforced generative adversarial network)[56]的策略梯度算法。在RankGAN中,生成器可以解釋為預測下一步符號的策略,并且可以將等級分數視為給定過去生成序列的值函數。
可變自動編碼Wasserstein-GAN(variatio-nalautoencoding Wasserstein GAN,VAW)[57]作為一種語音轉換系統,結合了VAE 和GAN 框架。其編碼器推斷出源語音的語音內容z,解碼器則根據目標說話人的信息y合成目標語音,類似于條件VAE。由于高斯分布的假設過于簡單,VAE 會產生尖銳的結果。為了解決這個問題,VAW-GAN 與VAEGAN[12]合并了WGAN[11]。通過將解碼器分配給生成器,它的目標是在給定說話人表示的情況下重建目標語音。
半監督學習在既有標簽數據又有未標記數據的情況下,通常使用只有一小部分帶有標簽的數據集來訓練模型。
基于GAN的半監督學習方法[35]演示了如何在GAN框架上使用未標記數據和生成的數據。生成的數據分配給一個K+1 類,而1至K類用于標記真實數據。對于標記的真實數據,鑒別器對其正確的標簽進行分類(1到K)。對于未標記的真實數據和生成的數據,它們使用GAN極大極小游戲進行訓練。它們的訓練目標可以表示如下:

其中,Ls和Lus分別代表標記數據和未標記數據的損失函數。因為只有生成的數據被歸為K+1 類,所以可以將Lus視為標準的極小極大博弈。未標記的數據和生成的數據用于告知模型真實數據所在的空間。
4.4.1 信息安全
隨著互聯網的大規模普及,人們在上網的同時自身的隱私數據也時刻面臨巨大的威脅。近年來,由于深度學習在各個領域都取得了不俗的成績,很多學者將GAN 應用于安全檢測和系統防護之中。文獻[58]基于GAN 提出一種新的數據異常檢測方法,該方法不需要較多的異常樣本數據,只要達到數據平衡就能很好地檢測到系統中的異常數據。還有惡意代碼生成器MalGAN[59]和識別惡意網頁的WS-GAN[60]。MalGAN 通過模擬一種可控的透明的攻擊方式進而提升自身系統的防御能力。WS-GAN可以有效地識別惡意網頁,避免自身的數據泄露。
4.4.2 持續學習
深層生成重放[61]將GAN 框架擴展到持續學習領域。持續學習解決多項任務并不斷積累新知識。深度神經網絡中的持續學習會遭受災難性遺忘:當新任務被學習時過去獲得的知識被遺忘。受大腦機制啟發,災難性遺忘可以通過深層生成重放的GAN框架來解決。深層重放模型是一個有深層生成模型(生成器)和任務解決模型(求解器)組成的合作雙模型架構。在這個架構中,該模型通過重發生成的偽數據來保留以前學習過的知識。被稱為scholar模型的生成器-求解器對可以針對需求生成假數據和所需的目標對,當出現新任務時,這些目標對會與新數據共同更新生成器和求解網絡。因此,scholar 模型既可以學習新任務而不忘記自己的知識,還可以在子網絡配置不同的情況下用生成的輸入-目標對訓練其他模型。
4.4.3 疫情防控
自COVID-19大流行以來,已經對公眾的健康構成嚴重的威脅,傳統的CT 掃描雖然對于疫情防控有很好的效果,但是會花費大量的時間[62]。文獻[63]提出一種新穎的算法——CCS-GAN,該算法只需要較少的樣本數據就能高效快速地識別CT掃描分類,大大提高了診斷效率。類似的還有數據同化預測的GAN(DA-PredGAN)[64]和使用輔助分類器進行數據增強的GAN(CovidGAN)[65]。DA-PredGAN 利用生成模型具有的模擬時間向前和向后的能力,對COVID-19在傳播預防和流控具有很好的效果。CovidGAN生成的合成圖像可用于增強COVID-19的檢測性能能,大大加快檢測速度。
自從2014 年Goodfellow 等人把GAN 網絡架構模型首次引入深度學習之中,GAN 便憑借其強大的對抗學習能力,受到廣大科研人員的喜愛,GAN的應用也開始蔓延至各行各業,尤其在計算機視覺方向更是層出不窮。本文首先從架構、目標函數和面臨的挑戰以及應對策略等角度進行了一系列探討,為了應對GAN 面臨的挑戰,從架構和目標函數兩個優化角度進行討論。然后,對目前工作中GAN 性能評估的方法做了詳細的匯總和分析。最后,根據不同的應用場景對GAN 的應用做了詳細介紹。盡管GAN在很多領域取得了令人鼓舞的成就,但是GAN 模型本身以及訓練算法還是有很多的優化空間,實際上GAN在各領域的應用才真正開始,還有很多值得探索和深耕的未知領域。下面對于GAN的探索提出若干展望:
(1)GAN 網絡輕量化。研究人員已經設計出大量優秀的大型神經網絡算法模型。但這些模型都有一個共同的缺點,就是所需的計算量龐大和參數繁多,對于硬件的配置提出了極高的要求,無疑加大了GAN 的應用門檻。這時候GAN網絡輕量化顯得尤為重要。
(2)GAN 與其他模型相結合。隨著GAN 的不斷飛速發展,優點被不斷擴大的同時,其弊端也變得不容忽視,如果可以把GAN 與其他模型相結合,結合二者優點,克服自身缺點,生成魯棒性更強的模型,這將是不錯的選擇。例如:DCGAN是GAN和卷積神經網絡結合而成的,這種模型訓練更加穩定;還有GAN與ViT結合的ViTGAN[66],與NAS結合的autoGAN[67],都是未來值得關注的方向。
(3)GAN理論突破。GAN源自二人博弈理論,由于自身理論缺陷的原因,GAN 的發展一直受到模型崩潰訓練不穩定的困擾,雖然學者們提出了很多方案去解決,但是依然基于這一理論,所以無法從根本上解決這一問題。這個時候思考源頭本身,從理論出發做出突破或許是一個不錯的解決方式,例如,文獻[68]提出的三人博弈提論值得借鑒學習。
(4)GAN 偽造鑒別。隨著GAN 的能力被大家所熟知,其生成的數據甚至于達到以假亂真的地步,如何能夠保證GAN 技術永遠用在正確的地方,而不是被別有用心的人利用,這個值得嚴肅對待,同時也亟需一個答案。