王鑫
(1.中移信息技術(shù)有限公司,北京 100129;2.北京信息科技大學(xué),北京 100029)
隨著移動(dòng)互聯(lián)網(wǎng)和信息化技術(shù)的快速發(fā)展,信息安全已經(jīng)成為國(guó)家發(fā)展的重要戰(zhàn)略之一。以人臉特征匹配技術(shù)為代表的生物特征識(shí)別技術(shù)已經(jīng)成為信息安全研究領(lǐng)域的重點(diǎn)方向。Turk[1-2]等人于1990年首次利用PCA(Principal Component Analysis,主成分分析法)生成EigenFace(特征臉),這種方法不僅能提取人臉的整體信息,還能提取包含人臉各器官的相關(guān)關(guān)系,該方法相比之前人臉的幾何特征提取顯然更能反映人臉的多種特征,其人臉識(shí)別精度也得到了大大的提升。此后,人臉特征提取和匹配方法不斷呈現(xiàn),在特征提取上有Haar特征[3]、Gabor特征[4]、SIFT特征[5]、HOG特征[6]以及LBP特征[7],上述的特征大多數(shù)都是基于人臉結(jié)合特征的應(yīng)用;而在人臉識(shí)別方面,出現(xiàn)了k近鄰分類器[8]、支持向量機(jī)[9]、淺層神經(jīng)網(wǎng)絡(luò)[10]、adaboost分類器[11]以及cascade分類器[12]等。隨著研究的深入,研究者發(fā)現(xiàn)人臉的傾斜、光照的變化、遮擋等復(fù)雜背景會(huì)在很大程度上影響了算法的精度,因此,近幾年的聯(lián)合貝葉斯算法、高斯臉、深度臉等算法被陸續(xù)提出,并且取得較好的效果。雖然上述所提出的算法自學(xué)習(xí)功能非常強(qiáng)大,可以設(shè)置多層神經(jīng)網(wǎng)絡(luò)反復(fù)學(xué)習(xí)實(shí)現(xiàn)圖像數(shù)據(jù)背后的有效表示,在人臉識(shí)別上具有一定的優(yōu)勢(shì),但是,這種反復(fù)學(xué)習(xí)必然帶來(lái)參數(shù)過(guò)多、訓(xùn)練過(guò)慢、準(zhǔn)確率不穩(wěn)定等問(wèn)題。考慮到人臉圖片數(shù)據(jù)的稀疏性、高維度的特點(diǎn),本文采用SAE(Sparse auto-Encoder,稀疏自動(dòng)編碼器,也稱為自編碼神經(jīng)網(wǎng)絡(luò))進(jìn)行人臉特征的提取,該方法能夠以較少的參數(shù)重構(gòu)人臉的特征,并利用自身生成的參數(shù)初始化深度神經(jīng)網(wǎng)絡(luò)隱含層的參數(shù),達(dá)到提高模型精度的目的。
自編碼神經(jīng)網(wǎng)絡(luò)是一種無(wú)監(jiān)督的神經(jīng)網(wǎng)絡(luò),屬于深度學(xué)習(xí)模型之一。其思路是:將輸入X映射成一個(gè)新的表達(dá)Y,輸入節(jié)點(diǎn)等于輸出節(jié)點(diǎn),隱含層的節(jié)點(diǎn)數(shù)量較小,目的是使輸入X經(jīng)過(guò)非線性變換后將特征輸入到節(jié)點(diǎn)數(shù)量較少的隱含層中,實(shí)現(xiàn)高維度特征向低緯度特征的映射。與其他神經(jīng)網(wǎng)絡(luò)不同的是:自編碼網(wǎng)絡(luò)的結(jié)構(gòu)是對(duì)稱的,中間含有多個(gè)隱含層,并且中心層的神經(jīng)元是最少的。自編碼神經(jīng)網(wǎng)絡(luò)通過(guò)對(duì)樣本的訓(xùn)練后得到一組權(quán)值系數(shù)(或稱為字典),輸入數(shù)據(jù)借助權(quán)值系數(shù)實(shí)現(xiàn)高維向低維的映射,用低維數(shù)據(jù)表示輸入數(shù)據(jù)。
從上述的描述可知,自編碼神經(jīng)網(wǎng)絡(luò)的確能夠?qū)崿F(xiàn)任何數(shù)據(jù)或者圖片的低維表達(dá),但是隨著隱含層的數(shù)量越多,每一個(gè)神經(jīng)元產(chǎn)生的參數(shù)也就越多。那么,就得尋找一個(gè)能夠讓數(shù)據(jù)實(shí)現(xiàn)高維向低維映射的同時(shí)減少神經(jīng)網(wǎng)絡(luò)的參數(shù)數(shù)量的辦法,以便提升網(wǎng)絡(luò)的計(jì)算速度。具體就是在隱含層增加一些限制,約束隱含層中的節(jié)點(diǎn),使得節(jié)點(diǎn)大部分不被激活,只有少數(shù)被激活,那么最后的參數(shù)數(shù)量就大大減少,這就是Sparse名字的由來(lái)——Sparse auto-Encoder。
卷積神經(jīng)網(wǎng)絡(luò)的誕生是為了解決神經(jīng)網(wǎng)絡(luò)帶來(lái)參數(shù)過(guò)多的問(wèn)題。假如有一張50×50像素的圖片需要做人臉識(shí)別,如果采用傳統(tǒng)的全連接神經(jīng)網(wǎng)絡(luò),那么輸入層意味著有50×50個(gè)神經(jīng)元,隱含層有20個(gè)神經(jīng)元,輸出層有10層,那么需要計(jì)算的參數(shù)個(gè)數(shù)(w和b)有:2500×20×10+20+10=500030個(gè)。因此,從計(jì)算資源的考慮角度,不能用傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)進(jìn)行人臉識(shí)別。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
CNN的結(jié)構(gòu)包含輸入層、卷積層、池化層、全連接層以及輸出層。一般來(lái)說(shuō),一個(gè)CNN網(wǎng)絡(luò)的卷積層和池化層都有若干個(gè),其規(guī)律是卷積層和池化層交替設(shè)置,一個(gè)卷積層后面一般都連接一個(gè)池化層。卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖1所示。
卷積神經(jīng)網(wǎng)絡(luò)的每一層使用多個(gè)卷積核,卷積核的大小決定了神經(jīng)網(wǎng)絡(luò)的連接范圍。假設(shè)一個(gè)3×3的卷積核在某一張圖片上滑動(dòng),該卷積核的連接范圍只有3×3的大小而非整張圖片。這種在局部范圍的連接成為稀疏連接,其能夠按照卷積核的特征有效提取圖片的空間局部特征,由于采用了局部連接的方式,因此,該網(wǎng)絡(luò)的參數(shù)大大減少。
卷積神經(jīng)網(wǎng)絡(luò)除了稀疏性的特征外,還具有權(quán)值共享性:同一個(gè)卷積核中所連接的神經(jīng)元使用相同的權(quán)值,如圖2所示,箭頭顏色相同的神經(jīng)元之間的權(quán)值是相同的。共享權(quán)值在很大程度上減少網(wǎng)絡(luò)需要計(jì)算的參數(shù)個(gè)數(shù),并且使得卷積核所輸出的特征具有可識(shí)別性。
圖2 卷積神經(jīng)網(wǎng)絡(luò)共享權(quán)值示意圖
本文采用無(wú)監(jiān)督的特征學(xué)習(xí)算法稀疏自編碼網(wǎng)絡(luò)學(xué)習(xí)到的特征作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,實(shí)現(xiàn)高維空間向低維空間的映射,實(shí)現(xiàn)了人臉特征的提??;然后將輸入的特征經(jīng)過(guò)卷積和池化后,采用softmax分類器來(lái)實(shí)現(xiàn)人臉的匹配。人臉特征提取與匹配流程如圖3所示。
圖3 人臉特征提取與匹配流程圖
自編碼神經(jīng)網(wǎng)絡(luò)模型如圖4所示。假設(shè)每一個(gè)圖片預(yù)處理后的數(shù)據(jù)表達(dá)形式為X={x1,x2,…xk},希望重構(gòu)一個(gè)數(shù)據(jù)X′={x(1),x(2),…x(N)},那么SAE的實(shí)現(xiàn)過(guò)程如下所述。
首先,構(gòu)建一個(gè)三層的神經(jīng)網(wǎng)絡(luò),包括輸入層、隱含層以及輸出層?,F(xiàn)在經(jīng)典的sigmoid為神經(jīng)元的激活函數(shù)。對(duì)于一個(gè)無(wú)標(biāo)簽的輸入數(shù)據(jù)X,在隱含層的輸出中得到一個(gè)特征表達(dá)為h(X,W,b)=σ(WX+b)。
上述自編碼神經(jīng)網(wǎng)絡(luò)輸出的值是hw,b(x)=x,并且通過(guò)隱含層較少的神經(jīng)元實(shí)現(xiàn)輸入的壓縮。在上述的模型的隱含層的輸出用a表示,那么aj(2)(x(i))則表示給定x的情況下,隱含層神經(jīng)元j的激活度。進(jìn)一步,隱含層整體神經(jīng)元的平均激活度可以表示為:
為了有效控制網(wǎng)絡(luò)參數(shù)的數(shù)量,引入一個(gè)額外的懲罰因子——稀疏懲罰項(xiàng),其作用是有效控制神經(jīng)元激活的數(shù)量,如果神經(jīng)元的輸出接近1,那么認(rèn)為該神經(jīng)元是“活躍的”;如果一個(gè)神經(jīng)元的輸出接近0,那么認(rèn)為該神經(jīng)元是“不活躍”。為了控制神經(jīng)元的輸出分布都接近0,引入ρ(ρ=0.05),一個(gè)接近于0的較小值,讓隱含層神經(jīng)元ρ^的平均活躍度接近0.05。為了實(shí)現(xiàn)稀疏限制,代價(jià)函數(shù)可以表示為:
其中,nl是稀疏自編碼神經(jīng)網(wǎng)絡(luò)的層數(shù);λ是規(guī)則化系數(shù),可根據(jù)模型自由設(shè)定;hw,b(x)是稀疏自編碼神經(jīng)網(wǎng)絡(luò)的輸出值;β是控制稀疏性懲罰項(xiàng)的系數(shù)。KL(ρ^||ρ)是相對(duì)熵,是衡量ρ^的分布于真實(shí)值ρ之間的分布的差異。在ρ^=ρ時(shí),KL(ρ^||ρ)存在唯一的極小值。KL(ρ^||ρ)的表達(dá)式為:
公式(2)的前兩部分是非凸函數(shù),因此通常采用迭代法進(jìn)行計(jì)算,通過(guò)層層迭代后,自編碼神經(jīng)網(wǎng)絡(luò)在各層殘差向量計(jì)算如下:
圖4 自編碼神經(jīng)網(wǎng)絡(luò)模型
計(jì)算公式(4)的關(guān)鍵在于如何計(jì)算平均激活度ρ^,因此,在計(jì)算稀疏自編碼神經(jīng)網(wǎng)絡(luò)的后向傳播前,對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行前向傳播的計(jì)算,即可得到神經(jīng)元的激活值。
最后,自編碼神經(jīng)網(wǎng)絡(luò)采用線性解碼的方式,得到稀疏自編碼神經(jīng)網(wǎng)絡(luò)初始的權(quán)重向量和偏置向量的梯度下降方向?yàn)椋?/p>
在確定l=1, 2后,滿足稀疏自編碼神經(jīng)網(wǎng)絡(luò)的迭代規(guī)則——最大迭代次數(shù)或者準(zhǔn)確率達(dá)到算法收斂的規(guī)定后,隱含層單元就獲得了學(xué)習(xí)好的特征,也就是訓(xùn)練好了神經(jīng)網(wǎng)絡(luò)的權(quán)值向量w偏置向量b。
自編碼神經(jīng)網(wǎng)絡(luò)的輸入層和隱含層都是全連接的,因此它不適用于人臉圖片等具有高分辨率的圖像。本文采用上面稀疏自編碼神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的參數(shù)依次對(duì)圖像進(jìn)行卷積運(yùn)算并采用不同的神經(jīng)元提取訓(xùn)練圖像的各個(gè)特征。
深度神經(jīng)網(wǎng)絡(luò)的卷積過(guò)程完整的數(shù)據(jù)模型如圖5所示,整個(gè)卷積操作由2部分組成:∑wx(卷積)和f(激活),其中∑wx(卷積)用到了稀疏自編碼網(wǎng)絡(luò)學(xué)習(xí)的參數(shù)進(jìn)行圖像各個(gè)特征的提取。
圖5 卷積層操作機(jī)理
圖片經(jīng)過(guò)卷積操作后,實(shí)現(xiàn)特征提取和特征映射的作用。特征提?。好恳粋€(gè)神經(jīng)元從上一層的局部接受域得到突觸輸人,因而迫使它提取局部特征。一旦一個(gè)特征被提取出來(lái),只要它相對(duì)于其他特征的位置被近似地保留下來(lái),它的精確位置就變得沒(méi)有那么重要了。特征映射:網(wǎng)絡(luò)的每一個(gè)計(jì)算層都是由多個(gè)特征映射組成的,每個(gè)特征映射都是平面形式的。平面中單獨(dú)的神經(jīng)元在約束下共享相同的突觸權(quán)值集(權(quán)重),這種結(jié)構(gòu)形式具有如下的有益效果:平移不變性和自由參數(shù)數(shù)量的縮減(通過(guò)權(quán)值共享實(shí)現(xiàn))。
在完成卷積操作后,進(jìn)入池化操作:進(jìn)行子抽樣然后再進(jìn)行局部平均。池化過(guò)程不涉及參數(shù)的運(yùn)算,僅起到降維的作用。具體的做法是:將輸入切分成不重疊的一些n×n區(qū)域,每一個(gè)區(qū)域最終只有一個(gè)輸出值。計(jì)算方法可以是求平均、取最大等。假設(shè)n=2,那么4個(gè)輸入變成一個(gè)輸出,輸出圖像就是輸入圖像的1/4大小。池化操作不僅能夠?qū)崿F(xiàn)統(tǒng)計(jì)特征降維的效果,還能防止模型出現(xiàn)過(guò)擬合的現(xiàn)象。
人臉識(shí)別的本質(zhì)就是分類問(wèn)題,分類問(wèn)題有二分類與多分類,其實(shí)不同分類方法的實(shí)質(zhì)上沒(méi)有多大區(qū)別,都是采用公式y(tǒng)=wx+b來(lái)實(shí)現(xiàn)類別的劃分。一般,二分類問(wèn)題采用邏輯回歸,其激活函數(shù)采用sigmoid,這個(gè)激活函數(shù)除了給函數(shù)增加非線性之外還會(huì)把最后的預(yù)測(cè)值轉(zhuǎn)換成在[0, 1]中的數(shù)據(jù)值,也就是預(yù)測(cè)值是0<y<1??梢园炎詈蟮倪@個(gè)預(yù)測(cè)值當(dāng)做是一個(gè)預(yù)測(cè)為正例的概率。在進(jìn)行模型應(yīng)用的時(shí)候會(huì)設(shè)置一個(gè)閾值,當(dāng)預(yù)測(cè)值大于這個(gè)閾值的時(shí)候,判定為正例子,反之判斷為負(fù)例,而多分類函數(shù)的激活函數(shù)采用softmax。
從圖6可知,最后的一層中使用的激活函數(shù)就是softmax,跟二分類在輸出層之后一個(gè)單元不同的是,使用softmax的輸出層擁有多個(gè)單元——有多少個(gè)分類就會(huì)有多少個(gè)單元。將對(duì)有標(biāo)簽數(shù)據(jù)集用于softmax分類器進(jìn)行訓(xùn)練并實(shí)現(xiàn)權(quán)值向量和偏置向量的微調(diào),整個(gè)訓(xùn)練過(guò)程結(jié)束。
在具體的人臉識(shí)別過(guò)程中,會(huì)設(shè)置若干個(gè)單元,并分別對(duì)數(shù)據(jù)庫(kù)檢索出來(lái)的若干個(gè)候選人臉圖像計(jì)算與待識(shí)別人臉的相似度,并選取最大相似度作為最終的輸出。
實(shí)驗(yàn)選用標(biāo)準(zhǔn)的人臉庫(kù)YaleB進(jìn)行測(cè)試,本實(shí)驗(yàn)將人臉圖片統(tǒng)一為64×64的灰度圖,將本文基于SAE和深度神經(jīng)網(wǎng)絡(luò)相結(jié)合的人臉特征提取與匹配的算法與傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行比較。
人臉庫(kù)YaleB包括38個(gè)人在64種光照影響下的2400多正臉照片,本文從數(shù)據(jù)集隨機(jī)選取每個(gè)人的20張圖片作為無(wú)標(biāo)簽訓(xùn)練集進(jìn)行特征提取和初始化參數(shù)的學(xué)習(xí);再隨機(jī)選取每個(gè)人的20張圖片作為有標(biāo)簽的訓(xùn)練集用于softmax分類器的訓(xùn)練,剩下的圖片作為測(cè)試集用于測(cè)試深度神經(jīng)網(wǎng)絡(luò)人臉識(shí)別的準(zhǔn)確率。
本文稀疏自編碼神經(jīng)網(wǎng)絡(luò)的輸入層和輸出層均為192個(gè)神經(jīng)元,而深度學(xué)習(xí)的隱含層神經(jīng)元數(shù)量為400。為了更好地進(jìn)行性能的測(cè)試,本文分別采用192個(gè)隱藏神經(jīng)元的BP神經(jīng)網(wǎng)絡(luò)和400個(gè)隱藏神經(jīng)元的BP神經(jīng)網(wǎng)絡(luò)對(duì)上述的有標(biāo)簽訓(xùn)練集和測(cè)試集進(jìn)行訓(xùn)練,在進(jìn)行10次訓(xùn)練所得到的10個(gè)模型,將其用于檢驗(yàn)測(cè)試集,所得到的測(cè)試集準(zhǔn)確率結(jié)果如表1所示。
從表1可知,無(wú)論是傳統(tǒng)BP網(wǎng)絡(luò)的隱含層神經(jīng)元數(shù)量等于自編碼神經(jīng)網(wǎng)絡(luò)的輸入層神經(jīng)元的數(shù)量還是BP網(wǎng)絡(luò)的隱含層神經(jīng)元數(shù)量等于深度神經(jīng)網(wǎng)絡(luò)隱含層神經(jīng)元的數(shù)量,其平均準(zhǔn)確率均低于本文提出的算法。而且從表1可知,BP神經(jīng)網(wǎng)絡(luò)的隱含層神經(jīng)元數(shù)量越多,其分類的準(zhǔn)確率并不一定越高,有可能產(chǎn)生過(guò)擬合。實(shí)驗(yàn)結(jié)果表明,基于無(wú)監(jiān)督的稀疏自編碼神經(jīng)網(wǎng)絡(luò)在特征學(xué)習(xí)上具有強(qiáng)大的泛化能力,其特征提取的參數(shù)依次對(duì)圖像進(jìn)行卷積計(jì)算,并通過(guò)softmax進(jìn)行參數(shù)的微調(diào),能夠在很大程度上提升了算法的精準(zhǔn)度。
圖6 深度神經(jīng)網(wǎng)絡(luò)的softmax分類器
表1 實(shí)驗(yàn)對(duì)比結(jié)果圖
本文提出的基于SAE和深度神經(jīng)網(wǎng)絡(luò)相結(jié)合的人臉特征提取與匹配算法采用無(wú)監(jiān)督的方法學(xué)習(xí)不同人臉的特征,這種方法的優(yōu)勢(shì)在于不需要提取人臉圖片中的顏色、紋理以及人臉的形狀,而是采用基于像素級(jí)別的人臉特征提取,從而在一定程度上提高了人臉識(shí)別的精度。深度神經(jīng)網(wǎng)絡(luò)采用稀疏自編碼神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的特征依次對(duì)圖像進(jìn)行卷積運(yùn)算;采用不同的神經(jīng)元提取訓(xùn)練圖像的各個(gè)特征;最后對(duì)稀疏自編碼神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的權(quán)重向量和偏置向量等參數(shù)進(jìn)行微調(diào),提高了模型訓(xùn)練的速度和精度。由于本文選取的數(shù)據(jù)集較少,因此在未來(lái)將對(duì)幾萬(wàn)甚至幾十萬(wàn)的大型數(shù)據(jù)集進(jìn)行訓(xùn)練并調(diào)整本文算法的相關(guān)參數(shù)。除此以外,探究增加深度神經(jīng)網(wǎng)絡(luò)的層數(shù)以及隱含層神經(jīng)元的數(shù)量是否會(huì)在一定程度上提升算法的精度。最后,研究深度神經(jīng)網(wǎng)絡(luò)并行處理的方式,通過(guò)并行處理來(lái)提高模型運(yùn)行的速度。