尹 明 吳浩楊 謝勝利 楊其宇
聚類作為無監督學習的技術[1],是許多領域中常用的統計數據分析技術,如圖像分割、人臉識別、文本分析等.給定一組數據,聚類算法旨在將數據分成若干簇,同一簇內的數據具有相似特征,而不同簇的數據具有較大差異的特征,通常衡量數據相似性可采用某種距離函數,如歐氏距離、閔可夫斯基距離、信息熵等.目前較流行的聚類方法有k均值(k-means)聚類[2]、層次聚類[3]、譜聚類[4]等.然而現實生活中存在高維數據,單獨使用以上方法聚類的效率極低,并且在數據存在噪聲干擾時結果也不夠魯棒.
近年來各國學者發現,雖然高維數據的結構在整個數據空間很難聚類,但高維數據的內在結構通常小于實際維度,并且簇結構可能在某個子空間很容易被觀測到[5].因此,為了聚類高維數據,子空間聚類(Subspace clustering,SC)[6]假定高維空間可分成若干個低維子空間,然后將這些低維子空間中提取的數據點分割成不同的簇[7].子空間聚類目前主要有4 大類:迭代法[8]、代數法[9]、統計法[10]、基于譜聚類的方法[11?16].其中基于譜聚類的子空間聚類一經提出就受到了廣泛的關注,其基本思想是首先計算數據點間的相似性來構建相似度矩陣,然后再采用譜聚類算法[17]獲得最終聚類結果.其中最成功的兩種子空間聚類算法為:稀疏子空間聚類(Sparse subspace clustering,SSC)[11]通過?0范數正則化迫使每個數據由用同一子空間的其他數據點盡可能稀疏地表示,再利用表示系數構建相似度矩陣,所得的相似度矩陣可捕捉到數據的局部結構;低秩子空間聚類(Low-rank representation,LRR)[12]通過核范數正則化來獲得數據的最低秩表示,這樣獲得的相似度矩陣具有數據的全局結構信息.這兩種算法都采用了數據“自表示”機制,有效地刻畫出數據的子空間結構.
另一方面,隨著神經網絡的發展,自動編碼器(Autoencoders,AEs)[18]成為流行的特征學習方法.其通過編碼器將原始數據編碼成一個低維的編碼,然后再通過解碼器把低維的編碼重構回原始數據,這個低維的編碼數據可近視作原始數據的低維表示.2006 年,Hinton 等對自動編碼器進行改進提出深度自動編碼器(Deep autoencoder,DAE)[19],相較于自動編碼器,由于加深了網絡深度的DAE可獲得更魯棒的數據表示.之后,Vincent 等提出了去噪自動編碼器(Denoising autoencoders,DAEs)[20]通過在數據中加入噪聲來進一步提高魯棒性.為了去掉數據的冗余信息,獲得稀疏的數據表示,Bengio 等提出稀疏自動編碼器(Sparse autoecoders,SAE)[21].Masci 等將編碼器和解碼器的全連接層網絡替換為卷積神經網絡提出堆疊卷積自動編碼器(Stacked convolutional autoencoders,CAE)[22]從而減少網絡的參數量.基于自動編碼器網絡在特征學習上的優勢,有研究者將其與聚類[23?24]算法相結合:例如,深度嵌入聚類(Deep embedded Clusterng,DEC)[25],同時進行深度學習與聚類算法(Simultaneous deep learning and clustering,DCN)[23],深度連續聚類(Deep continuous clustering,DCC)[24]以及Ren 等提出基于深度密度的圖像聚類算法(Deep density-based image clustering,DDC)[26]和半監督深度嵌入聚類(Semi-supervised deep embedded clustering,SDEC)[27]等.
在數據表示學習時,我們可以加深網絡深度學習更深層的表示[28],但通常來說網絡并不是越深越好,由于AE 網絡深度過長導致一些信息丟失,尤其是某個特定特征[29?30].為了解決這一問題,注意力模型(Attention model)[30]被提出來.其基本思想是模仿人類的注意力機制,即人類會根據內部經驗、外部感覺從一個龐大的信息快速聚焦于局部信息.其計算可分為兩步:首先對輸入信息計算注意力分布,然后根據注意力分布計算輸入信息的加權平均.采用了自注意力機制的網絡相較于其他特征學習網絡,會忽視無關的背景信息.目前注意力模型主要包括軟注意力模型(Soft attention model)[30?31]、硬注意力模型(Hard attention model)[32]、自注意力模型(Self-attention model)[33]、局部注意力模型(Local attention model)和全局注意力模型(Global attention model)[34]等.
深度學習另一個突破的進展為2014 年Goodfellow 等提出生成對抗網絡(Generative adversarial networks,GAN)[35],由一個生成網絡與一個判別網絡組成,通過讓兩個神經網絡相互博弈的方式進行學習.首先,生成網絡從潛在空間(Latent space)中隨機采樣作為輸入,其輸出結果需要盡量模仿訓練集里的真實樣本.而判別網絡的輸入則為真實樣本或生成網絡的輸出,其目的是將生成網絡的輸出從真實樣本中盡可能分辨出來.最終生成器生成的樣本近似于真實樣本.近些年有學者發現生成對抗模型也可以在聚類分析上起到作用,Chen 等提出的Info-GAN[36]在原本的輸入增加一個新的潛在編碼(Latent code),來控制生成結果,當這個編碼為離散編碼時,該算法具有聚類的作用.Mukherjee 等提出ClusterGAN[37],在Info-GAN 的基礎上增加一個編碼器來對生成器生成的圖像再進行編碼來對輸入的潛在編碼進行約束,從而獲得更好的聚類性能.值得注意的是,Makhzani 在2016 年將自動編碼器和生成對抗網絡相結合的對抗自動編碼器(Adversarial autoencoders,AAE)[38],該算法在半監督分類和無監督聚類均有效果.
盡管上述方法在某種程度上提升了聚類精度,但如何有效地挖掘數據內蘊的子空間結構,獲得更魯棒的數據表示仍待進一步研究.因此,本文擬提出一種基于自注意力對抗機制的深度子空間聚類方法.在包含“自表示”網絡層的深度自動編碼器網絡中,我們引入自注意力機制以捕捉重要特征信息,而且利用對抗網絡增強特征學習的魯棒性.由此,學習到更魯棒的數據子空間結構,獲得更優的聚類結果.歸納而言,本文的主要貢獻為:
1) 提出一種利用對抗機制提升子空間聚類的算法,使得編碼器學習到的特征表示更具有魯棒性;
2) 引入自注意力模型來解決聚類分析中特征學習的長距離依賴問題.
本文章節安排如下:第1 節描述了和基于自注意力對抗的子空間聚類相關的算法,第2 節描述基于自注意力對抗的子空間聚類的網絡結構以及原理,第3 節通過在MNIST,Fashion-MNIST 等數據集實驗并分析,第4 節總結全文,并提出進一步的研究方向.
本文方法是在深度子空間聚類框架中引入自注意力模型和對抗訓練機制的方法,因此,本節將圍繞子空間聚類、自注意力模型和生成對抗網絡進行簡要介紹.
給定一數據集X={x1,x2,···xn} ∈Rd×n,假設這組數據集屬于N個線性子空間子空間維度分別為假設屬于某線性子空間Si的樣本足夠多,且張成整個子空間Si,則Si中的任意一樣本x均能表示為X中除去x的線性組合,即數據集的“自表示”特性[7],則有如下子空間學習模型:

