劉詩儀, 劉 改, 吳 峰
(西安工程大學 計算機科學學院, 西安 710699)
機器學習任務如分類、聚類等的性能很大程度上依賴于數據表示的結果, 表示學習將原始數據自動轉換為能被計算機處理與運算的特征表示, 現已成功應用于語音識別[1–3]、目標識別[4,5]和自然語言處理[6,7]等任務. 字典學習作為表示學習的重要組成部分, 其主要通過為樣本數據找到合適的數據字典并將原始數據轉化為稀疏表示形式. 合適的數據字典可有效降低數據表示的冗余度并提升數據的判別性. 稀疏表示中只有少量的元素為非零值, 因此字典學習以全新的思想對高維數據進行壓縮. 字典學習因其優秀的數據特征表示能力和對數據內在特征的自動提取, 在圖像處理、信號還原、模式聚類和模式識別等領域彰顯出卓越的應用效果和價值. 字典學習在數據特征提取的應用上備受關注, 但由于傳統字典學習基于矩陣優化而開展,因此學習效果受到線性模型形式的限制, 在面對復雜數據時, 無法有效提取出其中的非線性特征.
近些年, 有關深度學習的研究[8–10]表明, 深度學習網絡可以很好地生成非線性數據特征表示, 這正是現階段字典學習所欠缺的特性. 基于深度神經網絡的算法[9]利用5層的BP神經網絡對圖像進行特征提取, 圖像的一個像素對應一個神經元, 一張圖像由無數個神經元鋪滿, 通過對圖像的逐層卷積計算得到其復雜的非線性特征. 因此, 研究者集中于字典學習與深度神經網絡相結合的方向.
Yu等[11]提出一種基于擴展稀疏模型的圖像識別框架, 卷積神經網絡在樣本數據上進行的預訓練, 作為特征提取方法與字典學習相結合, 該方法使字典學習過多地依賴于卷積網絡的初始化, 并且采用交替迭代的優化方法, 未能形成一個統一的網絡進行訓練, 因此所獲得的特征不穩定且耗時較長. Lu等[12]提出一種基于圖像集的特征和字典學習方法, 從原始人臉圖像集中學習判別特征和字典, 從而聯合利用判別信息進行人臉識別, 將全連接層網絡與字典學習算法結合. 但實驗中所使用的深度卷積網絡是預先訓練的, 未參與到字典學習的訓練中, 深度學習網絡僅被用作特征提取的手段, 沒有將其端到端的良好特性應用到, 字典學習和深度學習之間的關系仍然是獨立的, 沒有表現出兩者之間的內在聯系. 雖然這些方法都考慮到與深度學習相結合, 但它們并未構建一個統一的網絡框架與聯合的優化目標, 并且忽視深度學習非線性映射的重要性, 因此沒有充分利用深度學習在特征提取方面的優勢.
為解決上述問題, 本文提出DNNDL網絡模型, 該模型主要解決字典學習中非線性特征的提取問題.DNNDL采用端到端的方式聯合優化稀疏表示系數矩陣與神經網絡參數, 首先將原始數據輸入至深度學習網絡獲得數據非線性表示, 深度學習網絡的映射作為字典學習的輸入通過稀疏約束獲得原始數據的近似表示, 稀疏系數即為數據的潛在特征.
本文所提算法涉及字典學習和深度學習, 本節中分別對其進行簡要介紹.
數據字典是根據樣本數據的結構學習獲得的特征向量矩陣, 該矩陣的列向量為字典的基. 在滿足一定重構誤差的條件下, 利用最少的基對數據進行近似表示,如式(1)所示. 因此要求基應具有較強的泛化表示能力, 減少數據冗余的同時提升表示質量. 在字典學習中,基的數量通常遠遠大于待表示數據的數量. 在表示數據過程中使用的基越少, 則說明字典可以更稀疏地表示數據. 因此, 稀疏表示的效果與字典的選擇密切相關.

其中,X∈Rd×n是 原始數據.D是待學習的字典,D∈Rd×k,其中,k是字典基的數量. Λ是稀疏系數矩陣, Λ ∈Rk×n.字典學習的目的是尋找基的最優集合并以盡可能稀疏的方式表示原始數據, 形式化表示為:

目前存在兩種主流的字典構建策略: 分析字典法[13–16]和學習字典法[17]. 分析字典法是一種預先確定的字典方法, 包括超完全離散余弦變換字典[14]和傅立葉字典[15]等. 這些方法易于實現, 但數據的表示形式簡單且無法實現自適應, 導致分析字典無法被廣泛用于不同類型與來源的數據. 通過機器學習策略從給定的數據中獲得特定字典的學習字典法具有較強的自適應能力, 即使面對不同的數據集也能學習獲得性能優秀的字典, 如最優方向法[18]、廣義主成分分析算法[19]和K奇異值分解算法(K-singular value decomposition, KSVD)[20]等. 其中K-SVD算法在字典選擇中采用正交匹配追蹤方法, 并在此基礎上獲得稀疏表示Λ. 因其字典更新的獨特性, 該算法有效地提高了從樣本數據中學習特征表示的能力, 但K-SVD算法側重于學習字典的表示能力而忽略字典的判別能力. Pham等[21]提出半監督字典學習算法, 通過將類別信息融入優化目標更好得到樣本數據的特性. Yang等[22]提出一種結構字典學習算法, 將費舍爾判別法作為稀疏表示約束引入字典學習, 從而提高圖像識別能力.
隨著深度神經網絡在圖像識別領域的成功應用,一些研究人員觀察到深度神經網絡結構所代表的特征更加抽象和緊湊. Singhal等[23]利用深度置信網絡實現深度學習與字典學習的結合. 深度字典學習[24]專注于將深度學習和字典學習范式相結合, 通過構建更深層次的字典學習架構進行數據特征提取. 深度字典學習通過將單層字典學習問題貪婪化轉換解決多層字典的學習, 即使用前一層的表示作為下一層學習的輸入雖然將深度學習的概念融入到字典學習中以提高其性能,但該方法并未重視深度神經網絡中的非線性映射, 多層字典學習依舊以線性規劃為基礎.
在深度神經網絡的模型訓練過程中, 網絡參數根據優化目標采用梯度下降算法進行自適應更新. 非線性響應函數的使用可實現數據中的內在特征表示, 并逐步將初始的低級特征表示轉化為高級特征表示. 從而獲得更加抽象和具判別性的特征, 最終建立層次化的特征表達體系.
由于監督學習需要大量標記數據, 因此很難應用于大規模數據中. 無監督學習可有效解決該問題, 如自編碼器(autoencoder, AE)[25]. AE通過編碼層高效地計算數據特征, 并通過相應的解碼層對數據進行重構, 在重構的過程中就能提取數據的內在特征. AE在特征學習中無需使用任何標簽信息, 因此具有更廣泛的應用.AE通過對樣本數據的非線性映射可以提取出數據中最具代表性的特征, 而字典學習將大量的冗余特征去除, 只保留與樣本數據最相關的解釋特征, 簡化模型的同時, 保留樣本數據中最重要的信息. 因此通過DNNDL網絡表示的特征可以揭示數據中的內蘊幾何關系, 以將每個映射的樣本表示為其他樣本的組合, 降低模型復雜度.
在本節將介紹提出的DNNDL方法, 其結構如圖1所示, DNNDL主要由3個部分組成, 編碼器模塊、字典學習模塊和譜聚類模塊. 編碼器模塊采用自編碼器中的編碼器部分, 利用編碼器模塊實現從樣本數據到低維空間表示的非線性映射. 字典學習模塊將編碼器模塊的輸出作為輸入進行字典和稀疏表示的學習, 發現樣本數據隱含的特定結構并提取特征, 最終輸出稀疏系數矩陣. 譜聚類是通過對樣本數據的相似度矩陣[26]的特征向量進行聚類, 從而達到聚類目的. 譜聚類模塊采用譜聚類算法將稀疏系數矩陣作為數據的相似度矩陣進行聚類, 得到聚類結果. DNNDL的優化問題包含如下兩個部分.

圖1 DNNDL框架圖
第1部分L1的設計是為最小化字典和稀疏系數矩陣重建的表示與原始數據之間的重構誤差, 從而盡可能地保留原始數據的內在信息. 同時對稀疏表示矩陣Λ進行約束, 使其具有稀疏性. 定義DNNDL的字典損失L1為:

其中,N為輸入數據的樣本個數, ‖ ·‖p表示lp范 數, 在機器學習中常采用l1范 數和l2范數[27], 本文選用l1范數, 有兩個原因. 一方面,l1范數表示向量中各個元素絕對值之和, 主要用于產生稀疏權值矩陣, 符合本文算法對保持Λ稀疏性的要求, 也就是需要Λ中有更少的非零項;另一方面, 在研究l2范數的評價中, 實驗表明, 它在DNNDL網絡中的聚類效果相對低于l1范數.
第2部分L2的設計是為了避免在迭代過程中模型收斂到平凡解, 去除深度神經網絡潛在空間中的任意比例因子, 因此通過增加適當的約束項, 來約束解的范圍.

因此, DNNDL網絡中的損失函數形式如下:

其中, λ是一個為正的權衡參數. 在DNNDL中, 公式中X經過編碼器部分獲得. 假設編碼器部分有M+1層,則有M個非線性變換. 定義網絡的輸入為h(0)∈Rd, 第m層的輸出如下:

其中,m=1, 2, …,M,h(m)∈Rd(m), 其中d(m)為h(m)的維數.g(·) 是一個非線性激活函數.W(m)∈Rd(m)×d(m-1)和b(m)∈Rd(m)表示深度神經網絡中第m層的權重和相關偏差.編碼器部分的輸出就表示為h(M). 具體來說, 本文算法的優化問題可以轉化為式(7):

上述損失函數在保證DNNDL表示稀疏性的同時還可以優化網絡對原始數據的重構, 并且解決網絡中由于平凡解導致網絡崩潰的問題, 如h(M)=0. 字典學習在深度神經網絡的潛在表示空間中進行稀疏表示, 而不是在原始數據中. 通過在潛在空間進行非線性變換,數據變得更有利于稀疏重構. 此外, DNNDL通過反向傳播上述損失函數, 不斷學習和優化網絡中的參數. 顯然, 字典學習是深度學習的補充, 可以在譜聚類中表現出更好的性能.
本文在不同的圖像數據集上對所提出的DNNDL算法進行實驗, 并從4個聚類性能指標方面與6種常用的稀疏表示方法進行比較, 驗證本文所提方法的有效性.
The extended Yale B (EYaleB)[28]面部數據集由38名被測者在64種不同光照條件下采集的正面面孔圖像組成, 共2 432張圖像, 圖像大小為48×32.
ORL人臉數據集[28]包含40名被測者的不同面部表情和不同光照條件下的10張圖像, 每張圖像的像素大小為32×32.
COIL-20物品數據庫[29]包含20個不同物品和每個物品的72張不同圖像, 每張圖像的大小為32×32.
COIL-100數據集[29]由100個不同物品的圖像組成, 每個物品有72張不同圖像. 圖像的像素大小為32×32.
算法運行環境: PyCharm2020; 加速環境: cuda_10.2.89_441.22; 操作系統: Windows 10; 深度學習框架:TensorFlow 1.15.0; 語言環境: Python 3.7.
實驗參數: 本文實驗采用Adam優化算法. DNNDL網絡由兩層以修正線性單元[30]為激活函數的編碼器和字典學習網絡組成. 在編碼器部分, 第1層和第2層節點數分別設為10和20. 第1層的內核大小設置為5×5,第2層的內核大小為3×3. 步長固定為2. 選擇用于字典學習的原子數是50個. 損耗函數L1中的λ1設為0.5,損耗函數L2中的λ2設 為0.25. 學習率設置為1 .0×10-4,模型的訓練迭代次數為700.
評價指標: 本文采用4種廣泛應用于聚類算法的評價指標[31]來進行對比實驗, 即準確度(ACC)、歸一化互信息(NMI)、調整蘭德系數(ARI)和F值(Fscore). 這4種指標的值越高, 表明實驗性能越好.
為了驗證本文算法的性能和有效性, 對比當前主流稀疏表示的聚類算法, 來對提出算法性能進行驗證.低秩表示(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]和深度字典學習(DDL)[24]方法進行對比實驗.
DNNDL在4個數據集與其他6種算法的實驗結果列于表1, 其中以粗體顯示最佳效果. 實驗分析如下.

表1 不同數據集上不同算法的聚類結果對比 (%)
SSC主要思想是假設高維空間中的數據屬于低維子空間, 能夠在低維子空間中對數據進行線性表示, 從而揭示數據所在的本質子空間. 然而它卻忽略數據的非線性特征, 因此本文提出的融合非線性特征的DNNDL算法可以更好地獲取數據復雜的內在特征, 較于SSC性能更好.
DDL專注于將深度學習的網絡結構應用于字典學習中, 通過構建更深層次的字典學習網絡架構進行數據特征提取. 盡管該方法融入深度學習的多層思想, 但并未重視深度神經網絡中的非線性映射, 多層字典學習依舊以線性規劃為基礎. 本文方法將深度學習和字典學習相融合, 可以得到更好的特征提取效果. 通過對比, 可以看出本文提出的模型在ACC、NMI、ARI和F值評價指標上有一定的提升, 驗證了DNNDL的有效性. 從表1中可以看出, DNNDL是提取數據內在特征的更強大的方法, 該方法在聚類應用中取得滿意的效果, 深度學習和字典學習相結合的策略可以有效地提取數據的判別特征.
本文提出一個可訓練的端到端的特征學習框架DNNDL, 其將AE和字典學習進行有機結合學習數據的稀疏表示, 并利用譜聚類的結果驗證數據特征學習的效果. 本文在4個圖像數據集上進行了實驗, 以全面評估算法性能. 實驗結果表明, DNNDL在4組數據集上均有較好的聚類性能, 說明該方法能夠有效地提取數據的判別性特征. 在未來, 我們將致力于設計更好的訓練策略, 進一步提升特征學習的效率.