馬家睿,王 蓓,金 晶,王行愚
(華東理工大學 化工過程先進控制和優化技術教育部重點實驗室,上海 200237)
近些年,深度學習方法在自然語言處理、圖像識別、語音識別等領域獲得了巨大的成功,為睡眠自動判讀帶來了新的思路[1-4]。睡眠自動判讀主要包含特征提取和分類識別兩大步驟[5]。在特征提取階段,深度學習方法能夠從原始信號中自動提取特征,避免了手工設計特征的局限性。例如,Bonnet等構建了一個多層卷積神經網絡[6],Yuita等結合了深度信念網絡和長短時記憶模型對睡眠狀態進行劃分[7],Supratak等設計了基于卷積神經網絡和長短時記憶模型的深度睡眠網絡[8]。上述研究均取得了較好的效果,但仍存在不足之處。一方面,隨著神經網絡深度的增加,特征表達的能力也會增加[9,10],然而當網絡深度達到一定程度時,會導致梯度爆炸或彌散問題。另一方面,自動判讀的結果往往存在與實際睡眠狀態轉換不相符的情況,且較難通過調整模型本身的結構來改善。因此,如何考慮睡眠狀態的變換規律[11,12],貼近人工判讀的經驗方式,得到與實際相符的睡眠狀態變化結果仍有待研究。
針對上述不足,提出了一種結合狀態轉移規則的深度睡眠分期模型。首先,在卷積神經網絡中添加多個殘差塊來加深網絡層數,提取信號高維特征,再進行分類;其次,考慮睡眠狀態之間的轉移規律,基于Dijkstra算法轉化為最短路徑,設計了轉移規則和平滑規則,對預測結果中不合理的狀態轉移情況進行修正;最后,對模型進行評估,與人工判讀方式進行了分析和比較,同時也與相關的一些方法進行了對比。
本文提出的結合狀態轉移規則的深度睡眠分期模型結構如圖1所示。

圖1 結合狀態轉移規則的深度睡眠分期模型
圖1主要包含Part 1、Part 2和Part 3這3個模塊。Part 1是特征學習模塊,通過卷積神經網絡和多個殘差塊構成深度神經網絡模型,自動提取高維特征;Part 2是分類識別模塊,采用Softmax對睡眠狀態進行分類。Part 3是狀態糾正模塊,在深度神經網絡預測結果基礎上,通過轉移規則和平滑規則進行修正處理。其中,Part 1和Part 3兩個模塊的處理過程將在1.1和1.2節中進行詳細介紹。
特征學習部分是一個含有20層的卷積網絡,由卷積模塊和殘差模塊兩部分組成。每個卷積模塊由4個卷積層和兩個最大池化層組成。卷積模塊采用了兩個不同大小的卷積核分別提取時域和頻域特征,并依次執行卷積和線性單元(ReLU)激活兩個操作。池化層用來降低特征維度。對于卷積神經網絡,如果只是簡單地增加深度,會導致梯度彌散或爆炸的問題發生,雖然數據的正則化[13]可以解決梯度問題,但這會導致網絡的性能降低。因此,為了避免梯度問題的發生,并增強神經網絡特征表達能力,在卷積網絡之后添加了殘差塊。假設x輸入通道數為128,W1,W2分別表示殘差塊第一層和第二層的權重,F(x)表示第二個激活函數之前的殘差塊的輸出。數學表達式可由式(1),式(2)表示
F(x)=W2σ(W1x)
(1)
H(x)=σ(F(x)+x)
(2)
上述表達式只有當輸入和輸出維度相同時才能直接使用,如果x和F(x)的維度不匹配,則有兩種方法可以采用。一種方法是使用線性投影Ws,由式(3)表述
H(x)=σ(F(x)+Wsx)
(3)
另一種方法是使用全0填充。考慮到使用線性投影增加了神經網絡的參數和計算量,因此,當輸入輸出維度不匹配時,使用全0填充使輸入和輸出維度保持一致。一個典型的帶有shortcut的殘差塊結構以及維度不匹配殘差塊結構分別如圖2(a),圖2(b)所示。