C ∈Rn×n為輸入數據X的自表示系數矩陣,其中Ci為第i個數據Xi由其他數據表示的系數向量.∥C∥p為正則化項,∥·∥p為任意矩陣范數,如稀疏子空間聚類的1-范數∥C∥1[11],低秩子空間聚類核范數∥C∥?[12]和F-范數[39].然后使用譜聚類算法對由自表示系數矩陣構建的相似度矩陣聚類,獲得最終聚類結果.
學者們發現基于自表示方法利用不同的正則化項可以處理受損數據,例如,包含噪聲和異常值的數據,而且自表示系數矩陣呈現出塊對角化的結構,這非常有利于后續的譜聚類[7]處理.因此,如何獲得魯棒的自表示系數矩陣是基于譜聚類的子空間聚類算法的關鍵問題.
然而,上述子空間模型學習到的自表示結構僅適用于線性子空間.另一方面,現實數據常常具有高維的非線性結構,傳統子空間學習受到限制.可喜的是,深度自動編碼器可將數據轉換至一個潛在的低維子空間,捕獲數據的非線性結構,從而獲得數據的低維特征表示.因此與深度神經網絡結合的子空間學習旨在低維特征上學習數據的自表示系數,如深度子空間聚類算法(Deep subspace clustering,DSC)[40].DSC 首先采用深度自動編碼器學習原數據的低維特征表示,然后利用一個由全連接網絡構成的自表示層來學習數據的相鄰關系,該自表示層將神經元連接的權重視為同一子空間中數據樣本之間的相似度.其目標函數表示如下:


