張立,李林,郭春陽,鐘小華
(廣東白云學院機電工程學院,廣州510450)
隨著大數據時代的到來,互聯網上的數據資源越來越多,其中圖片類數據資源為基于大數據集的深度學習算法提供了重要的訓練樣本。2012年Krizhevsky等人提出AlexNet[1]基于卷積運算的深度學習網絡,在ImageNet LSVRC-2010競賽中取得冠軍,并且識別精度高于第二名10.9%,成為卷積神經網絡(convolutional neural network,CNN)在圖像識別領域的重要模型;之后更有VG?GNet系列模型[2]、Inception模型[3]、ResNet系列[4]等優秀的卷積神經網絡不斷刷新ImageNet數據集的成績,更進一步推動深度卷積神經網絡的發展。Ian J.Goodfellow等人于2014年10月提出了通過對抗過程估計生成模型的新框架,即生成式對抗網絡(generative adversarial networks,GAN)[5],作為一種新型無監督學習的方法。2016年Alec Radford等人提出DCGAN[6]模型,將CNN融入到GAN,從大量的無標記數據中學習特征對圖像進行分類,使模型具有較強的表達能力;同年Xi Chen等 人提出Info GAN[7]模 型,將信 息 理論與GAN相結合使輸入樣本更具有可解釋性;2017年Lon Bottou等人提出Wasserstein GAN[8],通過裁剪判別式網絡的梯度,使GAN訓練起來更加容易收斂,生成模型產生的圖片質量更高。目前生成式對抗網絡除了應用在機器翻譯,主要應用于圖像生成,如超分辨率任務、語義分割、數據增強等任務。
生成式對抗網絡是集生成模型和判別模型于一體的機器學習網絡,此模型不依賴先驗假設而完成,網絡結構如圖1所示。生成模型的核心思想是通過已知數據集訓練隨機噪聲從而產生指定大小、風格的圖片,判別模型依據真實數據對生成模型產生的新圖片進行判別,生成模型盡可能的欺騙判別模型,從而形成一個動態博弈[9]的網絡。生成模型生成的偽樣本盡可能與真實數據相似,判別式模型通過交叉熵損失函數對偽數據和真實數據進行計算。交叉熵損失函數如公式(1)所示。

圖1 GAN網絡結構

式中:P(xi)為xi事件發生的概率。
生成式對抗網絡的兩個模型通過損失函數聯系起來,在模型訓練過程中動態調整二者隱藏層的參數,將兩個模型的損失函數之和作為總的損失函數進行訓練。在訓練過程中,D(x)判別輸入數據的真偽并計算相應的概率值,生成式模型G(z)生成的圖片盡可能使D(G(z))的值小,從而V(D,G)也會變得很小,使用實際梯度下降算法作為該損失函數的優化器。

式中:D(x)為判別器,計算圖片為真的概率值,G(x)為生成器,Pdata(x)服從高斯分布。
圖2為GAN模型損失函數和訓練生成圖片,基于GAN模型生成的數據較為模糊,圖片中的噪聲較多;生成式模型和判別式模型的損失函數在訓練過程中不穩定,迭代750~1 000次時損失函數發生較大波動。主要原因是使用交叉熵作為損失函數,不能很好的度量數據分布不一致的數據,使得迭代初期損失函數值較大,影響訓練速度和效果。

圖2 GAN損失函數和生成數據
原始GAN網絡通過生成器模型擬合訓練集的數據真實分布,迭代過程中學習訓練集的邊緣、顏色等語義特征,但是隨機噪聲z與生成圖像的特征是否相關、分布是否一致卻是未知的,致使原始GAN模型不能有效的對卷積運算生成的特征進行編碼。信息最大化生成對抗網絡(information maximizing generative adversarial nets,Info GAN)能夠學習離散數據與連續數據之間的互信息,影響生成器的輸出變量。Info GAN模型把生成器的噪聲分為兩部分,分別是固定噪聲z和隱變量c。隱變量c為先驗概率分布,可以用來生成數據的不同特征。在Info GAN網絡中約束隱變量c,隱變量c對于生成新的數據G(z,c)具有可解釋性,則c與G(z,c)具有較高的相關性。隨機噪聲經過生成器輸出圖片,隱變量c的信息損失大小影響圖片生成的質量,因此在Info GAN模型中,損失函數定義為隱變量c與生成器之間的互信息[10],如公式(3)所示。Info GAN網絡結構如圖3所示。

式中:G、D分別為生成器和判別器,γ為正則化系數。

圖3 Info GAN網絡結構
由圖3可知,隱變量c與噪聲z共同作為生成器的輸入數據,通過變分推斷思想模擬真實數據的分布,迭代計算最優互信息下界實現模擬真實數據分布,在圖向量中保留更多的隱變量c,并在生成器中計算二者的互信息。生成器產生的圖片與真實圖片共同作為判別器的輸入,從而使判別器和生成器同時更新參數,新生成的圖片與真實圖片更加相似。將Info GAN應用在Mnist數據集,其損失函數與生成數據如圖4所示。

