周 強,田杏芝,高樂樂
(陜西科技大學 電氣與控制工程學院,陜西 西安 710021)
隨著生活節(jié)奏的加快和競爭壓力的增大,失眠案例逐年增多,嚴重影響人們的身心健康[1].傳統(tǒng)的失眠治療方法多是將人從清醒狀態(tài)誘導至睡眠狀態(tài),并未考慮到睡眠是一個復雜的生理過程,遵循一定的睡眠規(guī)律,因此治療效果欠佳.醫(yī)學研究發(fā)現(xiàn),在準確辨識人體睡眠狀態(tài)的基礎上,有針對性的對人體睡眠狀態(tài)進行誘導和控制,可以有效地改善人體睡眠質量.
早期的睡眠狀態(tài)辨識主要由人工完成,該方法效率低下且辨識準確率極易受個人經(jīng)驗影響[2].因此,尋求高效、客觀且準確可靠的睡眠狀態(tài)辨識方法成為睡眠醫(yī)學領域的一個研究熱點[3].隨著模式識別技術的快速發(fā)展,研究者們提出將其與睡眠狀態(tài)辨識相結合的方法,如基于Hilbert-Huang變換與最近鄰分類的方法[4]、基于多尺度熵與線性判別分析的方法[5]等.這類方法可有效提高睡眠辨識效率,但辨識準確率很大程度上依賴于人工提取的睡眠腦電特征.特征提取部分計算過程往往比較復雜,且所選特征量沒有明確的衡量標準,存在一定的偶然性,辨識效果仍然不是很理想.
針對以上問題,本文提出了一種基于短時功率譜(Short-Time Power Spectrum,STPS)和卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的人體睡眠狀態(tài)辨識方法,先構造不同睡眠狀態(tài)的時-頻譜圖,再將其輸入至所構建的適用于睡眠狀態(tài)辨識的CNN模型中,由CNN自動提取睡眠腦電特征,從而完成人體睡眠狀態(tài)辨識.
人體睡眠過程極其復雜,包含若干個相對穩(wěn)定的狀態(tài),這些狀態(tài)并非完全獨立存在,而是逐漸變化、相互重疊交替的[6].為了方便進行睡眠研究,Rechtsehaffen和Kales根據(jù)睡眠過程中人的各項生理表現(xiàn)將其人為劃分為清醒期(Wake,W)、快速眼動睡眠期(Rapid Eye Movement,REM)和非快速眼動睡眠期(Non-rapid Eye Movement,NREM),其中NREM期又可進一步劃分為S1~S4四個時期[7].在睡眠過程中NREM期和REM期會交替出現(xiàn),交替一次則稱為一個睡眠周期.對于正常人來說,整夜的睡眠會經(jīng)歷4~6個睡眠周期,每個睡眠周期歷時約90~100分鐘,且下一個睡眠周期并非上一個睡眠周期的簡單重復.一般來說,較為靠后的睡眠周期中,REM期睡眠時間逐漸增加,NREM期睡眠時間逐漸減少.具體過程如圖1所示.
圖1 正常人體睡眠過程示意圖
腦電信號(Electroencephalogram,EEG)是腦神經(jīng)細胞群的電生理活動在大腦皮層表面的總體表現(xiàn)[8].現(xiàn)代醫(yī)學研究表明,當人從清醒狀態(tài)進入至睡眠狀態(tài)時,身體各個部位將處于完全放松的狀態(tài),大腦活動也會發(fā)生明顯的變化,具體表現(xiàn)為EEG信號的波形、波幅、頻率及相位等發(fā)生變化.因此,可以通過研究不同睡眠狀態(tài)下EEG信號的變化情況,深入探究睡眠規(guī)律,進而有效的誘導、控制睡眠過程,最終達到改善睡眠質量的目的[9].
傳統(tǒng)的睡眠狀態(tài)辨識都是對所獲取的EEG信號進行預處理后,采用時-頻分析或非線性動力學等方法,在此基礎上,根據(jù)大量的先驗知識人工提取各睡眠狀態(tài)的特征,再將其輸入至人工神經(jīng)網(wǎng)絡或支持向量機中,辨識出不同的睡眠狀態(tài).整個過程中睡眠EEG信號的特征提取部分是實現(xiàn)準確辨識的關鍵.
與傳統(tǒng)的機器學習不同,CNN是一種善于處理二維圖片數(shù)據(jù)的深度學習網(wǎng)絡模型,無需任何先驗知識,網(wǎng)絡可利用多級層級結構,通過端到端的訓練方式自行學習出圖像中更加復雜、抽象的特征,使得不同類別的圖像更加可分,從而提高辨識準確率[10].且網(wǎng)絡采用局部感知、權值共享及下采樣等學習策略,可有效地降低模型結構復雜度,并減少訓練參數(shù)數(shù)量,較好地避免了過擬合現(xiàn)象的發(fā)生,顯著地提高了運算速度[11].因此,本文提出一種基于STPS和CNN的人體睡眠狀態(tài)辨識策略,采用STPS對預處理后的EEG信號進行時-頻處理使之圖形化,然后構建適用于人體睡眠狀態(tài)辨識的CNN模型以便自適應的提取各睡眠狀態(tài)的特征,從而實現(xiàn)端到端的睡眠狀態(tài)辨識.該策略具體過程如圖2所示.
圖2 基于STPS和CNN的人體睡眠狀態(tài)辨識策略
本文實驗數(shù)據(jù)選自MIT-BIH中的The Sleep-EDF database.所記錄的數(shù)據(jù)為整夜的睡眠腦電數(shù)據(jù),包括Fpz-Cz和Pz-Oz兩路導聯(lián),采樣頻率為100 Hz,每幀為30 s,且已由經(jīng)驗豐富的睡眠醫(yī)師給出一個參考睡眠狀態(tài).前期研究中已對兩路數(shù)據(jù)進行了相關仿真實驗,證實了Hsu等應選用導聯(lián)Fpz-Cz結論的真實性[12],故文中后續(xù)研究均基于導聯(lián)Fpz-Cz展開.
由于EEG信號幅值非常微弱,極易受其他生理信號和采集裝置所帶來的干擾,且個體差異較為明顯,故在分析前需要對其進行必要的幾步預處理[13].本文選用db4小波基函數(shù)對EEG信號進行7層分解,而后采用去均值、歸一化的操作消除樣本間差異.
對于EEG這種非線性、非平穩(wěn)的時變信號,單純的時域或頻域分析方法已不足以刻畫其時間-頻率-能量特性,即該EEG信號在某一時間段及某一頻段的能量分布情況[14],因此必須兼顧時域和頻域分析進行研究.
STPS是處理非平穩(wěn)信號最有效的一種方法.它是短時傅里葉變換與功率譜分析兩種技術的結合,先對非平穩(wěn)信號進行分段加窗處理使之平穩(wěn)化,再計算每段的譜估計并進行總平均[15].本文的算法分析過程如下:
(1)將長度為N的EEG信號按30 s時間段(即3 000個數(shù)據(jù)點)分為K段,所得分段信號記為xε(n)(i=1,…,K),其長度記為L.
(2)選擇合適的窗函數(shù)ω(n),并計算每段信號的功率譜
i=1,…,K
(1)
為避免發(fā)生能量泄漏現(xiàn)象,此處選取Hamming窗,其函數(shù)為
0≤n≤M-1
(2)
式(2)中:M為窗函數(shù)的長度,M=128.
(3)計算K段信號功率譜的平均值,即得短時功率譜
(3)
通過以上計算便可將一維的EEG信號轉化為易于CNN處理的二維STPS圖形.
CNN模型的基本結構包括輸入層、卷積層、池化層、激勵層、全連接層五大部分.卷積層是CNN的核心部分,主要利用多個卷積核與輸入圖像進行卷積,提取出圖像中更深層次的特征;池化層一般放在卷積層之后,主要對卷積后的特征圖進行降維處理,避免因特征圖維數(shù)較高造成巨大的計算量以及過擬合現(xiàn)象的發(fā)生;全連接層則是將特征空間線性映射至樣本標記空間,充當分類器的作用.
若要獲取識別率較高的CNN模型,網(wǎng)絡層數(shù)和層內參數(shù)的確定便是一個亟待解決的問題.但對于該問題,目前尚無明確的方法,往往需結合具體問題以及樣本數(shù)據(jù)的特點進行分析[16].一般地,卷積層參數(shù)的確定遵循"長而深"的原則,即卷積核大小應逐漸變小,輸出通道數(shù)應逐漸增多.卷積核大小常以3*3和5*5為主,卷積核數(shù)目結合GPU硬件的配置,以16的倍數(shù)倍增[17].本文是在AlexNet模型的基礎上,根據(jù)驗證集數(shù)據(jù)的辨識效果不斷調整層級結構和網(wǎng)絡參數(shù),并結合其在測試集上的分類性能好壞,從中尋求一個適用于人體睡眠狀態(tài)辨識的最優(yōu)CNN模型.考慮到文中的EEG時-頻譜數(shù)據(jù)集相較于ImageNet數(shù)據(jù)集,結構簡單且數(shù)據(jù)量偏少,因此需簡化AlexNet模型以避免發(fā)生嚴重的過擬合現(xiàn)象.經(jīng)過多次實驗分析,本文最終選定了一個包含3個卷積層、3個池化層和2個全連接層的CNN模型,其結構如圖3所示.
圖3 實驗所搭建的CNN模型結構圖
網(wǎng)絡以128*128*3的時-頻譜圖為輸入數(shù)據(jù),其卷積層采用ReLU作為激活函數(shù),卷積核采用方差為0.01的高斯分布初始化方式,池化層均采用最大池化的方式.經(jīng)卷積、池化等操作提取出各睡眠狀態(tài)深層次的特征后,輸入至第一個全連接層進行降維處理并將有用的信息保留下來,最后由第二個全連接層輸出當前樣本所屬類別,該層輸出節(jié)點設置為6,對應6個睡眠狀態(tài).表1所示為該網(wǎng)絡具體層內參數(shù)設置.
表1 CNN模型參數(shù)
本文選取數(shù)據(jù)庫中無睡眠障礙的10位受試者為研究對象,并按每30 s為一個樣本對其進行處理,最終可得共24 012個樣本數(shù)據(jù).利用Matlab軟件實現(xiàn)EEG信號的預處理和二維圖形化處理,并借助Caffe深度學習框架完成CNN的搭建、訓練和測試工作.實驗基于Microsoft Windows 10操作系統(tǒng),Intel(R)Core(TM)i5-6500 CPU @ 3.2 GHz處理器,12 GB運行內存,在GPU模式下運行,所用GPU為NVIDIA GeForce GTX 1050Ti.
3.2.1 EEG信號去噪
實驗中選用小波閾值法對EEG信號進行頻帶范圍為0.5~30 Hz的去噪處理.圖4所示為某30 s EEG信號去噪前后效果圖.可以看出,小波閾值法有效的去除了原始EEG信號中的噪聲信號,所得信號可以滿足后續(xù)實驗要求.
(a)original signal
(b)filtered signal圖4 某30 s EEG信號去噪前后效果圖
3.2.2 STPS時-頻譜圖
經(jīng)多次實驗分析可知,當采用128點的Hamming窗口對樣本進行120點重疊采樣時,6個睡眠狀態(tài)的STPS時-頻譜圖差異最為明顯.同時,為了提高網(wǎng)絡的訓練速度,并保證時頻圖中的有用信息不被淹沒,對所得時-頻譜圖也進行了適當?shù)膲嚎s,設定壓縮后的時-頻譜圖大小為128*128.圖5所示為不同睡眠狀態(tài)的STPS時-頻譜圖.
(a)W狀態(tài) (b)S1狀態(tài)
(c)S2狀態(tài) (d)S3狀態(tài)
(e)S4狀態(tài) (f)REM狀態(tài)圖5 不同睡眠狀態(tài)的STPS時-頻譜圖
3.2.3 CNN訓練與測試
使用CNN進行睡眠狀態(tài)辨識主要分為訓練和測試兩個步驟:①使用訓練數(shù)據(jù)訓練CNN模型,根據(jù)訓練過程中CNN模型對驗證數(shù)據(jù)的識別效果,判斷所訓練CNN模型是否滿足要求,否則繼續(xù)訓練;②使用訓練好的CNN模型對測試數(shù)據(jù)進行識別以檢驗網(wǎng)絡的泛化效果,并計算網(wǎng)絡的識別準確率.由3.1小節(jié)可知,睡眠樣本總數(shù)為24 012個,具體分布情況如表2所示.實驗中將每個睡眠狀態(tài)的樣本數(shù)據(jù)按8∶1∶1的比例分為訓練集、驗證集和測試集,且實驗過程中保證三者之間沒有重疊部分.
表2 不同睡眠狀態(tài)的樣本分布情況
網(wǎng)絡結構和輸入樣本確定后,就需要對訓練參數(shù),如基礎學習率(base_lr)、權重衰減系數(shù)(weight decay)及最大迭代次數(shù)等進行調整以提高CNN對睡眠狀態(tài)的辨識準確率.本文將base_lr設定為0.001,迭代至2 500次時調整為0.000 1,weight decay選為0.000 5,最大迭代次數(shù)根據(jù)訓練過程中訓練集和驗證集的loss曲線變化情況決定,此處設置為5 000次.圖6(a)所示為CNN訓練過程的loss曲線圖,可以看出,迭代至5 000次時訓練集的loss值接近0.2,且與驗證集的loss值相差很小,網(wǎng)絡取得了較好的收斂效果.此時網(wǎng)絡對于驗證集數(shù)據(jù)的分類準確率也高達93.6%,變化曲線如圖6(b)所示.
(a)訓練loss曲線
(b)驗證集準確率曲線圖6 CNN訓練結果圖
為了直觀分析CNN隱層特征,還分別可視化了Conv1、Conv2和Conv3的輸出特征圖,如圖7所示.Conv1特征圖與輸入圖片較為相似,可看作只是簡單的對輸入圖像進行了不同程度的平滑處理;而Conv2和Conv3已難以看出輸入圖片的特征,但可以發(fā)現(xiàn)有的特征圖對STPS時-頻譜圖低頻部分顏色、邊緣信息最為敏感.可以推斷,顏色、邊緣信息是CNN網(wǎng)絡進行睡眠狀態(tài)判別最顯著的特征.
(a)Conv1
(b)Conv2
(c)Conv3圖7 CNN卷積層輸出特征圖
最后利用測試集數(shù)據(jù)檢驗該CNN模型的泛化能力.辨識結果以混淆矩陣的方式輸出,并引入查準率(Precision,P)、查全率(Recall,R)及F1-Score三個性能評估指標,三者的定義如下所示.查準率反映了該模型對于不同睡眠狀態(tài)的區(qū)分效果.而查全率則反映了該模型對于特定睡眠狀態(tài)的特征學習能力.F1-Score綜合考慮了查準率和查全率指標,用于綜合反映整體的指標,其值越大,表示該模型的分類性能越好[18].
(4)
(5)
(6)
實驗結果如表3所示.從表3中數(shù)據(jù)可以看出,該模型可以很好的識別W、S2、S3、S4和REM五個睡眠狀態(tài),而對于S1狀態(tài)的辨識效果較差.S1多被誤判為REM,究其原因是這兩個睡眠狀態(tài)的信號特征相似度極高,都為低電壓、混合頻率的波,且S1是清醒至睡眠的過渡狀態(tài),持續(xù)時間短,在整夜的睡眠結構中占比也很小,因此這種“誤分類”結果可以說具有一定的合理性.
表3 CNN模型辨識結果混淆矩陣
由實驗結果可知,本文所提的睡眠狀態(tài)辨識方法具有良好的泛化能力,準確率達到了92.04%.為了進一步驗證本文方法的有效性,文中還進行了對比實驗.在保證數(shù)據(jù)集相同的情況下,人工提取睡眠腦電的特征波能量比、樣本熵和功率譜熵等多個特征,并利用支持向量機完成睡眠狀態(tài)辨識,兩種方法所得結果如表4所示.
表4 辨識結果對比
可以看出,本文方法有效的避免了人為構造特征所帶來的誤差,特征提取這一關鍵任務交由CNN完成,通過端到端的訓練方式使其自行提取睡眠腦電中更深層的特征,從而大幅度提升辨識準確率.
本文以準確辨識人體睡眠狀態(tài)為研究目的,針對傳統(tǒng)機器學習人工提取特征算法過程復雜、辨識準確率偏低的問題,提出了一種基于STPS和CNN的人體睡眠狀態(tài)辨識方法.采用STPS處理EEG信號以生成不同睡眠狀態(tài)的時-頻譜圖,CNN自動提取各睡眠狀態(tài)的特征,進而實現(xiàn)睡眠狀態(tài)辨識.實驗結果表明,該方法具有較高的辨識準確率,且實現(xiàn)方便、簡單,為后期的睡眠過程控制研究奠定了堅實的基礎.