徐承志,萬 方
湖北工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,武漢430068
隨著多媒體技術(shù)的發(fā)展和大數(shù)據(jù)技術(shù)的興起,數(shù)據(jù)維度呈爆炸性增長,使得機(jī)器學(xué)習(xí)、圖像處理、模式識別等研究領(lǐng)域的數(shù)據(jù)分析變得越來越困難。為消除上述問題中的維度災(zāi)難,降維操作成為數(shù)據(jù)預(yù)處理中的重要手段。流形學(xué)習(xí)(Manifold Learning)是一類特殊的降維問題[1],自2000 年Science中被首次提出以來,已成為信息科學(xué)領(lǐng)域的研究熱點(diǎn)[2-3]。流形學(xué)習(xí)的觀點(diǎn)認(rèn)為:從局部看,數(shù)據(jù)具有歐氏空間的性質(zhì);從全局看,數(shù)據(jù)是嵌入在一個(gè)更高緯度的流形體上。流形學(xué)習(xí)要消除冗余的緯度,用較低緯度來表示數(shù)據(jù)(降維操作)。降維的依據(jù)是,局部歐氏空間的性質(zhì)在低維空間中得以保留。保留歐氏空間性質(zhì)的一個(gè)主要方式就是保持?jǐn)?shù)據(jù)間的歐氏距離不變,或者說保持?jǐn)?shù)據(jù)間的相對位置不變。
鑒于流形結(jié)構(gòu)的高維嵌入特性,傳統(tǒng)的線性降維方法,如PCA算法[4]、LDA算法[5]等,并不適合流形學(xué)習(xí),而一些基于局部線性假設(shè)的非線性數(shù)值解法則能很好處理這類特殊的降維問題,如基于重建鄰域線性關(guān)系的LLE算法[6]、基于測地距離的Isomap算法[7]、基于重建鄰接圖的LE算法[8]、基于切空間的LTSA算法[9],以及它們的眾多改進(jìn)算法[10]。這些算法的理論基礎(chǔ)都是基于矩陣數(shù)值分析與優(yōu)化的,但隨著深度學(xué)習(xí)在人工智能領(lǐng)域的興起,利用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)降維也成為一種有潛力的研究方向。目前,具有降維效果的神經(jīng)網(wǎng)絡(luò)有,用于聚類和分類問題的自組織映射網(wǎng)絡(luò)SOM[11],用于詞嵌入的跳字模型Skip-gram 和連續(xù)詞袋模型CBOW[12],用于特征提取的有損壓縮網(wǎng)絡(luò)自編碼器Autoencoder[13],以及基于共享權(quán)值的孿生網(wǎng)絡(luò)[14](Siamese Network)。上述神經(jīng)網(wǎng)絡(luò)通過不同的方式實(shí)現(xiàn)了傳統(tǒng)領(lǐng)域內(nèi)的降維需求,并取得了不錯(cuò)的效果。但是因?yàn)榱餍谓Y(jié)構(gòu)的特殊非線性,鮮有神經(jīng)網(wǎng)絡(luò)直接應(yīng)用于流形學(xué)習(xí),本文嘗試將孿生神經(jīng)網(wǎng)絡(luò)與流形學(xué)習(xí)相結(jié)合,希望為流形學(xué)習(xí)提供一種新的解決方案。
傳統(tǒng)的基于邏輯回歸的分類網(wǎng)絡(luò),適用于存在大量標(biāo)注樣本的情況,但在某些情況下,比如類別數(shù)量過多或類別數(shù)量不定,且每個(gè)類別的樣本數(shù)量又相對較少時(shí),傳統(tǒng)分類網(wǎng)絡(luò)就不那么有效了,比如判定兩幅圖片是否屬于同一類物品,或兩張人臉是否屬于同一個(gè)人等。為了解決上述問題,Lecun 等人[15]提出了孿生網(wǎng)絡(luò)模型,用于計(jì)算樣本間的差異度。孿生網(wǎng)絡(luò)將數(shù)據(jù)從樣本空間映射到目標(biāo)空間,同類數(shù)據(jù)在目標(biāo)空間中的差異度較小,反之差異度較大。通過計(jì)算數(shù)據(jù)間的差異度,孿生網(wǎng)絡(luò)可以判斷數(shù)據(jù)是否屬于同一類別。一般情況下,孿生網(wǎng)絡(luò)的輸出維度(目標(biāo)空間維度)要小于輸入維度(樣本空間維度),所以從這種角度看,孿生網(wǎng)絡(luò)實(shí)現(xiàn)了數(shù)據(jù)降維。如圖1所示,典型的孿生網(wǎng)絡(luò)包含兩條通道,并且兩條通道的網(wǎng)絡(luò)結(jié)構(gòu)相同、權(quán)值相同,故稱為孿生網(wǎng)絡(luò)。
圖1 孿生網(wǎng)絡(luò)
圖1 中的兩個(gè)子網(wǎng)Network_1 和Network_2 即為兩條通道,它們共享權(quán)值,即是兩個(gè)完全相同的子網(wǎng)。兩條通道各自接收樣本空間中的一對數(shù)據(jù)X1和X2,并分別映射為目標(biāo)空間的GW(X1)和GW(X2)。網(wǎng)絡(luò)輸出的能量值EW(X1,X2) 是一個(gè)非負(fù)數(shù),等于||GW(X1)-GW(X2)||,相當(dāng)于兩個(gè)數(shù)據(jù)在目標(biāo)空間中的差異度。孿生網(wǎng)絡(luò)的另一個(gè)輸入Y代表X1與X2這對數(shù)據(jù)的標(biāo)簽,如果兩個(gè)數(shù)據(jù)屬于同類,則Y為0,并希望EW盡量小,否則Y為1,并希望EW盡量大,當(dāng)兩個(gè)數(shù)據(jù)完全相同時(shí),EW自然為最小值0。為了讓同類型數(shù)據(jù)的差異度小,異類型數(shù)據(jù)的差異度大,孿生網(wǎng)絡(luò)的損失函數(shù)Loss定義如公式(1)和(2)所示:
其中,n是訓(xùn)練的樣本總數(shù),(X1i,X2i,Yi)是第i個(gè)數(shù)據(jù)對,LG負(fù)責(zé)計(jì)算同類樣本的損失函數(shù),LI負(fù)責(zé)計(jì)算異類樣本的損失函數(shù)。為了達(dá)到同類樣本的差異度小,異類樣本的差異度大的效果,需要將LG設(shè)計(jì)成單調(diào)遞增函數(shù),LI設(shè)計(jì)成單調(diào)遞減函數(shù)。
孿生網(wǎng)絡(luò)的通道結(jié)構(gòu)可以根據(jù)問題的需要進(jìn)行不同設(shè)計(jì),比如針對回歸問題可以選擇多層感知機(jī)(MLP)[16]、針對圖像問題可以選擇卷積神經(jīng)網(wǎng)絡(luò)(CNN)[17]、針對時(shí)序問題又可以選擇循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[18]等。同時(shí),差異度的計(jì)算方法也可以靈活選擇,比如余弦相似度、曼哈頓距離、歐氏距離、漢明距離等。最后,損失函數(shù)也可以自由設(shè)計(jì),只要保證優(yōu)化方向符合預(yù)期目標(biāo)就行,比如Lecun[15]就將LG定義為EW的二次項(xiàng)函數(shù)(遞增函數(shù)),把LI定義為EW的負(fù)指數(shù)冪函數(shù)(遞減函數(shù))。
孿生網(wǎng)絡(luò)可以實(shí)現(xiàn)從樣本空間到目標(biāo)空間的降維,但是孿生網(wǎng)絡(luò)是有監(jiān)督學(xué)習(xí),需要樣本標(biāo)簽來引導(dǎo)網(wǎng)絡(luò)訓(xùn)練,而傳統(tǒng)的流形學(xué)習(xí)是無監(jiān)督學(xué)習(xí),為了將孿生網(wǎng)絡(luò)應(yīng)用于流形學(xué)習(xí),需要調(diào)整網(wǎng)絡(luò)的使用方法。
如眾多傳統(tǒng)算法認(rèn)為的,從局部看,流形是線性嵌入在高維空間中的低維結(jié)構(gòu),通過找出所有局部映射關(guān)系,并附加人為約束,最后整體優(yōu)化,即可實(shí)現(xiàn)流形降維,如LLE 算法設(shè)定鄰域樣本的線性組合為當(dāng)前樣本,并以∑Wij=1 為約束進(jìn)行整合[6];LE 算法在降維過程中保持鄰域內(nèi)的鄰接圖關(guān)系,并以YTDY=I為約束進(jìn)行整合[8];LTSA 是對局部空間進(jìn)行PCA 映射,并以TTT=I為約束進(jìn)行整合[9];而LMDS 則是對局部空間進(jìn)行MDS 映射,并以YYT=I為約束進(jìn)行整合[19]。理論上神經(jīng)網(wǎng)絡(luò)具有任意復(fù)雜的模式分類能力和優(yōu)良的多維函數(shù)映射能力,如果神經(jīng)網(wǎng)絡(luò)能夠蘊(yùn)含足夠多的局部映射關(guān)系,并且實(shí)現(xiàn)不同的輸入樣本激活不同的映射關(guān)系,就可以將神經(jīng)網(wǎng)絡(luò)引入流形學(xué)習(xí)。
為了將孿生網(wǎng)絡(luò)引入流形學(xué)習(xí),需要重新設(shè)計(jì)孿生網(wǎng)絡(luò)的損失函數(shù)。將樣本間的空間關(guān)系用歐氏距離來表示,并希望映射到低維空間后,樣本間盡量保持原空間里的歐氏距離。假設(shè)樣本所在的原始空間是R,降維后的子空間是P,采用圖1 中的孿生網(wǎng)絡(luò)結(jié)構(gòu),則樣本在原始空間內(nèi)的歐氏距離表示為dR=||X1-X2||,在子空間內(nèi)的歐氏距離表示為dP=||GW(X1)-GW(X2)||。網(wǎng)絡(luò)訓(xùn)練的目標(biāo)是希望dR與dP的差值盡量小,即降維后空間關(guān)系盡量保持,則可以設(shè)計(jì)網(wǎng)絡(luò)的損失函數(shù)Loss1,如公式(3)~(5)所示:
上述網(wǎng)絡(luò)訓(xùn)練思路與多維縮放算法(MDS)非常相似[20],不同的是,MDS 要保證所有數(shù)據(jù)點(diǎn)在低維空間中的距離等于在高維空間中的距離,而流形學(xué)習(xí)只需要保證鄰域內(nèi)的樣本在低維空間內(nèi)的距離保持不變。因此在構(gòu)建訓(xùn)練集時(shí),只需要選擇鄰域內(nèi)數(shù)據(jù)來構(gòu)建訓(xùn)練樣本。確定鄰域的方法有兩種,第一種是k鄰近法[21],即選擇距離當(dāng)前樣本最近的k個(gè)樣本作為鄰域,第二種是ε鄰域法[22],即選擇與當(dāng)前樣本的歐氏距離在ε以內(nèi)的樣本作為鄰域。傳統(tǒng)流形學(xué)習(xí)算法通常選擇第一種方法來創(chuàng)建鄰域,因?yàn)榈谝环N方法能夠產(chǎn)生固定數(shù)目的鄰域樣本,非常適合進(jìn)行矩陣運(yùn)算與分析。本文則采用第二種方法,訓(xùn)練集對鄰域內(nèi)樣本數(shù)目沒有限制。確定鄰域產(chǎn)生方法后,每個(gè)數(shù)據(jù)與其鄰域數(shù)據(jù)形成一組樣本對,匯總所有數(shù)據(jù)的樣本對,并去掉重復(fù)后,就形成了孿生網(wǎng)絡(luò)的訓(xùn)練集。
后續(xù)工作是確定孿生網(wǎng)絡(luò)中的通道結(jié)構(gòu),即子網(wǎng)結(jié)構(gòu)。孿生網(wǎng)絡(luò)輸入的是高維樣本,輸出的是低維數(shù)據(jù),僅從某側(cè)通道來看,它是一個(gè)解決多元多值回歸問題的模型,對于簡單應(yīng)用可以直接選擇多層感知機(jī)(MLP)作為子網(wǎng)結(jié)構(gòu),如圖2所示。
圖2 孿生網(wǎng)絡(luò)的子網(wǎng)結(jié)構(gòu)
由于流形學(xué)習(xí)是非線性降維,可將子網(wǎng)分為前、中、后三個(gè)部分。最前端是包含線性激活函數(shù)的升維層(increase dimension layer),中間部分是包含非線性激活函數(shù)relu 的過濾層(filter layer),后端是包含線性激活函數(shù)的降維層(reduce dimension layer)。升維層目的是為了讓樣本的特性盡量充分地表達(dá)出來,使得訓(xùn)練效果更好。這個(gè)過程類似支持向量機(jī)(SVM)[23]利用核函數(shù)將輸入數(shù)據(jù)映射到高維特征空間的效果。如果輸入樣本的緯度本來就很高,可以考慮省略這一層。過濾層選擇激活函數(shù)relu 的原因是,relu 能有效克服梯度消失問題,并且計(jì)算速度和收斂速度都很快。更重要的是,relu是單向飽和(負(fù)向飽和),當(dāng)激勵小于0時(shí)輸出為0,當(dāng)激勵大于0 時(shí)輸出則線性增強(qiáng)。單向飽和的直接效果就是,過濾層會產(chǎn)生大量飽和值為0 的“死結(jié)點(diǎn)”,而剩余的“活結(jié)點(diǎn)”才能與后續(xù)的降維層構(gòu)成有效輸出。整個(gè)過程等效于過濾層中的“活結(jié)點(diǎn)”與后端降維層一同構(gòu)成了局部線性映射關(guān)系。孿生網(wǎng)絡(luò)的具體算法如圖3所示。
當(dāng)孿生網(wǎng)絡(luò)訓(xùn)練到一定的程度后,可任選兩條通道中的一條,用作降維映射。圖4呈現(xiàn)了孿生網(wǎng)絡(luò)對于不同曲率的流形結(jié)構(gòu)的降維效果。由于原始空間只有三維,所以子網(wǎng)結(jié)構(gòu)包含1 層線性升維層(100 個(gè)結(jié)點(diǎn)),2層非線性過濾層(各100個(gè)結(jié)點(diǎn))和1層線性降維層(2個(gè)結(jié)點(diǎn))。
當(dāng)流形結(jié)構(gòu)的曲率不大時(shí),如圖4(a)所示,孿生網(wǎng)絡(luò)的降維效果是良好的。但當(dāng)曲率增加時(shí),如圖4(b)所示,會出現(xiàn)子空間內(nèi)重疊的現(xiàn)象。造成這一問題的原因是,設(shè)計(jì)損失函數(shù)時(shí),只考慮了保持鄰近樣本間的距離,而沒有考慮遠(yuǎn)離樣本間的空間關(guān)系,當(dāng)樣本在子空間內(nèi)重疊時(shí),沒有對損失函數(shù)產(chǎn)生明顯的負(fù)面影響。為了讓孿生網(wǎng)絡(luò)具有更好的適應(yīng)性,必須對損失函數(shù)做出改進(jìn)。
圖3 孿生網(wǎng)絡(luò)算法流程圖
圖4 不同曲率下的流形學(xué)習(xí)
要避免降維數(shù)據(jù)在子空間內(nèi)重疊,除了確保鄰域樣本在子空間里依然保持距離,還要確保非鄰域樣本在子空間里也要互相遠(yuǎn)離。為了在損失函數(shù)中體現(xiàn)樣本的遠(yuǎn)離效果,本研究提出了兩級鄰域的概念,一級鄰域的距離是ε1,二級鄰域的距離是ε2(0 <ε1<ε2),如圖5 所示。為此,需要重新引入樣本標(biāo)簽Y,樣本輸入也還原為傳統(tǒng)孿生網(wǎng)絡(luò)的輸入形式(X1,X2,Y)。如果X1與X2距離小于等于ε1,Y取值為0,為正樣本;如果X1與X2的距離大于ε1且小于等于ε2,Y取值為1,為負(fù)樣本。正樣本要保持歐氏距離不變,而負(fù)樣本要保證歐氏距離大于ε1。從流形結(jié)構(gòu)的特點(diǎn)來看,當(dāng)樣本遠(yuǎn)離到一定的程度后,比如超過ε2時(shí),樣本間的歐氏距離變得沒有意義,所以設(shè)置ε2值的時(shí)候沒有必要太大,可以綜合考慮樣本間的平均距離和最大距離來設(shè)定ε1和ε2。
圖5 兩級鄰域內(nèi)的正、負(fù)樣本
為了體現(xiàn)正、負(fù)樣本各自產(chǎn)生的效果,重新設(shè)計(jì)損失函數(shù)Loss2,如公式(6)所示:
下面將改進(jìn)后的孿生網(wǎng)絡(luò)應(yīng)用到經(jīng)典的仿真數(shù)據(jù)(Swiss roll)的降維中。由于Swiss roll 的原始空間僅僅是三維,為了充分表達(dá)樣本蘊(yùn)含的信息,即降低網(wǎng)絡(luò)訓(xùn)練難度,孿生子網(wǎng)的前端設(shè)計(jì)了150 個(gè)結(jié)點(diǎn)的升維層,將3 維輸入映射到150 維空間中。子網(wǎng)的中部是三層各包含了150 個(gè)結(jié)點(diǎn)的過濾層,最后是包含2 個(gè)結(jié)點(diǎn)的降維層。Swiss roll采樣了800個(gè)數(shù)據(jù),數(shù)據(jù)間的平均歐氏距離為0.68。實(shí)驗(yàn)設(shè)置一級鄰域的ε1設(shè)為3.0,二級鄰域的ε2設(shè)為6.0,Loss2中的λ設(shè)為100。訓(xùn)練集中正樣本(距離小于等于ε1的數(shù)據(jù)對)有6 488對,負(fù)樣本(距離介于ε1和ε2之間的數(shù)據(jù)對)有17 123 對,網(wǎng)絡(luò)的學(xué)習(xí)率為0.001。經(jīng)過150 個(gè)周期(epoch)的訓(xùn)練,孿生網(wǎng)絡(luò)的學(xué)習(xí)效果與其他傳統(tǒng)的流形學(xué)習(xí)方法進(jìn)行對比,如圖7所示。
圖7(a)為Swiss roll 在原始三維空間中形狀,圖7(b)~(e)分別是采用LLE、Hessian、LTSA 和Isomap 方法降維后的效果,圖7(f)是孿生網(wǎng)的降維效果。通過降維后的比例尺可以看出,Isomap 和孿生網(wǎng)絡(luò)在降維時(shí),有效保留了流形結(jié)構(gòu)在高維空間內(nèi)的真實(shí)跨度(比例),而其他傳統(tǒng)方法則是附帶人為約束的優(yōu)化問題(見2.1節(jié)),這種約束造成了各維度間的不成比例的壓縮,如圖7(b)~(d)所示,LLE、Hessian 和LTSA 方法將Swiss roll壓縮在一個(gè)長寬大約都為0.2 的矩形區(qū)域內(nèi)。需要注意,各維度不成比例的壓縮,將造成樣本在子空間內(nèi)各維度上的疏密程度不能真實(shí)反應(yīng)高維流形的局部空間關(guān)系,最終導(dǎo)致低維數(shù)據(jù)整體的變形與失真。雖然Isomap 方法在全局尺度上可以較好地保持?jǐn)?shù)據(jù)在空間中的跨度,但是因?yàn)椴捎媒茰y地距離作為計(jì)算的依據(jù),所以在局部結(jié)構(gòu)上會存在變形,特別是當(dāng)數(shù)據(jù)分布不均或存在采樣空洞的情況下,變形將更為明顯。與Isomap不同,孿生網(wǎng)絡(luò)是將高維空間中的歐氏距離盡可能地映射到低維空間中,所以對數(shù)據(jù)分布或采樣空洞不敏感,使得Swiss roll的流形結(jié)構(gòu)在降維后的空間中得以真實(shí)地保留。
圖6 改進(jìn)后的孿生網(wǎng)絡(luò)算法流程圖
圖7 Swiss roll降維效果對比
流形學(xué)習(xí)主要用于流形結(jié)構(gòu)的降維、特征提取或可視化等目的,本章將孿生網(wǎng)絡(luò)用于實(shí)際數(shù)據(jù)的可視化處理中。文獻(xiàn)[24]分析了字符的旋轉(zhuǎn)和縮放數(shù)據(jù)集,證明字符是嵌入高維空間內(nèi)的流形結(jié)構(gòu),本章對scikit-learn手寫數(shù)字集[25]進(jìn)行二維可視化操作。
Scikit-learn 手寫數(shù)字集是8×8 的圖像,樣本空間是64維,具有較高維度,可以省略升維層,而直接添加過濾層和降維層。孿生網(wǎng)絡(luò)的子網(wǎng)結(jié)構(gòu)是包含64個(gè)結(jié)點(diǎn)的輸入層、兩層各包含200 個(gè)結(jié)點(diǎn)的過濾層和包含2 個(gè)結(jié)點(diǎn)的降維層。從手寫數(shù)據(jù)集中選擇0~5這六種數(shù)字,并對每種數(shù)字隨機(jī)選擇50個(gè)樣本,共300個(gè)原始樣本。原始樣本歸一化后,設(shè)置一級鄰域的ε1為2.0,二級鄰域的ε2為3.0,產(chǎn)生3 795個(gè)正樣本和15 006個(gè)負(fù)樣本。Loss2中的λ設(shè)為10,網(wǎng)絡(luò)的學(xué)習(xí)率為0.005。經(jīng)過250 個(gè)周期的訓(xùn)練,孿生網(wǎng)絡(luò)的二維可視化效果與其他傳統(tǒng)方法對比,如圖8所示。
圖8 手寫數(shù)字集降維可視化效果對比
從圖8的實(shí)驗(yàn)結(jié)果來看,LLE、Hessian和LTSA方法雖然有明顯的聚類效果,但是類別的邊界較模糊,個(gè)別類別有明顯的重疊現(xiàn)象。相對的,Isomap和孿生網(wǎng)絡(luò)也有明顯的聚類效果,類別邊界較為清晰。整體來看,經(jīng)過孿生網(wǎng)絡(luò)可視化后,數(shù)據(jù)在空間內(nèi)的分布更加均勻,沒有明顯空間壓縮的痕跡,空間關(guān)系的辨識度較高,這為后續(xù)的數(shù)據(jù)分析打下了良好的基礎(chǔ)。
本文為流形學(xué)習(xí)提供了一種新的研究思路,即通過孿生網(wǎng)絡(luò)的“樣本對”訓(xùn)練方法,實(shí)現(xiàn)能夠保持原有的空間關(guān)系的降維映射。同時(shí),針對孿生網(wǎng)絡(luò)的通道設(shè)計(jì),提出了升維、過濾和降維的三層結(jié)構(gòu),以及兩級鄰域采樣的概念,并設(shè)計(jì)了包含正、負(fù)樣本對的損失函數(shù)Loss2。將該方法運(yùn)用在仿真數(shù)據(jù)(Swiss roll)的流形降維和真實(shí)數(shù)據(jù)(handwritten digits)的二維可視化上,都取得了良好的效果。該方法的優(yōu)點(diǎn)有:(1)對流形結(jié)構(gòu)沒有凸包要求、空洞限制;(2)對數(shù)據(jù)的均勻采樣要求不高;(3)降維設(shè)計(jì)避免了復(fù)雜的數(shù)值分析和添加額外約束;(4)降維過程沒有維度壓縮、還原度高。
同時(shí),用孿生網(wǎng)絡(luò)進(jìn)行流形學(xué)習(xí)也存在局限性與不足:(1)隨著訓(xùn)練集增大、流形結(jié)構(gòu)曲率增加,網(wǎng)絡(luò)結(jié)構(gòu)也更加復(fù)雜,訓(xùn)練難度也在加大;(2)與傳統(tǒng)方法類似,如果數(shù)據(jù)集中引入過多的新數(shù)據(jù),則需要重新進(jìn)行學(xué)習(xí),才能達(dá)到較好的效果。針對前一種局限性,可以考慮優(yōu)化訓(xùn)練集的產(chǎn)生方式,控制訓(xùn)練集的規(guī)模,同時(shí)根據(jù)具體的應(yīng)用,給出子網(wǎng)結(jié)構(gòu)的優(yōu)化方案。針對后一種局限性,可以考慮遷移學(xué)習(xí),即在原有訓(xùn)練好的網(wǎng)絡(luò)基礎(chǔ)上繼續(xù)進(jìn)行新的數(shù)據(jù)集的訓(xùn)練。