王晟全,陳濟穎,王奕翔,李 昂,4,李 鑫
(1.南京理工大學紫金學院,江蘇 南京 210023;2.中國石油大學(華東) 儲運與建筑工程學院,山東 青島 266580;3.廣西大學,廣西 南寧 530003;4.南京郵電大學 通信學院,江蘇 南京 210003)
無監(jiān)督網(wǎng)絡(luò)是比較火的一個話題,因為它將機器學習中的無監(jiān)督學習領(lǐng)域帶入了新的高度,其中的生成式對抗網(wǎng)絡(luò)是由康奈爾大學的Goodfellow等人提出。對于它的研究,科學家們越來越感興趣,從圖1的英文文獻年發(fā)文量可以看出。
圖1 Generative Adversarial Networks英文文獻年發(fā)文量
對抗生成模型是基于博弈模型的,其中生成模型(Generator)必須與其對手判別模型(Discriminator)競爭。生成模型直接生成假樣本,判別模型嘗試區(qū)分生成器生成的樣本(假樣本)和訓練數(shù)據(jù)中抽取的樣本(真樣本)。生成對抗網(wǎng)絡(luò)(GAN)是一種生成模型,由生成器Generator和辨別器Discriminator組成。生成模型嘗試了解真實數(shù)據(jù)樣本的特征分布,并生成新的數(shù)據(jù)樣本。判別模型是一個二分類器,判別輸入是真實數(shù)據(jù)還是生成的樣本。生成模型和判別模型均可以使用感知機或者深度學習模型。優(yōu)化過程是極小極大博弈(minimax game)問題, 優(yōu)化目標是達到納什均衡,即直到判別模型無法識別生成模型生成的假樣本是真是假[2-3]。
目前,無監(jiān)督網(wǎng)絡(luò)的大部分應(yīng)用都是在計算機視覺領(lǐng)域。其中一些應(yīng)用包括訓練半監(jiān)督分類器,以及從低分辨率圖像中生成高分辨率圖像。在科研中發(fā)現(xiàn),生成模型對于整個網(wǎng)絡(luò)訓練的結(jié)果有著非常大的影響,嘗試了多種改進生成式模型,有了一些改進思想。
在研究前,先了解一下生成隨機網(wǎng)絡(luò)(generative stochastic network,GSN)(Bengio et al,2014)。生成隨機網(wǎng)絡(luò)是去噪自編碼器的推廣,也可以認為是生成式對抗網(wǎng)絡(luò)的前言,其除可見變量(通常表示為x)之外,在生成馬爾可夫鏈中還包括潛變量h。
GSN由兩個條件概率分布參數(shù)化,指定馬爾可夫鏈的一步:
(1)P(x(k)|h(k))指示在給定當前潛在狀態(tài)下如何產(chǎn)生下一個可見變量。這種 “重建分布”也可以在去噪自編碼器、RBM、DBN和DBM中找到[6-10]。
(2)P(h(k)|h(k),x(k-1))指示在給定先前的潛在狀態(tài)和可見變量下如何更新潛在狀態(tài)變量。
去噪自編碼器和GSN不同于經(jīng)典的概率模型(有向或無向),它們自己參數(shù)化生成過程而不是通過可見和潛變量的聯(lián)合分布的數(shù)學形式。相反,后者如果存在則隱式地定義為生成馬爾可夫鏈的穩(wěn)態(tài)分布。存在穩(wěn)態(tài)分布的條件是溫和的,并且需要與標準MCMC方法相同的條件。這些條件是保證鏈混合的必要條件,但它們可能被某些過渡分布的選擇(例如,如果它們是確定性的)所違反。
GSN的原始公式用于無監(jiān)督學習和觀察數(shù)據(jù)的隱式建模,但研究人員可以修改框架來優(yōu)化它。例如,Zhou和Troyanskaya以下列方式推廣GSN,僅在輸出變量上傳播重構(gòu)的對數(shù)概率并保持輸入變量固定。他們成功應(yīng)用該方法對序列蛋白的二級結(jié)構(gòu)進行建模,并將(一維)卷積結(jié)構(gòu)引入馬爾可夫鏈的轉(zhuǎn)換算子中[13-16]。重要的是要記住,對于馬爾可夫鏈的每個步驟,需要為每個層生成一個新序列,并且序列計算其他層(例如下一個層和前一個層)的值的輸入。因此,馬爾可夫鏈不僅僅是輸出變量(與更高的隱藏層相關(guān)聯(lián)),輸入序列僅用于條件化鏈,其中反向傳播使其能夠了解輸入序列如何條件化由馬爾可夫鏈隱式表示的輸出分布。所以這是在結(jié)構(gòu)化輸出中使用GSN的一個例子。
Zhrer和Pernkopf引入了一種混合模型,它通過簡單地添加(使用不同的權(quán)重)受監(jiān)督和無人監(jiān)督的費用的總和重建對數(shù)概率,將監(jiān)督目標(例如上面的工作)和無監(jiān)督目標(例如原始GSN)結(jié)合起來。Larochelle和Bengio之前提出了RBM中的這種混合標準,他們證明了該方案下分類性能的提高。
根據(jù)這樣的特點,可以對任何一種機器學習方法進行改進。對于生成模型,深度生成模型可以通過從網(wǎng)絡(luò)中采樣來有效生成樣本,例如受限玻爾茲曼機(restricted Boltzmann machine,RBM)、深度信念網(wǎng)絡(luò)(deep belief network,DBN)、深度玻爾茲曼機(deep Boltzmann machine,DBM)和廣義除噪自編碼器(generalized denoising autoencoders)。很多網(wǎng)絡(luò)使用的是類似于Sigmoid信念網(wǎng)絡(luò)的一種深度生成模型,如式(1)所示:
(1)
不過文獻中指出問題,生成可見單元的樣本在Sigmoid信念網(wǎng)絡(luò)中是非常高效的,但是在大多數(shù)情況下依然不是十分高效。如果對于給定的可見元,這樣的Sigmoid信念網(wǎng)絡(luò)對隱藏單元的推斷是非常難解的。因為變分下界涉及對包含整個層的團求期望,均勻場推斷也是難以處理的。這個問題一直困難到足以限制有向離散網(wǎng)絡(luò)的普及[11]。
生成模型的神經(jīng)網(wǎng)絡(luò)由三個部分組成,分別是輸入層、隱藏層、輸出層,在這里隱藏層設(shè)置為4個[19]。大致過程如下:
α2=σ2(d(P2))=relu(g(P2))
(2)
(3)建立反卷積層,其卷積核為W4=[5,5,1,64],偏置量是ω4=[w41],反卷積層可通過公式z4=dec(a3,W4,str)+b4計算得出。
(4)在輸出層使用tanh激活函數(shù)激活:
R=tanh(z4)
(3)
生成模型如圖2所示。
圖2 生成模型
正如DCGAN所示,其增加了正則化、去掉了池化層、各層有特定的激活函數(shù),而激活函數(shù)也可根據(jù)所需有所改變。
(1)增加正則化,正則化應(yīng)用到判別模型中,可以大大提高其準確性和訓練速度,但不需要將其應(yīng)用到輸出層中,因為如果輸出層中也使用了正則化,將會大大影響模型的穩(wěn)定。
(2)用卷積層代替池化層可以降低采樣率,并且,在正則化的影響下,模型的訓練速度已經(jīng)大大提高,所以也沒有必要使用池化層了[12-13]。
判別模型如圖3所示。
圖3 判別模型
在MNIST上報告的數(shù)字是測試集上樣本的平均對數(shù)似然性,并且在示例中計算平均值的標準誤差[21]。在TFD上,計算了數(shù)據(jù)集折疊的標準誤差,使用每個折疊的驗證集選擇不同的σ。在TFD上,在每個折疊上交叉驗證σ,并計算每個折疊的平均對數(shù)似然。對于MNIST,將與其他數(shù)據(jù)集的實值(而非二進制)版本進行比較。
結(jié)果報告在表1中,這種估計可能性的方法具有較高的方差,并且在高維空間中表現(xiàn)不佳,但它是所知的最佳方法??梢圆蓸拥还烙嬁赡苄缘纳赡P椭苯哟偈沽藢θ绾卧u估這些模型的進一步研究,這是Goodfellow等人[14]使用的方法。
表1 實值版本比較
圖4展示了訓練后從結(jié)果中抽取的樣本。雖然沒有表示這些樣本比現(xiàn)有方法生成的樣本更好,但可以這樣認為,這些樣本至少與文獻中更好的生成模型競爭,并突出了對抗框架的潛力。
圖4是來自模型中的可視化樣本。樣品是公平的隨機抽取,而不是挑選。與深度生成模型的大多數(shù)其他可視化不同,這些圖像顯示來自模型分布的實際樣本,而不是給定隱藏單元樣本的條件均值。而且,這些樣品是不相關(guān)的,因為取樣過程不依賴于馬爾可夫鏈混合。
圖5、圖6是可視化對抗模型的損失率。
圖5 使用Tensorboard可視化的生成模型損失率
圖6 使用Tensorboard可視化的判別模型損失率
在研究中發(fā)現(xiàn),增加正則化,正則化應(yīng)用到判別模型中,可以大大提高其準確性和訓練速度,但不需要將其應(yīng)用到輸出層中,因為如果輸出層中也使用了正則化,將會大大影響模型的穩(wěn)定。用卷積層代替池化層可以降低采樣率。這樣可以有效地降低損失率,并提高相關(guān)的準確性。其次,在生成式模型中,tanh會比sigmoid更常用,在此引入該激活函數(shù)。綜上所述,改進的無監(jiān)督對抗生成模型具有較好的效果。