曹桂銘 丁香乾 高政緒
(中國海洋大學 青島 266100)
青光眼是眼科一種常見的疑難病,癥狀為眼壓升高使得眼部功能發生障礙,并伴有瞳孔發青綠色這一視網膜形態的變化[1]。其具有危害大,高隱蔽性,發病率高等特點。青光眼嚴重危害患者的身體健康,眼內壓力長時間過高,會損害視神經,患者就會出現視力逐漸減退或失明[2]。同時由于其發病初期很難被發現,一旦出現視力下滑,則進入了晚期,已經造成不可恢復的損傷[3]。據統計,全球人群中,青光眼的患病率為3.54%,約有6426萬人;預計到2020年和2040年分別將達7602萬人和11182萬人[4]。
盡管青光眼嚴重威脅著我們的身心健康,但目前對于青光眼疾病的研究還處于初級階段,遠遠不能滿足人們的需求。因此對青光眼的研究是很有必要的,只有對其早診斷早治療才能減少它對視力的損害。眼底圖像是青光眼判別的最重要標準,由于眼底圖像的復雜性高,因此在實際操作中有很大的困難[5]。相關研究者取得了一定的成就:干能強[6]提出了基于主成分分析法(PCA)的青光眼識別方法;黃元康[7]提出一種基于圖像分割的馬爾科夫隨即場青光眼眼底圖像識別技術;德國研究者研制了一種Zeiss青光眼診斷分析儀,具有方便快捷的特點,但是識別精度不高。
本文提出了一種基于棧式稀疏自編碼器的青光眼眼底圖像特征提取及圖像識別模型。只需將眼底圖像做簡單的預處理即可作為模型的輸入,相比于需要進行眼底圖像分割的方法更為簡單。采用逐層貪婪訓練法從無標簽的數據集中學習到數據的內部特征,將學習到的特征作為Softmax分類器的輸入進行分類,判斷是否患有青光眼。并通過仿真實驗,證明了該方法是有效可行的。
自編碼器(Auto-encoder)是一種盡可能使輸出數據等于輸入數據的無監督學習的神經網絡[8],是一個只有一個隱含層的單層自編碼器,如圖1所示。單層自編碼器包括一個輸入層,一個隱含層和一個輸出層,其中+1是偏置項系數。)

圖1 單層自編碼器
自編碼器的訓練分為編碼和解碼兩個過程。編碼過程是使輸入數據x通過線性運算以及激活函數,再映射到隱含層得到編碼結果的過程[9],有

其中f(z)=1∕[1 +exp(-z)]是激活函數,h(x)是隱含層神經元的激活值,W1是權值矩陣,B1是偏置值矩陣。
解碼階段是將編碼階段得到的數據特征表達,即隱含層的輸出,作為輸出層的輸入,對其進行重構,得到與原始數據盡可能相等的輸出。
棧式自編碼器是將多個稀疏自編碼器堆疊而成。棧式自編碼器可以逐層提取數據的特征。將棧式自編碼器的輸出作為Softmax分類器的輸入,即是本文所采用的模型[10]。其結構如圖2所示。

圖2 棧式自編碼器網絡結構
具體來說,首先進行此分類器的逐層預訓練。利用不帶標簽的數據樣本通過逐層貪婪訓練法,最小化重構誤∑s[xi-h(xi)]2,訓練第一層隱含層L2,i=1得到其參數W1,B1。這樣就用一組基的線性組合來表示了輸入數據。再將這一組向量作為第二層隱含層L3的輸入,對L3進行訓練,得到參數W2,B2。在逐層訓練每一層的時候,其他各層的參數保持不變。在預訓練完成后,通過反向傳播算法對所有層的參數進行微調,使分類結果更加準確。如果在預訓練的過程中就對參數進行微調,可以使參數達到局部最優,但不會達到全局最優[11]。
假設wlji代表神經網絡中第l層第j個神經元和第l+1層第i個神經元之間的權重系數,bil代表神經網絡中第l+1層的第i個神經元的偏置項,zil+1表示第l+1層第i個神經元所有輸入神經元的加權和,sl代表神經網絡中第l層中神經元的總個數,則有

定義神經元的激活函數為f(z),h(il)表示第l層神經元i的激活值,則有:h(il)=f(zi(l))。
用m表示輸入樣本個數,x表示輸入,y表示輸出(x=y),λ表示權值衰減系數,本文所定義的代價函數為[12]