圖1 深度子空間聚類網絡結構圖Fig.1 The framework of Deep Subspace Clustering
生成對抗網絡(GAN)通過生成網絡和判別網絡相互博弈以達到納什均衡[35?41],用G表示為生成器,D為判別器,其訓練目標函數為:

式中,E(·) 表示分布函數的期望值,pdata(x) 為真樣本分布,pz(z) 定義低維噪聲分布,log(·) 表示對數運算.V(D,G)為真、假樣本的差異程度,表示當生成器固定時,使判別器最大化地判別出樣本來自于真實數據還是生成的數據,表示當判別器固定時,期望生成器最小化真樣本與假樣本的差異.
在生成對抗模型中,首先由隨機向量或噪聲z通過生成器生成一個假樣本G(z),然后判別器對真樣本x和假樣本G(z) 進行真假判斷.當判別器D對真樣本x甄別越嚴格,D(x) 值也越接近于1,此時logD(x)值也就越接近于0.其標準網絡結構如圖2所示,通常式(3)中判別器損失采用交叉熵損失函數,即通過交叉熵來判別兩個分布的相似性.當目標函數收斂時,生成分布將擬合于真實分布.
由于生成對抗網絡可以將一個生成樣本分布擬合于真實分布,使得其不僅局限于樣本生成,而且任何數據分布均可采用生成對抗網絡來擬合,例如,對抗自動編碼器(AAE)[38]將特征表示分布擬合于標準高斯分布,獲得與變分自動編碼器(Variational autoencoders,VAE)[42]相似的效果.
目前大多數注意力模型嵌入于編?解碼器(Encoder-decoder)框架.通常一個高維的數據通過編碼輸出一個低維的特征表示時,會損失大量的信息,注意力模型可以對不同的數據信息加權平均,因此含有注意力模型的編?解碼器框架會編碼出一個低維且信息損失較少的特征表示.注意力模型的數學表達如下:

其中,s(·) 為計算Q和KT的相似度函數,K=V=fe(·),Q=fd(·) .一般,注意力模型可以抽象為計算輸出信息Q與輸入信息?K,V?的關聯性.
自注意力模型是注意力模型家族中最為廣泛應用的一種.在該模型中K,V與普通注意力模型一樣來自于輸入信息,另一方面為了能直接捕捉到輸入數據矩陣中任意兩個向量的關聯性,Q也源于輸入信息.但注意力模型不局限于編?解碼器框架,例如,自注意力生成對抗網絡(Self-attention generative adversarial networks,SAGAN)[43]中將自注意力模型引入生成對抗網絡,不僅解決卷積結構帶來的感受野大小限制,也使得在生成圖像時,每個局部區域的生成會與全局細節相協調.
盡管現有DSC 算法在一定程度上改善了聚類性能,但其網絡結構的感受野受到限制[43],即過大的通道數導致卷積運算難以捕捉數據不同局部間結構,而且所學習到的數據隱特征分布無法重構具有判別性的樣本.因此,本節提出一種基于自注意力對抗機制的深度子空間聚類算法,在DSC 網絡中引入自注意力模塊,并約束數據特征分布近似于任意的先驗概率.
基于自注意力對抗的深度子空間聚類網絡框架如圖4 所示,為了保證在特征學習過程中長距離依賴,我們在編碼模塊的最后一層卷積網絡后添加一個自注意力模塊.其中自注意力模塊結構如圖3 所示,對前一層網絡的數據通過1×1 的卷積網絡獲得K,V,Q.將K轉置與V相乘并經過softmax 歸一化得到注意力映射,再與Q點積得到最終的自注意力特征映射.在判別網絡中,倒數第二層卷積網絡中輸出的通道數為1 000,由于過大的通道數會導致卷積運算很難處理不同局部間的關系,因此我們在此處也增加一個自注意力模塊.

