崔廣新,李殿奎
(佳木斯大學(xué) 信息電子技術(shù)學(xué)院,佳木斯 154007)
隨著大數(shù)據(jù)時代的到來,互聯(lián)網(wǎng)的海量資源比較容易獲得.但是,由于“維數(shù)災(zāi)難”的影響,就使得高維數(shù)據(jù)處理變得十分困難,基于深度學(xué)習(xí)的自編碼算法是數(shù)據(jù)降維的一個新的熱點.自編碼算法橫跨計算機科學(xué)、數(shù)學(xué)和工程技術(shù)等其他多個學(xué)科,并且它廣泛的應(yīng)用于經(jīng)濟、政治、天文、地理等社會生活領(lǐng)域中.自編碼算法的最大優(yōu)點是模型的表達能力強,它可以很好的處理具有高維稀疏特征的數(shù)據(jù),通過無監(jiān)督學(xué)習(xí)可以減少無關(guān)和冗余數(shù)據(jù),從而降低維數(shù).
自動編碼器是Rumelhart于1986年提出的,是一個典型的三層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),包括輸入層、隱藏層和輸出層[1].
設(shè)輸入層和輸出層的維度為n,隱藏層的維度為m,樣本數(shù)集.
設(shè)編碼函數(shù)為f,編碼過程指的是從輸入層到隱藏層;設(shè)解碼函數(shù)為g,解碼過程指的是從隱藏層到輸出層.
自動編碼器的編碼部分是利用非線性映射函數(shù)將輸入數(shù)據(jù)映射到隱藏層單元,設(shè)h表示隱藏層的神經(jīng)單元激活,則其數(shù)學(xué)表達式為:
其中,w表示的是連接輸入層和隱藏層之間的權(quán)值矩陣,Sf表示的是編碼器激活函數(shù),通常取Sigmoid函數(shù),即f(x)=1/(1+e?x).
解碼部分計算原理與編碼部分類似,利用編碼得到的隱藏層重構(gòu)出原始輸入數(shù)據(jù).其解碼函數(shù)的數(shù)學(xué)表示如下:
其中,y表示的是解碼器對輸入數(shù)據(jù)的重構(gòu),sg表示的是解碼器激活函數(shù),通常取Sigmoid函數(shù)或者恒等函數(shù),w表示的是隱藏層與輸出層之間的權(quán)值矩陣w,并且,自動編碼器的參數(shù) θ={w,p,q}.
輸出數(shù)據(jù)y可以看作是對輸入數(shù)據(jù)x的預(yù)測,如果輸出數(shù)據(jù)y與輸入數(shù)x的接近程度是我們可以接受的,那么該自動編碼器就保留了原始數(shù)據(jù)的大部分信息,該自動編碼器也就訓(xùn)練好了[2].
用重構(gòu)誤差函數(shù)L(x,y)來刻畫y與x的接近程度.
當sg為恒等函數(shù)時:
當sg為Sigmoid函數(shù)時:
最后重復(fù)使用梯度下降算法迭代計算JAE(θ)的最小值,就可以求解自編碼網(wǎng)絡(luò)的參數(shù) θ,也就完成了自動編碼器的訓(xùn)練.
稀疏自編碼算法與傳統(tǒng)自編碼算法降維特性不同,稀疏自編碼算法試圖學(xué)習(xí)過完備數(shù)據(jù),通過適當?shù)南∈枵齽t化可以達到過完備的效果[3].
一般采用稀疏性限制確定神經(jīng)元是否被激活,如果神經(jīng)元輸出接近1,則說明被激活.對于Sigmoid函數(shù),如果輸出接近0則認為神經(jīng)元被抑制;對于tanh函數(shù),輸出接近–1則認為被抑制,通過使大量神經(jīng)元處于被抑制的條件限制下從而使自動編碼器達到稀疏的目的[4].
降噪自編碼算法(Denoising Automatic Encoder,D AE)是自編碼算法的一個變種,其實就是在自編碼算法上加入了噪聲魯棒性約束.
降噪自編碼算法的過程是:首先將原始輸入數(shù)據(jù)x隨機的添加噪聲干擾,就會得到受干擾的輸入數(shù)據(jù)x.自動編碼器通過編碼函數(shù)f將x映射到隱藏層,從而就會獲得隱藏層特征表達式h,然后自動編碼器通過解碼函數(shù)g將隱藏層的特征表達式h再映射到輸出層,就會獲得輸入數(shù)據(jù)的重構(gòu)y.如果最終得到的重構(gòu)數(shù)據(jù)y能夠很好地保持原始輸入數(shù)據(jù)x的信息,那么我們就可以說這個網(wǎng)絡(luò)具有很好的魯棒性.
降噪自編碼算法最重要的就在于為輸入數(shù)據(jù)添加干擾噪聲[5].最常見的方法有兩種,一種是加入additive isotropic Gaussian noise,令即噪聲干擾部分 ε服從標準方差為 σ2的標準正態(tài)分布.另外一種是 binary masking noise,該方法只需要以概率P(A)將輸入向量x的部分分量賦值為0,以1 ?P(A)的概率分量保持不變,這樣就做到了將輸入向量x添加干擾變成了干擾向量x?,參數(shù) σ和P(A)都是用來控制噪聲強度的.
收縮自編碼算法(Contractive Automatic Encoder,CAE)是自編碼算法的一個變種,其實就是在自編碼算法上加入了一個規(guī)則項.當訓(xùn)練樣本的輸入存在微小擾動時,CAE被提出來保持中間層表示的魯棒性,它主要通過懲罰輸入數(shù)據(jù)的敏感性來保持中間層表示的魯棒性[6].該懲罰因子是自動編碼器編碼部分的Jacobian矩陣的Frobenius范數(shù).
從幾何角度來說,特征表示的魯棒性可以看作是投影到特征空間的輸入數(shù)據(jù)空間,尤其是數(shù)據(jù)生成分布的樣本領(lǐng)域空間的壓縮.從解析的角度來說,懲罰因子的限制提高了CAE對于輸入數(shù)據(jù)中的微小擾動的魯棒性,數(shù)據(jù)表示的準確性較高,且重構(gòu)特征并不受懲罰因子的影響.可以平衡誤差代價函數(shù)的重構(gòu)誤差與魯棒性.
棧式自編碼是一種由多層自編碼構(gòu)成的神經(jīng)網(wǎng)絡(luò)模型.它通常能得到輸入的“層次型分組”或者“部分-整體分解”結(jié)構(gòu).棧式自編碼神經(jīng)網(wǎng)絡(luò)的第一層會學(xué)習(xí)到原始輸入的一階特征(像圖片里的邊緣),第二層會學(xué)習(xí)到二階特征,該特征對應(yīng)一階特征里包含的一些模式(像在構(gòu)成輪廓或者角點時,什么樣的邊緣會出現(xiàn)),更高層還會學(xué)到更高階的特征,但耗時較長.
該深度學(xué)習(xí)模型的訓(xùn)練過程為:首先,網(wǎng)絡(luò)中的每一層依次通過逐層貪婪訓(xùn)練法來訓(xùn)練整個深度神經(jīng)網(wǎng)絡(luò),即原始輸入用于訓(xùn)練第一層網(wǎng)絡(luò)參數(shù),然后把該隱藏層的輸出作為下一層的輸入,如此反復(fù),依次逐層訓(xùn)練學(xué)習(xí)各層網(wǎng)絡(luò)的參數(shù).在無監(jiān)督預(yù)訓(xùn)練之后,我們在最后一個自動編碼器的編碼層上添加一個分類器,然后使用監(jiān)督學(xué)習(xí)通過有標記樣本來調(diào)整分類器的參數(shù).此外,多層神經(jīng)網(wǎng)絡(luò)的監(jiān)督學(xué)習(xí)也可以用來微調(diào)所有層的參數(shù),同時改善結(jié)果.
邊緣降噪自編碼算法是Chen為克服降噪自編碼算法計算強度高、處理時間長等缺點提出來的一種衍生算法[7],但控制噪聲強度的參數(shù)不易確定.
通過研究傳統(tǒng)自編碼算法,提出了一種將稀疏性限制加在降噪自動編碼器的隱藏神經(jīng)元上的方法,可以讓較少隱藏層的激活單元表示最有效的特征,但沒有考慮輸入與輸出的局部近似性.
稀疏邊緣降噪自編碼算法(Sparse Margin Denoising Auto-Encoder,SMDAE)是自編碼算法的一個變種,其實就是將稀疏性約束條件表達式和邊緣降噪約束條件表達式添加在隱藏層上面.同時結(jié)合了稀疏自編碼算法和邊緣降噪自編碼算法的特點,噪聲干擾分布和重構(gòu)誤差函數(shù)還可以繼續(xù)改進.
卷積自編碼算法(Convolutional Auto-Encoder)是在自編碼算法基礎(chǔ)上,將普通的矩陣內(nèi)積操作替換為卷積操作.這種操作更適合處理二維輸入數(shù)據(jù),但耗時較長.
在自編碼算法中加入卷積與反卷積操作構(gòu)成CAE,再加入稀疏化操作,構(gòu)成卷積稀疏自編碼器.使用CSAE-S對輸入數(shù)據(jù)進行預(yù)處理,盡可能實現(xiàn)初步無損特征提取,然后使用CSAE-V對數(shù)據(jù)進行降維,實現(xiàn)低級特征抽象,再加入Pooling層實現(xiàn)高級特征抽象以及提高網(wǎng)絡(luò)泛化性.將CSAE中的卷積編碼部分按CSAE-S、CSAE-V、Pooling順序棧式堆疊,最后加入Full連接層和Softmax分類層,則形成CSAENN.
整個CSAENN的耗時主要在于權(quán)值稀疏化部分,因此整個網(wǎng)絡(luò)的時間復(fù)雜度達到了 O(n3).CSAENN的另外一個優(yōu)點就是準確率有一定的提高.經(jīng)過稀疏化后的權(quán)值提取出的特征相似性更少,即代表性更強,因此可以更好地表示原圖像.增加迭代次數(shù)、增加樣本數(shù)量可獲得更高的準確率.
利用人體生物學(xué)特征已成為獲取相關(guān)信息的重要途徑,徐文瀚等人提出一種運用棧式自編碼網(wǎng)絡(luò)進行面部年齡識別的方法[8];針對傳統(tǒng)人臉表情識別算法魯棒性差,李江等人提出一種降噪自編碼神經(jīng)網(wǎng)絡(luò)的方法[9];余濤將稀疏自編碼應(yīng)用在手寫字的識別中,與傳統(tǒng)人工神經(jīng)網(wǎng)絡(luò)相比,參數(shù)少,對圖像的平移具有一定的容忍度,不易造成過擬合[10];針對網(wǎng)絡(luò)上大量重復(fù)視頻的問題,王飛飛將稀疏自編碼用于近重復(fù)視頻檢索[11],取得了較好的檢索精度;王勇將稀疏自編碼應(yīng)用在森林火災(zāi)的圖像分類中[12],該方法直接從圖像塊的像素中提取圖像數(shù)據(jù)的特征,提高了森林火災(zāi)與類似物體的分類準確率.
馬勇等人提出了一種基于稀疏神經(jīng)網(wǎng)絡(luò)的說話人分割方法[13],為了避免網(wǎng)絡(luò)在訓(xùn)練中出現(xiàn)過擬合問題,還采用了dropout技術(shù)提高網(wǎng)絡(luò)的魯棒性;針對中文語音情感識別的問題,朱芳枚同時結(jié)合了降噪自編碼算法和稀疏自編碼算法的優(yōu)點,提取了具有魯棒性和稀疏性的語音情感二次特征[14];針對在語音識別中,傳統(tǒng)徑向基隨機初始化的問題,黃麗霞等人將深度自編碼應(yīng)用在語音識別噪聲魯棒性的研究中[15];王輝等人采用稀疏自編碼算法來提取模仿聽覺神經(jīng)的稀疏觸動信號,將其作為表征語音信號[16];在聲學(xué)模型方面,也不斷地嘗試新的深度神經(jīng)網(wǎng)絡(luò),王山海利用深度自編碼算法研究出它的模型參數(shù)對于孤立詞語音識別產(chǎn)生的影響[17].
針對淺層網(wǎng)絡(luò)特征提取能力有限的問題,陳仁祥等人提出采用深度自編碼神經(jīng)網(wǎng)絡(luò)的方法對軸承進行識別[18];溫博文將深度自編碼算法應(yīng)用于飛機操縱面故障診斷當中[19],該方法無需精準的飛機模型,診斷速度快、精度高;為了實現(xiàn)風(fēng)機齒輪箱的故障診斷檢測分析,劉輝海提出了一種深度自編碼網(wǎng)絡(luò)模型[20];針對在復(fù)雜紋理背景噪聲下傳統(tǒng)路面裂縫檢測系統(tǒng)檢測效率低,易造成漏檢、錯檢等問題,錢彬等人提出了一種運用稀疏自編碼進行裂縫自動檢測的方法[21];朱煜奇將棧式降噪自編碼應(yīng)用在故障診斷中,有效的克服了局部極值與梯度消失的問題[22].
袁靜等人將稀疏去噪自編碼應(yīng)用在異常行為檢測中,該方法比傳統(tǒng)的自編碼網(wǎng)絡(luò)在全局異常行為檢測中更加有效[23];針對在入侵檢測中SVM受時間與空間復(fù)雜度的約束,高妮等人提出一種自編碼神經(jīng)網(wǎng)絡(luò)應(yīng)用于此[24];楊輝華等人采用稀疏降噪自編碼對真假藥品近紅外光譜數(shù)據(jù)進行建模,可以做到真實有效的鑒別藥品的真?zhèn)涡訹25];針對常規(guī)毒理學(xué)實驗方法的周期長、耗資高等問題,黎紅等人提出采用降噪自編碼提取隱含毒性化合物的特征,使得有毒化合物的化合物毒性預(yù)測和活性預(yù)測都能被實現(xiàn);魏揚威將自動編碼器應(yīng)用于英語作文自動評分系統(tǒng),相比于傳統(tǒng)自動評分方法皮爾森相關(guān)系數(shù)高出9.7%,具有非常好的應(yīng)用價值[26].
對各算法作對比分析,如表1.
表1 各算法對比
自編碼的最大優(yōu)點是模型的表達能力強,它可以很好的處理具有高維稀疏特征的數(shù)據(jù),通過無監(jiān)督學(xué)習(xí)可以減少無關(guān)和冗余數(shù)據(jù),從而降低維數(shù).雖然自編碼算法已經(jīng)在很多領(lǐng)域都取得了令人矚目的成績,但其仍處于起步階段,還面臨諸多問題:像如何判定網(wǎng)絡(luò)的隱藏層層數(shù)和隱藏層節(jié)點數(shù);如何改進梯度下降法,使得網(wǎng)絡(luò)可以獲得更好的局部極值點,甚至是可以獲得全局最優(yōu)點;如何評價通過自動編碼器所學(xué)到的特征是優(yōu)劣的,并且如何解釋該特征;如何處理大數(shù)據(jù)的大樣本量,高維屬性和多樣性的數(shù)據(jù)類型等問題.
未來自編碼的發(fā)展趨勢:在自然語言處理領(lǐng)域,期待利用AE模型的更多新算法,可以更好地理解自然語言中的句子或整個文檔;在信息檢索領(lǐng)域仍有待突破,期待涌現(xiàn)新的深度結(jié)構(gòu)及其算法;在計算機視覺領(lǐng)域,期待更多的深層結(jié)構(gòu)和算法能夠更好地處理目標和行為識別這類復(fù)雜的問題.