圖2 殘差網絡結構設計
本文中,在卷積神經網絡后添加了7個殘差塊,每個殘差塊中依次包含卷積、批規范化,線性激活操作。假設輸入信號序列為x1,x2, …,xi, …,xn,特征學習自動提取時域和頻域特征的過程由式(4)~式(7)表述
fi=Filterθf(xi)
(4)
fj=Filterθt(xi)
(5)
ff=fi+fj
(6)
ft=Res_blockθr(ff)
(7)
其中,Filterθf和Filterθt表示不同大小的卷積核,fi和fj表示提取的頻域和時域特征,Res_blockθr表示多個殘差塊,ft表示經多個殘差塊處理后得到的高維特征。表1給出了特征學習中深度神經網絡每層參數的設定以及輸出。
其中1-6層有兩組參數,分別代表提取的時域和頻域特征網絡參數。
在不受到外界干擾的情況下,人的整夜睡眠是一個由淺入深再到淺的動態過程。在過渡階段,當前時刻睡眠狀態會向相鄰的睡眠狀態轉換,而不相鄰的睡眠狀態轉換的可能性較小甚至極小。在持續階段,睡眠的某一狀態會保持一段時間,然而僅依靠腦電等生物電信號的特征來判斷并不夠充分,需要依據前后特征變化來判斷當前睡眠狀態是否處于持續期。本文設計的狀態糾正模塊由轉移規則和平滑規則兩個部分組成。不同的規則代表了睡眠狀態變換規律的不同特性,轉移規則表示不同睡眠分期之間過渡的最大可能性,平滑規則代表了某一睡眠分期的持續性。

表1 深度神經網絡每層參數以及輸出
1.2.1 轉移規則
從一個睡眠狀態過渡到另一個睡眠狀態,腦電信號的特征會呈現出逐漸變化的過程。例如,當睡眠狀態從清醒期Wake向入眠期S1過渡時,腦電信號中往往伴隨著α特征逐漸減少而θ特征逐漸增加的過程。從聚類的角度來分析,過渡階段的特征與持續階段的特征相比,會逐漸地偏離聚類中心,從而造成自動分類結果在相鄰的睡眠分期中相互混淆,很難得到合理的判斷結果。
針對該問題,解決思路是使用概率高的狀態轉移路徑取代概率小的狀態轉移路徑。首先,基于馬爾可夫模型,計算了不同睡眠狀態之間的轉移概率,見表2。其中,第一列表示當前數據段對應的睡眠狀態,第一行表示下一個數據段對應的睡眠狀態,對角線上的數值表示同一睡眠狀態的持續概率,其余數值表示不同睡眠狀態之間的轉移概率。

表2 睡眠狀態轉移概率
其次,設G(i,j)表示從階段i轉移到階段j的概率,由于狀態自身轉移的概率較大,為了避免轉移過程中狀態自身轉移覆蓋不同階段轉移的情況,將狀態自身轉移概率設置成一個無窮小的正數,再通過式(8)將狀態轉移概率轉換為睡眠狀態之間路徑長度
T(i,j)=-logG(i,j)
(8)
顯然,轉移概率越大,對應的路徑長度越短。如果將睡眠的不同狀態看作是有向圖的若干個節點,那么不同睡眠狀態之間的最合理轉移情況可以看成帶正權邊有向圖節點之間最短路徑問題。
最后,基于Dijkstra算法得到不同睡眠狀態之間的最短路徑,并設計狀態糾正處理步驟。需要注意的是,在整夜睡眠過程中會發生持續時間短暫的中途覺醒,但較難體現在表2中的狀態轉移概率中。本文在判斷最短路徑時將該特定狀態的發生也融入到糾正處理步驟中。當出現前后連續的3個狀態各不相同的情況時,如初始值分別為Sk-1=SA,Sk=SB,Sk+1=SC。
(1)假設Sk-1和Sk+1為真,判斷狀態SA到狀態SC的最短路徑。
Case 1:當SA經由SB到SC的路徑最短時,不需要修正,輸出結果(SA,SB,SC);
Case 2:當SA直接到SC的路徑最短時,且SB是清醒期W或入眠期S1(中途覺醒),則不修正Sk并輸出結果(SA,SB,SC),反之SB不是清醒期W和入眠期S1,則修正Sk為SC并輸出結果(SA,SC,SC);
Case 3:當SA到SC的最短路徑,經由其它SX(非狀態SB)時,將(SA,SX,SC)保留待定;
(2)假設Sk-1和Sk為真,判斷SA經由SB到其它狀態的最短路徑,也就是Case 4(SA,SB,SY),并與Case 3(SA,SX,SC)相比較,將兩者中最短路徑對應的狀態作為輸出結果。
1.2.2 平滑規則
平滑規則是對睡眠狀態的持續性進行修正。由于腦電等生物電信號的復雜性,即使在睡眠狀態持續過程中,也會出現特征變化,且特征波往往會以簇的形式出現在信號中,也造成前后數據段特征波的能量存在差異性。專業醫師在進行人工判讀時,會結合前后數據段對中間數據段對應的睡眠狀態進行平滑處理。因此,相對于人工判讀,計算機自動判讀的結果往往會出現不必要或者不合理的波動。例如,清醒期Wake可能會轉變為淺睡眠S1或S2,但很少會直接進入深度睡眠期SWS和快速眼動期REM。本文設計的平滑規則也分為兩個步驟:
(1)在連續5個數據段中,當前后3個數據段狀態相同,而中間混合兩個狀態相同的數據段的情況。如初始值分別為(SA,SB,SB,SA,SA),將其修正為(SA,SA,SA,SA,SA)的形式。
(2)在連續3個數據段中,當前后兩個數據段的狀態相同,而與中間數據段的狀態不同的情況。如初始值分別為(SA,SB,SA),判斷B是否是清醒期Wake或入眠期S1(中途覺醒)。如果是,則不需要修正,輸出結果(SA,SB,SA);如果否,則進行修正,輸出結果(SA,SA,SA)。
分析測試用的數據來自于公共數據庫SLEEP-EDF。該數據庫包含了受試者整晚的多導睡眠圖記錄,包括腦電、眼電和肌電等信號。由于腦電信號中包含了睡眠過程大部分信息,因此僅使用了來自Pz-Oz通道的腦電信號進行分析。共有20名被試的數據,年齡在25-34歲之間,男女各占一半,在采集的過程中沒有使用任何藥物。采樣頻率為100赫茲。將連續記錄的腦電信號劃分為每30 s一段,每一段對應一個睡眠分期標簽,包含了Wake,REM,S1、S2和SWS這5個類別。
在對深度神經網絡的訓練過程中,采用了均方根傳遞算法(root mean square prop,RMSprop)對網絡模型進行訓練,其中學習速率被設置為0.01,動量因子設置為0.9。為了提高計算機的內存應用率,將每次訓練的batch size 大小設置為128。
為充分利用數據,采用20折交叉驗證對模型進行評估,一個受試者的數據作為測試集,其余19個受試者數據作為訓練集,重復20次,最后生成一個混淆矩陣,并計算召回率(Recall,RE),F1評分(F1-score,F1),查準率(Precision,PR),準確率(Accuracy,ACC)。表3為僅使用卷積神經網絡進行預測的混淆矩陣,表4給出了結合狀態轉移規則的深度睡眠分期模型的混淆矩陣。矩陣的行表示人工判讀標簽,列表示模型預測標簽。