圖3 自注意力模塊Fig.3 Self-attention module

圖4 基于自注意力對抗的深度子空間聚類網絡框架Fig.4 The framework of self-attention adversarial network based deep subspace clustering
在訓練生成對抗網絡時,由于判別器過于強大很容易導致輸出梯度值為0,即梯度消失,導致沒有足夠的梯度信息去更新生成器.針對生成對抗網絡的梯度消失問題,不少學者對其損失函數進行改進.Arjovsky 等認為式(3)交叉熵的選擇無論是KL-散度還是JS-散度都有其局限,提出Wasserstein GAN (WGAN)[44]采用Earth-mover (EM)距離衡量兩個分布距離,并去掉了對數 log 運算,其生成損失和判別損失函數分開表述如下:

但是,上式中每次更新判別器需要將梯度信息絕對值截斷,不超過某個固定常數來保證判別器的穩定性.因此,WGAN-GP (Improved training of Wasserstein GANs)[45]將梯度截斷作為一個梯度懲罰項加入式(7)中,但這需要滿足Lipschitz 條件才能保證梯度懲罰起作用,而Lipschitz 條件又使得截斷的梯度值趨向于設定的固定常數的負值邊界或者正值邊界.為解決這個問題,Wu 等采用Wasserstein 散度的概念,提出Wasserstein divergence for gans (WGAN-div)[46]擺脫了WGAN-GP 對Lipschitz 條件約束的依賴.
綜合前人研究的GAN 及其變種,我們網絡中生成對抗網絡部分的損失函數[46]構造如下:

其中,Zg=fe(X) 為輸入數據的特征表示.如圖4所示,在生成對抗網絡結構中,編碼模塊可以視為一個生成模塊,用于生成特征表示.
因此從生成對抗網絡的角度看,Zg為假樣本,真樣本Zr來自于一個先驗分布的采樣,該先驗可以服從標準高斯分布、混合高斯分布等.將真假特征同時輸入至判別器網絡,通過博弈訓練使得生成器生成的特征分布結構趨向于設定的先驗分布的結構,導致解碼器能夠將采用自先驗分布p(z) 的樣本生成為觀測數據,從而提高特征學習的魯棒性,增加網絡的抗干擾能力.
考慮引入了生成對抗網絡,我們對式(2)改寫如下:

相比于式(2),上式中的特征表示已經過生成對抗網絡優化,具有先驗分布的結構特性.
此外,除自注意力模塊外,我們還增加了一個殘差模塊來加深網絡的深度.由于殘差模塊是深度神經網絡內部的一部分,網絡的損失函數保持不變.引入殘差模塊后,自注意力模塊的輸出與殘差模塊的輸出相加作為下一個神經網絡單元的輸入.其中殘差模塊為兩個卷積核大小為3×3 的卷積網絡,卷積步長為1.
結合聚類和生成對抗機制,網絡的總體損失函數為

在訓練生成對抗網絡時,通過生成損失和判別損失迭代訓練來達成彼此互相更新.因此,首先最小化(8)的損失來獲得特征表示,然后再通過最小化判別損失和生成損失優化特征表示,以epoch 作為一個訓練次數,反復迭代訓練三個損失函數達到穩定.綜上所述,我們的網絡訓練步驟如下:λ2,λ3
輸.入.數據集X,學習率η,以及超參數λ1,
步驟 1.依據式(8)求得特征表示Zg.
步驟 2.依據式(7) 判斷Zg與Zr之間的相似性,并由式(6)優化Zg.
步驟 3.依據式(8)更新Zg.
步驟 4.重復步驟1~ 步驟 3,直到達到最大epoch 值為止.
輸出.自表示系數C.
一旦完成網絡訓練,將學習到數據的相鄰關系,最后利用譜聚類對C進行聚類,獲得數據的聚類結果.
本實驗是基于Python 編程語言進行仿真,操作系統為Ubuntu,主要軟件架構為TensorFlow 1.0,配置CUDA 8.0 和cuDNN 5.1,使用4 塊英偉達GPU GTX 1080Ti.
為了驗證所提算法的有效性,我們在5 個公開的數據集上進行了實驗,兩個手寫數字數據集MNIST[47]和USPS,一個物品數據集COIL-20[48],一個人臉數據集Extended Yale B[49](下文統稱YaleB)以及一個衣服數據集Fashion-MNIST (下文統稱FMNIST).數據集的詳細信息見表1 所示.