圖4 Info GAN損失函數與生成數據
圖4中生成式模型損失函數與判別模型損失函數隨著迭代次數的增加,函數曲線沒有尖銳的抖動,且有逐漸降低的趨勢。生成式模型的損失值分布在0.73~0.97之間,損失值比較小,生成的新數據效果清晰、風格多樣。
WGAN模型對GAN的損失函數進行改進,作者發現交叉熵損失函數不能衡量兩個不相交部分數據的分布距離,導致GAN訓練不穩定。因此作者用李普西斯條件代替交叉熵作為損失函數,將反向傳播更新后的權重強制截斷到一定范圍內,滿足李普西斯連續性條件。WGAN去掉GAN網絡中的激活函數層,并且對生成器和判別器色損失值不再取對數。在一定程度上使GAN模型訓練變得穩定,但是經過剪切后的權重被限制在一定的范圍內,不能充分發揮深出度卷積神經網絡的擬合能力,其權重分布如圖5所示。

圖5 裁剪后的權重分布
WGAN-GP模型與WGAN采用同樣的網絡結構,僅對損失函數進行改進,采用Earth-Mover(EM)距離。WGAN-GP對每一批次中的樣本進行采樣,計算判別器的梯度與其限制梯度k之間建立二范數損失函數,對更新后的權重進行懲罰。WGAN-GP的損失函數如公式(4)所示。

WGAN-GP通過連續性限制條件懲罰梯度,解決訓練模型出現的梯度爆炸問題,比WGAN更容易收斂,增加數據分布的任意性,使生成的樣本質量更高。WGAN-GP損失函數以及生成數據如圖6所示。
WGAN-GP模型的損失函數曲線在迭代初期有較大的波動,隨機噪聲數據分布與訓練數據集的分布不一致,初期損失之較大。迭代過程中出現較大的波動,迭代1500次以后,兩條損失函數曲線趨向收斂,緣于在損失函數增加懲罰權重,使模型保持穩定。生成器產生新的數據較為清晰,但是部分數據訓練不完整,與訓練集中數據相差較大。

圖6 WGAN-GP損失函數與生成數據
深度卷積生成對抗網絡(deep convolutional generative net,DCGAN)模型采用CNN作為Gener?ator和Discriminator的網絡骨架,以CNN作為特征提取,使模型具有更強的表達能力,有效的保留圖向量的語義信息;DCGAN模型更加注重在未標注的數據集上學習有利于數據生成與識別的特征表示,生成的圖片質量更佳。DCGAN網絡結構如圖7所示。

圖7 DCGAN網絡結構
DCGAN模型相對于GAN模型在網絡結構上進行了改進,使用步長卷積代替了上采樣層,卷積可以更好的提取圖像特征,并且網絡采用全卷積形式,舍棄全連接層而提升模型的收斂速度;生成器和判別器的每一卷積層均使用了歸一化函數,提升模型的訓練速度和穩定性;在訓練過程中采用異步訓練方法,固定判別器,模型對生成器進行訓練,使得二者達到動態平衡。使用Adam優化器對損失函數進行優化,其中學習率設置為0.0002達到最好的訓練效果。DCGAN的生成器和判別器分別采用ReLu和Leaky ReLu作為激活函數,減少梯度消失。ReLu和Leaky ReLu激活函數分別如公式(5)、(6)所示。

DCGAN模型在Mnist數據集的損失函數如圖8所示。

圖8 DCGAN損失函數與效果
DCGAN的模型判別模型和損失模型的損失函數隨著迭代次數的增加而出現較大的波動、不穩定現象,損失曲線不穩定即模型未能收斂。右圖為生成式模型產生的新圖片,經過1750次迭代,部分圖片質量較好,部分圖片未能形成真正有效的新數據。
通過對比試驗發現,Info GAN模型的損失函數極值小于1.0,GAN、WGAN-GP、DCGAN等模型的損失曲線極值均大于Info GAN模型的最大值。生成式模型產生的圖片,Info GAN模型產生的圖片較為清晰、噪聲較少,圖片中的數據較為完整。四種模型產生不同效果的圖片,主要源于網絡結構、損失函數的不同。Info GAN通過計算隱變量與生成式模型之間的互信息,直接影響到其輸出,使得模型具有可解釋性,隨機噪聲可以模擬訓練數據集的分布;其余三個模型再網絡結構上較為相似,且損失函數衡量相關性較小的數據集時效果較差,導致損失值和圖片質量不如In?fo GAN模型。因此,基于互信息的損失函數可以使模型損失函數降低,提升模型的訓練效率,生成圖片更清晰、完整。