表3 基于卷積神經網絡模型的睡眠分期預測混淆矩陣(ACC:0.792)

表4 結合狀態轉移規則的深度神經網絡模型的睡眠分期混淆矩陣(ACC:0.823)
從表3和表4可以看出,本文所提出的深度睡眠分期模型與卷積神經網絡相比,總體判讀精度提高了3.1%。觀察每一類的F1-score可得,非快速眼動期REM、淺睡眠期S2和深睡眠期SWS均有顯著提高,清醒期Wake也保持了較好的水平。相對于其它睡眠分期,入眠期S1的F1-score相對較低,但與表3相比,表4中S1的F1-score值也有所提升。入眠期S1主要是從清醒期Wake到淺睡眠期S2的過渡狀態,在整夜睡眠中S1的樣本數量遠小于Wake和S2期,存在數據不平衡的現象,使得神經網絡對S1的訓練不夠充分,從而造成精度較低。
此外,為了驗證提出的深度睡眠分期模型的判讀效果,與現有的一些方法也進行了比較,這些方法均使用了相同的數據集。比較結果見表5。

表5 與其它方法的比較
其中,文獻[14]采用的是人工提取特征結合機器學習方法進行睡眠分期判別,文獻[7]和文獻[15]均采用的是自動提取特征,也屬于深度學習方法的研究工作。結合表4的分類精度,可以看出提出的深度睡眠分期模型相對于其它方法獲得了較好的分類效果。
為了更直觀地觀察整夜睡眠狀態的判讀效果,圖3和圖4分別給出了一名被試整夜8小時的人工判讀結果和混合模型預測結果,橫軸表示時間,縱軸為不同的睡眠狀態。對比圖3和圖4后可以看出,該深度睡眠分期模型所得到的整夜睡眠狀態變化的總體趨勢與人工判讀較為一致。Wake、S2和SWS,以及REM的判讀效果較為理想;S1期作為從清醒到睡眠的過渡階段,會存在較易與相鄰的Wake和S2相混淆的現象,部分REM與S1之間也存在混淆的現象,但與其它方法相比也有所提高。

圖3 人工判讀結果

圖4 深度睡眠分期模型判讀結果
本文提出了一種結合狀態轉移規則的深度睡眠分期模型,具有兩大特點:一是在卷積神經網絡中添加了殘差網絡加深網絡層數,能夠自動提取信號特征用于睡眠判讀;二是利用最短路徑算法設計了狀態轉移糾正規則對分類器預測結果不合理的部分進行了自動糾正。實驗結果表明,該模型取得了和人工判讀較為一致的結果,且狀態轉移規則更貼近實際睡眠狀態的變換規律,對不合理的預測序列具有一定的糾正效果,提升了睡眠分期的判讀準確率,能夠為臨床應用提供一種有效可行的睡眠分期輔助判讀方法。