表1 數據集信息Table 1 Information of the datasets
針對5 個數據集,我們的實驗參數如表2 所示.其中,λ1和λ2分別為對自表示項和正則化項貢獻度的權重參數,為了方便調參,我們令λ1=1 .此外,在實驗過程中,我們發現式(7)中的參數λ3對結果影響式微,可能是生成對抗網絡中只要存在梯度懲罰便可使網絡穩定.

表2 參數設置Table 2 Parameter setting
實驗中編碼器網絡結構為三層卷積網絡,解碼器和編碼器的網絡結構對稱,Fashion-MNIST 編碼器為一層卷積網絡和三個殘差模塊,解碼器也保持對稱,COIL-20 僅用一層卷積網絡,卷積網絡具體參數如表3 所示.

表3 網絡結構參數Table 3 Network structure parameter
所有實驗中判別器網絡采用三層卷積網絡,均為1×1 的卷積核,以便增加通道的信息交互,其通道數為[1 000,1 000,1].同時,我們將自注意力模塊加在判別器網絡的倒數第二層以增加1 000 個通道特征的長距離依賴.對于算法的預訓練,大多數以自動編碼器為架構的深度聚類算法均采用了自動編碼器來進行預訓練.但由于本文算法引入了生成對抗網絡,為了避免判別器初始訓練過于強大而干擾特征學習,因此我們使用對抗自動編碼器(AAE)進行預訓練.
所有實驗采用Adam[50]優化,在激活函數的選擇上,除YaleB 采用leaky relu 外,其他幾個數據集均采用relu,式(8)學習率設置為0.0001,動量因子為0.9,式(6)和(7)學習率為0.0001,動量因子為0.9,batchsize 為表1 中對應的樣本數量.
為了評估我們算法的優越性,我們采用兩個常用的度量方法:聚類精度(ACC) 和標準互信息(NMI)[51]來作為聚類的效果.

式(11) 中,I(·) 表示為互信息,即兩個隨機變量的相關程度,H(·) 為熵,A與B分別表示聚類的標簽和正確標簽,其中I(A,B)=H(A)+H(B)?H(A,B).
在實驗中,本文采用了與所提出算法相關的深度聚類方法進行實驗結果對比,其中包括:Struct-AE[52]、DASC[53]、DCN、DSC 及DEC.實驗結果如表4 所示,實驗數據均為重復30 次的平均值,其中加粗數字表示最優值.因StructAE 與DASC 作者沒有開源代碼,其實驗數據為引用自原論文.此外,由于其沒有在FMNIST 和USPS 上進行實驗,因此在這兩個數據集上無實驗數據對比.DSC 在數據集YaleB、COIL-20、MNIST 的實驗結果引用其論文,而在FMNIST 和USPS 的實驗結果為我們測試所得.DEC 與DCN 在YaleB 和COIL-20 上的實驗結果為我們測試,其余引用原論文結果.其中DEC 在YaleB 的實驗結果過于不合理,我們多次調節網絡參數均無明顯改變,因此DEC 在YaleB無測試結果,用“*”表示.
從表4 可看出,我們算法在ACC 和NMI 指標上均優于其他6 個深度聚類算法,通過DSC-L1、DSC-L2 和我們算法結果對比可看出經過自注意力生成對抗網絡學習到的特征表示在聚類上可以獲得更好的結果,例如,在MNIST 數據集上,我們的算法相比于次優DEC 的ACC 和NMI 分別提高了0.1110 和0.1281.DEC 在YaleB 上的結果與DCN在COIL-20 上結果欠佳是因為其沒有自表示結構,沒有很好地捕捉數據之間的關聯性.DSC、DASC以及我們的算法均含有自表示結構,因此在部分數據上性能要優于DEC 和DCN.為了探討我們生成對抗網絡的穩定性,因此我們對MNIST 的訓練損失可視化.如圖5 所示,可看出生成損失和判別損失存在對稱性,表明式(5)中的梯度懲罰項是的網絡中生成器和判別器的相互博弈均衡,不存在一方過于強大的現象.此外,本文算法的網絡訓練損失曲線呈現逐漸下降的走勢,且最終趨向平緩,表明在自表示系數學習過程中,網絡穩定,損失函數收斂,并沒有因生成對抗損失的引入導致存在不穩定現象.此外DSC 網絡中相較于SAADSC 沒有自注意力模塊和對抗網絡,我們選擇了DSC-L2 的結果進行對比,可發現增加自注意力模塊和對抗網絡后,算法在聚類精度和標準互信息上均有所提高.

