嚴(yán)曉明
1(福建師范大學(xué) 數(shù)學(xué)與信息學(xué)院,福州 350117)
2(數(shù)字福建環(huán)境監(jiān)測(cè)物聯(lián)網(wǎng)實(shí)驗(yàn)室,福州 350117)
變分自編碼器Variational AutoEncoder (VAE)[1]通過(guò)編碼器部分學(xué)習(xí)樣本集分布的期望和方差,提取樣本的統(tǒng)計(jì)學(xué)特征;通過(guò)生成器部分還原樣本,并且能生成與原樣本類(lèi)似的新樣本.和自編碼器AutoEncoder對(duì)比,VAE 提取出的特征反映了原始數(shù)據(jù)集每個(gè)樣本的高斯分布特性,隱變量從單一的向量形式變成了高斯分布的期望和方差,從不易解讀的數(shù)值變成用高斯分布的形式描述.
在無(wú)監(jiān)督學(xué)習(xí)的領(lǐng)域,近年來(lái)國(guó)內(nèi)外學(xué)者對(duì)變分自編碼器改進(jìn)和應(yīng)用進(jìn)行了大量研究:Fabiu 將VAE和RNN 模型結(jié)合,提出了變分循環(huán)自動(dòng)編碼器VRAE,用于提取時(shí)間序列的概率特征,提高RNN 的訓(xùn)練效率[2];鄭欣悅等人用VAE 提取出的特征再結(jié)合注意力機(jī)制模型,用于小樣本圖像的分類(lèi),得到了更好的準(zhǔn)確率[3];曾旭禹等人用VAE 提取數(shù)據(jù)集的分布特征,再結(jié)合概率矩陣分解方法增加推薦系統(tǒng)中不同物品的評(píng)分?jǐn)?shù)據(jù),增加了推薦精度[4];Xie 等人提出的Deep Embedded Clustering (DEC)[5]通過(guò)收斂樣本集基于質(zhì)心的soft assignment 和輔助目標(biāo)分布的KL 距離來(lái)實(shí)現(xiàn)聚類(lèi),在MNIST 數(shù)據(jù)集上的聚類(lèi)準(zhǔn)確率達(dá)到了84.3%.DEC 的聚類(lèi)準(zhǔn)確率較高,但由于用到了堆疊自編碼器來(lái)進(jìn)行特征表示,缺少生成能力,不能生成新樣本.
這些對(duì)變分自編碼器的改進(jìn)和應(yīng)用都直接利用隱變量進(jìn)行后續(xù)的學(xué)習(xí),這對(duì)隱變量是否能最大程度地提取到數(shù)據(jù)集的特征就顯得十分重要.傳統(tǒng)變分自編碼器將樣本數(shù)據(jù)直接作為輸入,對(duì)于非圖像的樣本,這樣做直截了當(dāng),而對(duì)于圖像數(shù)據(jù)來(lái)說(shuō),樣本所表達(dá)信息的結(jié)構(gòu)比較復(fù)雜,如果直接將圖像樣本展平后作為輸入數(shù)據(jù),VAE 中全連接結(jié)構(gòu)不能完全解讀圖像所表達(dá)的信息,得到的隱變量就需要更多的全連接層去學(xué)習(xí)圖像樣本,在數(shù)值上也會(huì)出現(xiàn)一定程度的偏差.本文提出了一種用卷積結(jié)構(gòu)處理樣本集,再由變分自編碼器實(shí)現(xiàn)聚類(lèi)的方法.由于卷積層中的卷積核對(duì)圖像數(shù)據(jù)中的線條,邊緣,形狀等特征進(jìn)行提取,降低了VAE 編碼器理解圖像的難度.實(shí)驗(yàn)結(jié)果表明,用VAE 聚類(lèi)時(shí)采用本文卷積優(yōu)化后的圖像樣本,和原始樣本直接輸入比較,聚類(lèi)準(zhǔn)確率提高20%左右,VAE 中解碼器生成的樣本更加穩(wěn)定,生成樣本的質(zhì)量也得到較大的提升.
變分自編碼器的損失函數(shù)由用來(lái)還原樣本的重構(gòu)損失以及保持樣本多樣性的KL 散度損失兩部分組成.對(duì)于原始樣本集X=VAE通過(guò)最小化重構(gòu)損失使得生成的樣本集接近原始樣本集,這和自編碼器還原樣本的方法是類(lèi)似的.Kingma在文獻(xiàn)[1]中給出了公式:
當(dāng)從隱層所表示的正態(tài)分布中采樣時(shí),由于方差的存在,使得每次采樣的結(jié)果并不總是一個(gè)確定的值,這使得VAE 有了生成能力.隱層特征中的方差不為0,那么每次從隱特征所表示的分布中采樣到的結(jié)果不都是期望,間接確保了生成器的生成能力.Kingma 在文獻(xiàn)[1]中指出,最小化KL 散度損失kl_loss使得編碼器得到的正態(tài)分布接近先驗(yàn)的標(biāo)準(zhǔn)正態(tài)分布,即:
變分自編碼器實(shí)現(xiàn)聚類(lèi)操作時(shí)在損失函數(shù)中加入類(lèi)別損失category_loss并進(jìn)行最小化.首先要根據(jù)數(shù)據(jù)集的類(lèi)別總數(shù)設(shè)置類(lèi)別集合Y={y1,y2,···,yk}.這里把類(lèi)別值看成是分布p(yi),在VAE 模型結(jié)構(gòu)中,增加一個(gè)類(lèi)別編碼器q(yi|xi),類(lèi)別編碼器是一個(gè)從原始樣本集的每個(gè)樣本中得到該樣本類(lèi)別的神經(jīng)網(wǎng)絡(luò),把類(lèi)別編碼器擬合出的條件概率分布q(yj|xj)和 分布p(yi)之間求出它們的KL散度:
由蒙特卡洛模擬法,可得:
其中,yj~q(yj|xj).
最后可以得出類(lèi)別損失函數(shù)為:
在式(6)中,p(yj)是原始樣本集中類(lèi)別的先驗(yàn)分布,由于類(lèi)別總數(shù)是一個(gè)確定值,可以將其看成是均勻分布,則式(6)的后半部分的值為一個(gè)常數(shù).最后的類(lèi)別損失函數(shù)可以簡(jiǎn)化成:
樣本集為圖像時(shí),傳統(tǒng)的VAE 將樣本展平成一維數(shù)組,作為輸入數(shù)據(jù).展平操作后,樣本中鄰近像素點(diǎn)點(diǎn)之間的順序被重新排列,導(dǎo)致這些點(diǎn)之間原本存在的信息被打亂,對(duì)后續(xù)的學(xué)習(xí)不利.本文在VAE 的編碼器前加入多個(gè)卷積網(wǎng)絡(luò),對(duì)圖像樣本先進(jìn)行卷積操作,將卷積的結(jié)果作為編碼器的輸入,同時(shí)在解碼器后加入相應(yīng)的反卷積操作,還原成圖像.
在圖像處理領(lǐng)域,卷積操作應(yīng)用廣泛,在很多深度學(xué)習(xí)模型[6–8]中用到了卷積操作,通過(guò)不同的卷積核對(duì)圖像中的邊緣,形狀等信息進(jìn)行處理,取得了不錯(cuò)的效果.在傳統(tǒng)的VAE 前加入多個(gè)卷積網(wǎng)絡(luò),用不同的卷積核對(duì)圖像中的特征進(jìn)行預(yù)處理后,再作為VAE 的輸入,與采用直接將圖像作為輸入數(shù)據(jù)比較,卷積后的圖像數(shù)據(jù)中包含了更多隱藏在圖像中的不易識(shí)別到的信息,有利于編碼器對(duì)圖像分布特征的提取.本文卷積優(yōu)化的VAE 聚類(lèi)模型如圖1所示.
圖1 帶卷積優(yōu)化的VAE 聚類(lèi)模型
圖1中實(shí)線矩形表示數(shù)據(jù),矩形的高度表示了數(shù)據(jù)維度的大小,虛線矩形為網(wǎng)絡(luò)模型.Con_Layer1 是一個(gè)卷積層,包括一個(gè)卷積層,一個(gè)激活層和一個(gè)池化層,輸入數(shù)據(jù)為原始的樣本;卷積層Con_Layer2 的輸入數(shù)據(jù)為Con_Layer1 的輸出結(jié)果,和Con_Layer1 不同的是,這一層的卷積核的大小和數(shù)量發(fā)生了改變.最后將兩個(gè)卷積層的結(jié)果進(jìn)行拼接,作為VAE 編碼器的輸入數(shù)據(jù),用不同的卷積核來(lái)分析樣本圖像,能最大限度地將圖像數(shù)據(jù)中的特征加以描述,卷積核參數(shù)共享也能大大降低卷積網(wǎng)絡(luò)需要優(yōu)化的參數(shù)數(shù)量.當(dāng)數(shù)據(jù)集中樣本圖像長(zhǎng)寬較大或通道數(shù)較多時(shí),還可以把這兩個(gè)卷積層變成多層的卷積網(wǎng)絡(luò),卷積核參數(shù),激活函數(shù)和池化參數(shù)也可以適當(dāng)調(diào)整.
圖1中的中間數(shù)據(jù)表示解碼器得到的數(shù)據(jù),其維度和拼接后數(shù)據(jù)相同,按Con_Layer1 卷積網(wǎng)絡(luò)所得到的維度截取后,作為與Con_Layer1 對(duì)應(yīng)的反卷積層TranCon_Layer1 的輸入數(shù)據(jù),還原生成樣本.
圖1中類(lèi)別編碼器是一個(gè)多層神經(jīng)網(wǎng)絡(luò),最后一層用Softmax 多分類(lèi)器求得每個(gè)樣本的類(lèi)別,類(lèi)別總數(shù)為原始樣本集中的樣本總類(lèi)別數(shù).求得的類(lèi)別根據(jù)公式7 計(jì)算類(lèi)別損失,加入到損失函數(shù)中,參與總損失的梯度優(yōu)化,不參與隱層的采樣.
本文提出的卷積優(yōu)化的變分自編碼器聚類(lèi)算法步驟如算法1.
算法1.卷積優(yōu)化的變分自編碼器聚類(lèi)算法1)計(jì)算數(shù)據(jù)集的多卷積層拼接數(shù)據(jù).2)構(gòu)造全連接網(wǎng)絡(luò),根據(jù)公式7 求得樣本的類(lèi)別損失.x(i)μ(i)logσ2(i)category_loss 3)構(gòu)造兩個(gè)全連接網(wǎng)絡(luò),擬合樣本 所屬高斯分布的均值 和方差.kl_loss 4)根據(jù)式(3)求.5)從3)得到的高斯分布中采樣,構(gòu)造全連接網(wǎng)絡(luò)根據(jù)式(2)計(jì)算.lossloss reconstruction_loss 6)令總損失 為2),4),5)步中3 個(gè)損失之和,應(yīng)用梯度下降最小化.7)返回2),直到達(dá)到指定的迭代次數(shù).8)通過(guò)反卷積操作得到指定的生成樣本,并計(jì)算聚類(lèi)準(zhǔn)確率.
本文選取手寫(xiě)數(shù)字?jǐn)?shù)據(jù)集MNIST[9]和服飾圖像數(shù)據(jù)集Fashion_MNIST[10]展開(kāi)實(shí)驗(yàn).MNIST 數(shù)據(jù)集包含10 個(gè)類(lèi)別的手寫(xiě)數(shù)字圖像;Fashion_MNIST 數(shù)據(jù)集中樣本總類(lèi)別數(shù)也為10,包含了外套,包,短靴,牛仔褲等不同服飾,與MNIST 數(shù)據(jù)集中的手寫(xiě)數(shù)字比較,Fashion_MNIST 數(shù)據(jù)集中的服飾有著更復(fù)雜的描述對(duì)象,也包含了更多形狀,邊緣等信息.兩個(gè)數(shù)據(jù)集的圖像的大小和樣本數(shù)都相同,分別為28×28 和70 000 個(gè),適合作為驗(yàn)證本文算法使用.實(shí)驗(yàn)環(huán)境的計(jì)算機(jī)配置為:Intel i7 CPU,8 GB 內(nèi)存,Windows 10 操作系統(tǒng),語(yǔ)言環(huán)境為Python.
本文實(shí)驗(yàn)中,將隱層的期望和方差的維數(shù)設(shè)為可調(diào)的參數(shù)s,這兩個(gè)向量的維度相同,測(cè)試期望和方差的維數(shù)大小對(duì)聚類(lèi)正確率以及生成樣本質(zhì)量的影響.將Con_Layer1 和Con_Layer2 都設(shè)置為可調(diào)卷積層數(shù)的卷積網(wǎng)絡(luò),層數(shù)由參數(shù)n指定,卷積網(wǎng)絡(luò)Con_Layer1中所有卷積層的其他參數(shù)均相同:卷積核16 個(gè),大小為3×3,步長(zhǎng)為1,采用零填充的方法,激活函數(shù)為ReLU,采用2×2 的最大池化;卷積網(wǎng)絡(luò)Con_Layer2 的卷積核調(diào)整為32 個(gè),大小為5×5,其它的參數(shù)都和卷積網(wǎng)絡(luò)Con_Layer1 相同.出于代碼實(shí)現(xiàn)上的考慮,通過(guò)對(duì)層數(shù)n值的改變,能方便地實(shí)現(xiàn)卷積網(wǎng)絡(luò)中卷積層數(shù)的變化而其它的參數(shù)不作修改,這樣的實(shí)現(xiàn)方法在VGG16 模型中取得了不錯(cuò)的表現(xiàn).由于公式3 在計(jì)算kl_loss時(shí)包含有方差的對(duì)數(shù)形式,實(shí)驗(yàn)中隱層擬合的正態(tài)分布的方差更換為方差的對(duì)數(shù)形式,由于對(duì)數(shù)函數(shù)值存在負(fù)數(shù),編碼器的全連接網(wǎng)絡(luò)沒(méi)有加上激活函數(shù),層數(shù)設(shè)為1.本實(shí)驗(yàn)中為了驗(yàn)證編碼器全連接層神經(jīng)元總數(shù)對(duì)實(shí)驗(yàn)效果的影響,將其設(shè)為可調(diào)的參數(shù)m.兩個(gè)數(shù)據(jù)集中的70 000 個(gè)樣本,訓(xùn)練集均設(shè)為60 000 個(gè)樣本,其余的樣本作為測(cè)試集.實(shí)驗(yàn)中迭代次數(shù)均設(shè)為50.實(shí)驗(yàn)結(jié)果如表1所示.
表1 實(shí)驗(yàn)結(jié)果
表1中編碼器全連接層中神經(jīng)元總數(shù)m和卷積網(wǎng)絡(luò)中卷積層的層數(shù)n僅列出最好情況下的取值.從表1中可以看出,對(duì)于MNIST 數(shù)據(jù)集,隨著隱層變量維數(shù)的增加,達(dá)到最佳效果的卷積網(wǎng)絡(luò)中的卷積層數(shù)也隨之變少,這是由于隨著正態(tài)分布維數(shù)的增加,編碼器能更好地?cái)M合樣本的分布特征,此時(shí)卷積網(wǎng)絡(luò)可以用較少的層數(shù)對(duì)圖像進(jìn)行卷積操作;與此同時(shí),由于拼接后的輸入數(shù)據(jù)將原始樣本中的信息充分地展現(xiàn),編碼器中的全連接層要用更多的神經(jīng)元個(gè)數(shù)進(jìn)行擬合,最后得到的聚類(lèi)準(zhǔn)確率也會(huì)上升.當(dāng)隱層變量維數(shù)為50,卷積網(wǎng)絡(luò)中卷積層的層數(shù)為1,編碼器神經(jīng)元個(gè)數(shù)在512 時(shí),VAE 的聚類(lèi)正確率就達(dá)到峰值94%左右,較文獻(xiàn)[6]中DEC 算法的84.3%的聚類(lèi)正確率有較大的提升;隱層維數(shù)大于60 后,則出現(xiàn)了過(guò)擬合,聚類(lèi)正確率開(kāi)始下降.
傳統(tǒng)的變分自編碼器對(duì)MNIST 數(shù)據(jù)集的聚類(lèi)實(shí)驗(yàn)中,在隱層維數(shù)為10,編碼器神經(jīng)元總數(shù)為100 時(shí)就達(dá)到了聚類(lèi)準(zhǔn)確率為75%的峰值.對(duì)比這個(gè)結(jié)果,本文提出的經(jīng)過(guò)卷積優(yōu)化的變分自編碼器方法用多個(gè)卷積網(wǎng)絡(luò)對(duì)圖像樣本的卷積操作后再進(jìn)行拼接,能在最大程度上將圖像中的邊緣及形狀等信息通過(guò)不同卷積核進(jìn)行提取,增大了輸入數(shù)據(jù)的維度,比原始樣本展平的方式更適合于自編碼器的學(xué)習(xí),聚類(lèi)準(zhǔn)確率得到了較大程度的提高,效果明顯.同時(shí)隨著拼接后輸入數(shù)據(jù)維度的增大,式(2)計(jì)算所有樣本各個(gè)維度值的均方誤差之和也增大,在表1中損失函數(shù)的結(jié)果值隨之增加.
Fashion_MNIST 和MNIST 的圖像有著同樣的長(zhǎng)寬值,但是圖像中的服飾比手寫(xiě)數(shù)字的面積大,即樣本中的非零元的個(gè)數(shù)多于MNIST,導(dǎo)致了當(dāng)實(shí)驗(yàn)中設(shè)置了相同參數(shù)的情況下,其總損失值更大,這也是該數(shù)據(jù)集的聚類(lèi)準(zhǔn)確率小于MNIST 數(shù)據(jù)集的主要原因.卷積網(wǎng)絡(luò)對(duì)該數(shù)據(jù)集中圖像樣本的處理需要更多的卷積層數(shù),在實(shí)驗(yàn)中,隱層變量維度為60,兩個(gè)卷積網(wǎng)絡(luò)的卷積層數(shù)為5,編碼器的神經(jīng)元總數(shù)為512 時(shí),獲得了最好的聚類(lèi)正確率68%,隨后也出現(xiàn)了過(guò)擬合的情況.傳統(tǒng)的變分自編碼器對(duì)Fashion_MNIST 數(shù)據(jù)集的聚類(lèi)實(shí)驗(yàn)中,在隱層維數(shù)為25,編碼器神經(jīng)元總數(shù)為200 時(shí)就達(dá)到了聚類(lèi)準(zhǔn)確率為55% 的峰值,在服飾數(shù)據(jù)集上,本文方法也得到了更好的聚類(lèi)準(zhǔn)確率.
對(duì)比兩個(gè)數(shù)據(jù)集的實(shí)驗(yàn),取得最好結(jié)果時(shí)VAE 隱層維度都在50 至60 之間,從表1中也可以看到對(duì)Fashion_MNIST 數(shù)據(jù)集達(dá)到最佳效果的隱層維度比MNIST 數(shù)據(jù)集多了10 維.多元高斯分布能描述更復(fù)雜樣本分布,但是隱層維度不能通過(guò)無(wú)限增大的方式來(lái)取得更好的分布結(jié)果,這是由于高斯分布的維度每增加一維,分布的高度就為原分布高度的當(dāng)隱層維度增大到一定數(shù)值時(shí),高斯分布的效果和均勻分布接近,已經(jīng)失去了隱層變量的意義.也就是說(shuō)當(dāng)隱層維度越來(lái)越大時(shí),隱層所表示的分布的高度更趨于0,由于方差越來(lái)越小,VAE 失去了生成能力.
不同卷積核的兩個(gè)卷積網(wǎng)絡(luò)對(duì)輸入數(shù)據(jù)的處理不僅使得聚類(lèi)準(zhǔn)確率得到明顯的提升,同時(shí)也提高了變分自編碼器生成樣本的多樣性.圖2是Fashion_MNIST數(shù)據(jù)集在隱層維數(shù)為60,卷積網(wǎng)絡(luò)的層數(shù)為5 時(shí),本文方法與傳統(tǒng)的變分自編碼器對(duì)于包(Bag)這個(gè)類(lèi)別在樣本多樣性上的對(duì)比,圖3和圖4是相同參數(shù)下的短袖(T-shirt)長(zhǎng)靴(Ankle boot)的對(duì)比,這3 個(gè)圖中左邊均為傳統(tǒng)的變分編碼器的結(jié)果,右邊為本文改進(jìn)VAE在指定參數(shù)下的結(jié)果.
圖2中傳統(tǒng)的VAE 生成樣本中的包基本維持了四邊形的線條,在包的大小,四邊形的兩側(cè)稍有變化;而本文改進(jìn)的VAE 方法中的包變化樣式更豐富并且不改變包類(lèi)別的特征,對(duì)包的提手部分的變化情況也多于傳統(tǒng)的VAE.圖3中右側(cè)樣本在短袖袖口處的變化多于左側(cè),并且在短袖下擺的寬度以及整件短袖大小的變化優(yōu)于傳統(tǒng)VAE 的生成樣本.從圖4中可以看出,傳統(tǒng)VAE 在長(zhǎng)靴樣本的多樣性上體現(xiàn)在長(zhǎng)靴的鞋跟的長(zhǎng)短,鞋幫的粗細(xì)和鞋面的弧度上,這幾個(gè)特征在本文VAE 方法所生成的樣本中更加明顯,并且右側(cè)樣本在保持長(zhǎng)靴類(lèi)別的前提下,在鞋子的形狀和邊緣上有更多的變化.對(duì)服飾數(shù)據(jù)集的實(shí)驗(yàn)中,其他類(lèi)別的樣本也同樣體現(xiàn)了本文方法在生成樣本多樣性上的提升.
圖2 傳統(tǒng)VAE 與改進(jìn)VAE 在包類(lèi)別上多樣性對(duì)比
圖3 傳統(tǒng)VAE 與改進(jìn)VAE 在短袖類(lèi)別上多樣性對(duì)比
圖4 傳統(tǒng)VAE 與改進(jìn)VAE 在長(zhǎng)靴類(lèi)別上多樣性對(duì)比
本文提出了用多個(gè)卷積網(wǎng)絡(luò)優(yōu)化變分自編碼器實(shí)現(xiàn)聚類(lèi)的方法,通過(guò)隱層變量的維數(shù)和卷積網(wǎng)絡(luò)層數(shù)的調(diào)整,在對(duì)MNIST 和Fashion_MNIST 數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果表明,該方法與傳統(tǒng)變分自編碼比較,聚類(lèi)準(zhǔn)確率得到了明顯提高,增加了變分自編碼器生成樣本的多樣性,生成的圖像質(zhì)量更好.