其中,第一項為誤差平方和項;第二項為規則化項,是為了減小權值,防止過度擬合。
研究表明,人的大腦在感應外界刺激時,只有一部分神經元處于活躍狀態,因此稀疏的表達更符合我們人類的神經系統。本文假設神經元的激活函數是Sigmoid函數。稀疏性可以被簡單地理解為:當神經元的輸出接近于1時,則它被激活,而輸出接近于0時,其被抑制。因此使神經元大部分被抑制的限制條件稱為稀疏性限制[13]。
用a(j2)(x)表示在輸入為x的情況下,隱藏神經元j的激活度。并把隱藏神經元j的平均活躍度表示為。在此,稀疏性限制可以表示為ρ?j=ρ,其中ρ是稀疏性參數。ρ通常是一個接近于0的較小的值。為實現稀疏性限制,在原來的損失函數中加入一項懲罰因子。使用相對熵作為懲罰因子,可表示為

因此棧式稀疏自編碼器的損失函數為

在根據損失函數進行微調的過程中,為了計算公式中KL(ρ?j||ρ)的導數,通常采用迭代的方法,像梯度下降發。根據BP算法,從后一層到前一層反向計算誤差項,每一層的誤差項為

根據公式,需要知道平均激活度ρ?j的計算,因此先需要對所有訓練樣本進行一次向前的傳播計算,得到平均激活度ρ?j。此神經網絡最終的偏導數計算為

通常式(8)、(9)用矩陣矢量符號重寫,該神經網絡的權值項和偏置項的梯度下降方法為[14]:

本文采用Softmax分類器對學習到的特征進行分類。Softmax模型如下:

其代價采用最大熵模型,代價函數為

其中k表示類別數目,1{y(i)=j}為示性函數。為了避免過擬合,在代價函數中加入正則化項,新的代價函數為凸函數,存在唯一的極小值,因此可以保證得到唯一的最優解,最終的代價函數為[15]

實驗數據采用來自某醫院提供的青光眼患者和正常人的眼底圖像共10000幅,其中青光眼眼底圖像為5500幅,正常的眼底圖像為4500幅,將圖像樣本分為3個子數據集。樣本具體信息如表1所示。

表1 數據集
其中無標簽訓練集用于網絡模型的特征學習,學習眼底圖像的特征。有標簽訓練集用于最終分類器的訓練。有標簽測試集用于測試模型分類的準確性。
將原始眼底圖像進行歸一化,轉化為灰度圖,圖像增強和去噪處理,轉化為150×150的灰度圖像,如圖3所示。

圖3 眼底預處理
由于目前對于棧式自編碼器構建過程中參數的確定并沒有足夠的理論方法,因此本文通過反復對數據集進行實驗來確定。最終確定的幾個主要的參數:稀疏參數ρ取0.005。學習速率為0.01,精神元激活函數為Sigmoid,迭代次數200次。本文采用Matlab R2014a作為編碼工具,設定網絡結構為150×150-10000-2500-500-100-1。最后一層使用Softmax回歸對樣本進行分類。
將預處理后的眼底圖像輸入稀疏自編碼器。采用逐層貪婪訓練法從無標簽的數據集中學習到數據的內部特征,將學習到的特征作為Softmax分類器的輸入。然后利用帶標簽的數據通過反向傳播算法對稀疏自編碼器進行調優。
本文使用眼底圖像測試集數據對神經網絡模型的分類精確度進行測試,并與傳統PCA和BP神經網絡方法進行比較,測試結果如表2所示。

表2 測試結果
由表2可以發現,在對1000個測試集樣本進行處理過程中,稀疏自編碼器模型特征提取的準確率最高。相對于其它方法,本文提出的稀疏自編碼器模型能夠明顯的提高特征提取能力,進而提高識別的準確率。
因此本文提出了一種基于棧式稀疏自編碼器的青光眼眼底圖像識別模型。只需將眼底圖像做簡單的預處理即可作為模型的輸入,無需對圖像進行分割。采用逐層貪婪訓練法從無標簽的數據集中學習到數據的內部特征,將學習到的特征作為Softmax分類器的輸入。然后利用帶標簽的數據通過反向傳播算法對稀疏自編碼器進行調優。最后使用測試集數據對整個模型進行測試。本文以正常的眼底圖像和青光眼眼底圖像為實驗對象,并與PCA,BP方法進行實驗對比。結果表明,本文提出的稀疏自編碼器模型提取眼底圖像特征的能力更好,識別準確率高于其他兩種方法,對青光眼的識別具有一定的實用價值。