劉詩儀, 劉 改, 吳 峰
(西安工程大學(xué) 計算機(jī)科學(xué)學(xué)院, 西安 710699)
機(jī)器學(xué)習(xí)任務(wù)如分類、聚類等的性能很大程度上依賴于數(shù)據(jù)表示的結(jié)果, 表示學(xué)習(xí)將原始數(shù)據(jù)自動轉(zhuǎn)換為能被計算機(jī)處理與運算的特征表示, 現(xiàn)已成功應(yīng)用于語音識別[1–3]、目標(biāo)識別[4,5]和自然語言處理[6,7]等任務(wù). 字典學(xué)習(xí)作為表示學(xué)習(xí)的重要組成部分, 其主要通過為樣本數(shù)據(jù)找到合適的數(shù)據(jù)字典并將原始數(shù)據(jù)轉(zhuǎn)化為稀疏表示形式. 合適的數(shù)據(jù)字典可有效降低數(shù)據(jù)表示的冗余度并提升數(shù)據(jù)的判別性. 稀疏表示中只有少量的元素為非零值, 因此字典學(xué)習(xí)以全新的思想對高維數(shù)據(jù)進(jìn)行壓縮. 字典學(xué)習(xí)因其優(yōu)秀的數(shù)據(jù)特征表示能力和對數(shù)據(jù)內(nèi)在特征的自動提取, 在圖像處理、信號還原、模式聚類和模式識別等領(lǐng)域彰顯出卓越的應(yīng)用效果和價值. 字典學(xué)習(xí)在數(shù)據(jù)特征提取的應(yīng)用上備受關(guān)注, 但由于傳統(tǒng)字典學(xué)習(xí)基于矩陣優(yōu)化而開展,因此學(xué)習(xí)效果受到線性模型形式的限制, 在面對復(fù)雜數(shù)據(jù)時, 無法有效提取出其中的非線性特征.
近些年, 有關(guān)深度學(xué)習(xí)的研究[8–10]表明, 深度學(xué)習(xí)網(wǎng)絡(luò)可以很好地生成非線性數(shù)據(jù)特征表示, 這正是現(xiàn)階段字典學(xué)習(xí)所欠缺的特性. 基于深度神經(jīng)網(wǎng)絡(luò)的算法[9]利用5層的BP神經(jīng)網(wǎng)絡(luò)對圖像進(jìn)行特征提取, 圖像的一個像素對應(yīng)一個神經(jīng)元, 一張圖像由無數(shù)個神經(jīng)元鋪滿, 通過對圖像的逐層卷積計算得到其復(fù)雜的非線性特征. 因此, 研究者集中于字典學(xué)習(xí)與深度神經(jīng)網(wǎng)絡(luò)相結(jié)合的方向.
Yu等[11]提出一種基于擴(kuò)展稀疏模型的圖像識別框架, 卷積神經(jīng)網(wǎng)絡(luò)在樣本數(shù)據(jù)上進(jìn)行的預(yù)訓(xùn)練, 作為特征提取方法與字典學(xué)習(xí)相結(jié)合, 該方法使字典學(xué)習(xí)過多地依賴于卷積網(wǎng)絡(luò)的初始化, 并且采用交替迭代的優(yōu)化方法, 未能形成一個統(tǒng)一的網(wǎng)絡(luò)進(jìn)行訓(xùn)練, 因此所獲得的特征不穩(wěn)定且耗時較長. Lu等[12]提出一種基于圖像集的特征和字典學(xué)習(xí)方法, 從原始人臉圖像集中學(xué)習(xí)判別特征和字典, 從而聯(lián)合利用判別信息進(jìn)行人臉識別, 將全連接層網(wǎng)絡(luò)與字典學(xué)習(xí)算法結(jié)合. 但實驗中所使用的深度卷積網(wǎng)絡(luò)是預(yù)先訓(xùn)練的, 未參與到字典學(xué)習(xí)的訓(xùn)練中, 深度學(xué)習(xí)網(wǎng)絡(luò)僅被用作特征提取的手段, 沒有將其端到端的良好特性應(yīng)用到, 字典學(xué)習(xí)和深度學(xué)習(xí)之間的關(guān)系仍然是獨立的, 沒有表現(xiàn)出兩者之間的內(nèi)在聯(lián)系. 雖然這些方法都考慮到與深度學(xué)習(xí)相結(jié)合, 但它們并未構(gòu)建一個統(tǒng)一的網(wǎng)絡(luò)框架與聯(lián)合的優(yōu)化目標(biāo), 并且忽視深度學(xué)習(xí)非線性映射的重要性, 因此沒有充分利用深度學(xué)習(xí)在特征提取方面的優(yōu)勢.
為解決上述問題, 本文提出DNNDL網(wǎng)絡(luò)模型, 該模型主要解決字典學(xué)習(xí)中非線性特征的提取問題.DNNDL采用端到端的方式聯(lián)合優(yōu)化稀疏表示系數(shù)矩陣與神經(jīng)網(wǎng)絡(luò)參數(shù), 首先將原始數(shù)據(jù)輸入至深度學(xué)習(xí)網(wǎng)絡(luò)獲得數(shù)據(jù)非線性表示, 深度學(xué)習(xí)網(wǎng)絡(luò)的映射作為字典學(xué)習(xí)的輸入通過稀疏約束獲得原始數(shù)據(jù)的近似表示, 稀疏系數(shù)即為數(shù)據(jù)的潛在特征.
本文所提算法涉及字典學(xué)習(xí)和深度學(xué)習(xí), 本節(jié)中分別對其進(jìn)行簡要介紹.
數(shù)據(jù)字典是根據(jù)樣本數(shù)據(jù)的結(jié)構(gòu)學(xué)習(xí)獲得的特征向量矩陣, 該矩陣的列向量為字典的基. 在滿足一定重構(gòu)誤差的條件下, 利用最少的基對數(shù)據(jù)進(jìn)行近似表示,如式(1)所示. 因此要求基應(yīng)具有較強(qiáng)的泛化表示能力, 減少數(shù)據(jù)冗余的同時提升表示質(zhì)量. 在字典學(xué)習(xí)中,基的數(shù)量通常遠(yuǎn)遠(yuǎn)大于待表示數(shù)據(jù)的數(shù)量. 在表示數(shù)據(jù)過程中使用的基越少, 則說明字典可以更稀疏地表示數(shù)據(jù). 因此, 稀疏表示的效果與字典的選擇密切相關(guān).
其中,X∈Rd×n是 原始數(shù)據(jù).D是待學(xué)習(xí)的字典,D∈Rd×k,其中,k是字典基的數(shù)量. Λ是稀疏系數(shù)矩陣, Λ ∈Rk×n.字典學(xué)習(xí)的目的是尋找基的最優(yōu)集合并以盡可能稀疏的方式表示原始數(shù)據(jù), 形式化表示為:
目前存在兩種主流的字典構(gòu)建策略: 分析字典法[13–16]和學(xué)習(xí)字典法[17]. 分析字典法是一種預(yù)先確定的字典方法, 包括超完全離散余弦變換字典[14]和傅立葉字典[15]等. 這些方法易于實現(xiàn), 但數(shù)據(jù)的表示形式簡單且無法實現(xiàn)自適應(yīng), 導(dǎo)致分析字典無法被廣泛用于不同類型與來源的數(shù)據(jù). 通過機(jī)器學(xué)習(xí)策略從給定的數(shù)據(jù)中獲得特定字典的學(xué)習(xí)字典法具有較強(qiáng)的自適應(yīng)能力, 即使面對不同的數(shù)據(jù)集也能學(xué)習(xí)獲得性能優(yōu)秀的字典, 如最優(yōu)方向法[18]、廣義主成分分析算法[19]和K奇異值分解算法(K-singular value decomposition, KSVD)[20]等. 其中K-SVD算法在字典選擇中采用正交匹配追蹤方法, 并在此基礎(chǔ)上獲得稀疏表示Λ. 因其字典更新的獨特性, 該算法有效地提高了從樣本數(shù)據(jù)中學(xué)習(xí)特征表示的能力, 但K-SVD算法側(cè)重于學(xué)習(xí)字典的表示能力而忽略字典的判別能力. Pham等[21]提出半監(jiān)督字典學(xué)習(xí)算法, 通過將類別信息融入優(yōu)化目標(biāo)更好得到樣本數(shù)據(jù)的特性. Yang等[22]提出一種結(jié)構(gòu)字典學(xué)習(xí)算法, 將費舍爾判別法作為稀疏表示約束引入字典學(xué)習(xí), 從而提高圖像識別能力.
隨著深度神經(jīng)網(wǎng)絡(luò)在圖像識別領(lǐng)域的成功應(yīng)用,一些研究人員觀察到深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)所代表的特征更加抽象和緊湊. Singhal等[23]利用深度置信網(wǎng)絡(luò)實現(xiàn)深度學(xué)習(xí)與字典學(xué)習(xí)的結(jié)合. 深度字典學(xué)習(xí)[24]專注于將深度學(xué)習(xí)和字典學(xué)習(xí)范式相結(jié)合, 通過構(gòu)建更深層次的字典學(xué)習(xí)架構(gòu)進(jìn)行數(shù)據(jù)特征提取. 深度字典學(xué)習(xí)通過將單層字典學(xué)習(xí)問題貪婪化轉(zhuǎn)換解決多層字典的學(xué)習(xí), 即使用前一層的表示作為下一層學(xué)習(xí)的輸入雖然將深度學(xué)習(xí)的概念融入到字典學(xué)習(xí)中以提高其性能,但該方法并未重視深度神經(jīng)網(wǎng)絡(luò)中的非線性映射, 多層字典學(xué)習(xí)依舊以線性規(guī)劃為基礎(chǔ).
在深度神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練過程中, 網(wǎng)絡(luò)參數(shù)根據(jù)優(yōu)化目標(biāo)采用梯度下降算法進(jìn)行自適應(yīng)更新. 非線性響應(yīng)函數(shù)的使用可實現(xiàn)數(shù)據(jù)中的內(nèi)在特征表示, 并逐步將初始的低級特征表示轉(zhuǎn)化為高級特征表示. 從而獲得更加抽象和具判別性的特征, 最終建立層次化的特征表達(dá)體系.
由于監(jiān)督學(xué)習(xí)需要大量標(biāo)記數(shù)據(jù), 因此很難應(yīng)用于大規(guī)模數(shù)據(jù)中. 無監(jiān)督學(xué)習(xí)可有效解決該問題, 如自編碼器(autoencoder, AE)[25]. AE通過編碼層高效地計算數(shù)據(jù)特征, 并通過相應(yīng)的解碼層對數(shù)據(jù)進(jìn)行重構(gòu), 在重構(gòu)的過程中就能提取數(shù)據(jù)的內(nèi)在特征. AE在特征學(xué)習(xí)中無需使用任何標(biāo)簽信息, 因此具有更廣泛的應(yīng)用.AE通過對樣本數(shù)據(jù)的非線性映射可以提取出數(shù)據(jù)中最具代表性的特征, 而字典學(xué)習(xí)將大量的冗余特征去除, 只保留與樣本數(shù)據(jù)最相關(guān)的解釋特征, 簡化模型的同時, 保留樣本數(shù)據(jù)中最重要的信息. 因此通過DNNDL網(wǎng)絡(luò)表示的特征可以揭示數(shù)據(jù)中的內(nèi)蘊幾何關(guān)系, 以將每個映射的樣本表示為其他樣本的組合, 降低模型復(fù)雜度.
在本節(jié)將介紹提出的DNNDL方法, 其結(jié)構(gòu)如圖1所示, DNNDL主要由3個部分組成, 編碼器模塊、字典學(xué)習(xí)模塊和譜聚類模塊. 編碼器模塊采用自編碼器中的編碼器部分, 利用編碼器模塊實現(xiàn)從樣本數(shù)據(jù)到低維空間表示的非線性映射. 字典學(xué)習(xí)模塊將編碼器模塊的輸出作為輸入進(jìn)行字典和稀疏表示的學(xué)習(xí), 發(fā)現(xiàn)樣本數(shù)據(jù)隱含的特定結(jié)構(gòu)并提取特征, 最終輸出稀疏系數(shù)矩陣. 譜聚類是通過對樣本數(shù)據(jù)的相似度矩陣[26]的特征向量進(jìn)行聚類, 從而達(dá)到聚類目的. 譜聚類模塊采用譜聚類算法將稀疏系數(shù)矩陣作為數(shù)據(jù)的相似度矩陣進(jìn)行聚類, 得到聚類結(jié)果. DNNDL的優(yōu)化問題包含如下兩個部分.
圖1 DNNDL框架圖
第1部分L1的設(shè)計是為最小化字典和稀疏系數(shù)矩陣重建的表示與原始數(shù)據(jù)之間的重構(gòu)誤差, 從而盡可能地保留原始數(shù)據(jù)的內(nèi)在信息. 同時對稀疏表示矩陣Λ進(jìn)行約束, 使其具有稀疏性. 定義DNNDL的字典損失L1為:
其中,N為輸入數(shù)據(jù)的樣本個數(shù), ‖ ·‖p表示lp范 數(shù), 在機(jī)器學(xué)習(xí)中常采用l1范 數(shù)和l2范數(shù)[27], 本文選用l1范數(shù), 有兩個原因. 一方面,l1范數(shù)表示向量中各個元素絕對值之和, 主要用于產(chǎn)生稀疏權(quán)值矩陣, 符合本文算法對保持Λ稀疏性的要求, 也就是需要Λ中有更少的非零項;另一方面, 在研究l2范數(shù)的評價中, 實驗表明, 它在DNNDL網(wǎng)絡(luò)中的聚類效果相對低于l1范數(shù).
第2部分L2的設(shè)計是為了避免在迭代過程中模型收斂到平凡解, 去除深度神經(jīng)網(wǎng)絡(luò)潛在空間中的任意比例因子, 因此通過增加適當(dāng)?shù)募s束項, 來約束解的范圍.
因此, DNNDL網(wǎng)絡(luò)中的損失函數(shù)形式如下:
其中, λ是一個為正的權(quán)衡參數(shù). 在DNNDL中, 公式中X經(jīng)過編碼器部分獲得. 假設(shè)編碼器部分有M+1層,則有M個非線性變換. 定義網(wǎng)絡(luò)的輸入為h(0)∈Rd, 第m層的輸出如下:
其中,m=1, 2, …,M,h(m)∈Rd(m), 其中d(m)為h(m)的維數(shù).g(·) 是一個非線性激活函數(shù).W(m)∈Rd(m)×d(m-1)和b(m)∈Rd(m)表示深度神經(jīng)網(wǎng)絡(luò)中第m層的權(quán)重和相關(guān)偏差.編碼器部分的輸出就表示為h(M). 具體來說, 本文算法的優(yōu)化問題可以轉(zhuǎn)化為式(7):
上述損失函數(shù)在保證DNNDL表示稀疏性的同時還可以優(yōu)化網(wǎng)絡(luò)對原始數(shù)據(jù)的重構(gòu), 并且解決網(wǎng)絡(luò)中由于平凡解導(dǎo)致網(wǎng)絡(luò)崩潰的問題, 如h(M)=0. 字典學(xué)習(xí)在深度神經(jīng)網(wǎng)絡(luò)的潛在表示空間中進(jìn)行稀疏表示, 而不是在原始數(shù)據(jù)中. 通過在潛在空間進(jìn)行非線性變換,數(shù)據(jù)變得更有利于稀疏重構(gòu). 此外, DNNDL通過反向傳播上述損失函數(shù), 不斷學(xué)習(xí)和優(yōu)化網(wǎng)絡(luò)中的參數(shù). 顯然, 字典學(xué)習(xí)是深度學(xué)習(xí)的補充, 可以在譜聚類中表現(xiàn)出更好的性能.
本文在不同的圖像數(shù)據(jù)集上對所提出的DNNDL算法進(jìn)行實驗, 并從4個聚類性能指標(biāo)方面與6種常用的稀疏表示方法進(jìn)行比較, 驗證本文所提方法的有效性.
The extended Yale B (EYaleB)[28]面部數(shù)據(jù)集由38名被測者在64種不同光照條件下采集的正面面孔圖像組成, 共2 432張圖像, 圖像大小為48×32.
ORL人臉數(shù)據(jù)集[28]包含40名被測者的不同面部表情和不同光照條件下的10張圖像, 每張圖像的像素大小為32×32.
COIL-20物品數(shù)據(jù)庫[29]包含20個不同物品和每個物品的72張不同圖像, 每張圖像的大小為32×32.
COIL-100數(shù)據(jù)集[29]由100個不同物品的圖像組成, 每個物品有72張不同圖像. 圖像的像素大小為32×32.
算法運行環(huán)境: PyCharm2020; 加速環(huán)境: cuda_10.2.89_441.22; 操作系統(tǒng): Windows 10; 深度學(xué)習(xí)框架:TensorFlow 1.15.0; 語言環(huán)境: Python 3.7.
實驗參數(shù): 本文實驗采用Adam優(yōu)化算法. DNNDL網(wǎng)絡(luò)由兩層以修正線性單元[30]為激活函數(shù)的編碼器和字典學(xué)習(xí)網(wǎng)絡(luò)組成. 在編碼器部分, 第1層和第2層節(jié)點數(shù)分別設(shè)為10和20. 第1層的內(nèi)核大小設(shè)置為5×5,第2層的內(nèi)核大小為3×3. 步長固定為2. 選擇用于字典學(xué)習(xí)的原子數(shù)是50個. 損耗函數(shù)L1中的λ1設(shè)為0.5,損耗函數(shù)L2中的λ2設(shè) 為0.25. 學(xué)習(xí)率設(shè)置為1 .0×10-4,模型的訓(xùn)練迭代次數(shù)為700.
評價指標(biāo): 本文采用4種廣泛應(yīng)用于聚類算法的評價指標(biāo)[31]來進(jìn)行對比實驗, 即準(zhǔn)確度(ACC)、歸一化互信息(NMI)、調(diào)整蘭德系數(shù)(ARI)和F值(Fscore). 這4種指標(biāo)的值越高, 表明實驗性能越好.
為了驗證本文算法的性能和有效性, 對比當(dāng)前主流稀疏表示的聚類算法, 來對提出算法性能進(jìn)行驗證.低秩表示(low rank representation, LRR)[32]、低秩子空間聚類(low rank subspace clustering, LRSC)[33]、稀疏子空間聚類(sparse subspace clustering, SSC)[34]、核稀疏子空間聚類(kernel sparse subspace clustering,KSSC)[35]、SSC采用正交匹配追蹤(SSC-OMP)[36]和深度字典學(xué)習(xí)(DDL)[24]方法進(jìn)行對比實驗.
DNNDL在4個數(shù)據(jù)集與其他6種算法的實驗結(jié)果列于表1, 其中以粗體顯示最佳效果. 實驗分析如下.
表1 不同數(shù)據(jù)集上不同算法的聚類結(jié)果對比 (%)
SSC主要思想是假設(shè)高維空間中的數(shù)據(jù)屬于低維子空間, 能夠在低維子空間中對數(shù)據(jù)進(jìn)行線性表示, 從而揭示數(shù)據(jù)所在的本質(zhì)子空間. 然而它卻忽略數(shù)據(jù)的非線性特征, 因此本文提出的融合非線性特征的DNNDL算法可以更好地獲取數(shù)據(jù)復(fù)雜的內(nèi)在特征, 較于SSC性能更好.
DDL專注于將深度學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)用于字典學(xué)習(xí)中, 通過構(gòu)建更深層次的字典學(xué)習(xí)網(wǎng)絡(luò)架構(gòu)進(jìn)行數(shù)據(jù)特征提取. 盡管該方法融入深度學(xué)習(xí)的多層思想, 但并未重視深度神經(jīng)網(wǎng)絡(luò)中的非線性映射, 多層字典學(xué)習(xí)依舊以線性規(guī)劃為基礎(chǔ). 本文方法將深度學(xué)習(xí)和字典學(xué)習(xí)相融合, 可以得到更好的特征提取效果. 通過對比, 可以看出本文提出的模型在ACC、NMI、ARI和F值評價指標(biāo)上有一定的提升, 驗證了DNNDL的有效性. 從表1中可以看出, DNNDL是提取數(shù)據(jù)內(nèi)在特征的更強(qiáng)大的方法, 該方法在聚類應(yīng)用中取得滿意的效果, 深度學(xué)習(xí)和字典學(xué)習(xí)相結(jié)合的策略可以有效地提取數(shù)據(jù)的判別特征.
本文提出一個可訓(xùn)練的端到端的特征學(xué)習(xí)框架DNNDL, 其將AE和字典學(xué)習(xí)進(jìn)行有機(jī)結(jié)合學(xué)習(xí)數(shù)據(jù)的稀疏表示, 并利用譜聚類的結(jié)果驗證數(shù)據(jù)特征學(xué)習(xí)的效果. 本文在4個圖像數(shù)據(jù)集上進(jìn)行了實驗, 以全面評估算法性能. 實驗結(jié)果表明, DNNDL在4組數(shù)據(jù)集上均有較好的聚類性能, 說明該方法能夠有效地提取數(shù)據(jù)的判別性特征. 在未來, 我們將致力于設(shè)計更好的訓(xùn)練策略, 進(jìn)一步提升特征學(xué)習(xí)的效率.