圖5 MNIST 的網絡訓練損失Fig.5 The loss function of SAADSC during training on MNIST

表4 5 個數據集的實驗結果Table 4 Experimental results of five datasets
為了探討不同先驗分布對結果的影響,我們選擇三種不同的分布在三個數據集上進行實驗對比.如表5 所示,高斯分布取得最優的結果,這是因為當樣本容量無限大的時候,數據的樣本分布趨向于高斯分布.其次,高斯分布的熵值很大,當數據分布未知時選擇熵值最大的模型效果會更好.

表5 不同先驗分布的實驗結果Table 5 Clustering results on different prior distributions
為了評估所提出網絡中每個模塊的作用,我們分別對其進行測試,Test1 表示去掉自注意力模塊及殘差模塊后的網絡;Test2 為去掉自表示層的網絡,通過譜聚類算法對構成的鄰接矩陣進行聚類;Test3 為排除自表示層后使用K-means對Zg聚類;Test4 排除了網絡中殘差模塊.實驗結果如表6 所示,我們可以看出殘差模塊對網絡貢獻力度最小,自表示層作用最大,其次是自注意力模塊.由于自表示層構建數據之間的線性表示,通過自表示層獲得的系數矩陣反映了類內數據的關聯性和類間數據的不相關性.

表6 SAADSC 網絡中不同模塊的作用Table 6 Ablation study on SAADSC
另外,為了測試我們的特征表示相比于深度子空間聚類算法是否更具有魯棒性,針對COIL-20和USPS 數據集我們進行了噪聲測試.具體而言,將對應百分比的像素點替換為隨機的高斯噪聲,采用算法DSC-L1、DSC-L2 和DASC 進行對比,因DASC 代碼沒開源,因此其在USPS 噪聲實驗中,無對比數據.且由于DASC 采取柱狀圖進行對比,因此表7 中COIL-20 的實驗數據為對其論文柱狀圖的近似估計.其余均為測試結果.實驗結果如表7和表8 所示.可看出,DSC-L1 和DSC-L2 隨著噪聲越大結果下降越明顯,而DASC 和SAADSC 由于引入生成對抗網絡使得算法具有抗干擾能力.相較于DASC,我們的網絡的自注意力機制會在生成對抗學習過程中起到積極作用,從而提升了算法的抗干擾能力.

表7 含有噪聲的COIL-20 聚類結果Table 7 Clustering results on the noisy COIL-20

表8 含有噪聲的USPS 聚類結果Table 8 Clustering results on the noisy USPS
針對現實數據結構復雜、如何獲得更魯棒的數據表示以便改善聚類性能問題,本文提出一種基于對抗訓練的深度子空間聚類,利用對抗網絡的博弈學習能力使得編碼器網絡學習到的特征表示服從預設定的先驗分布特性,而且引入自注意力機制和殘差網絡模塊,來增強特征學習的魯棒性,從而提升聚類性能.實驗結果表明,本文算法結在精確率(ACC)和標準互信息(NMI)等指標上都優于目前最好的方法.