陳嬌
南京醫(yī)科大學(xué)附屬兒童醫(yī)院 招標(biāo)采購中心,江蘇 南京 210008
腦機(jī)接口是一個多學(xué)科交叉的領(lǐng)域,其關(guān)鍵點(diǎn)在于如何準(zhǔn)確地對腦電信號進(jìn)行分類[1-4]。常規(guī)的方法是將原始的腦電信號進(jìn)行特征提取,如AAR 模型、公共空間模式、主成分分析、小波分解和功率譜估計(jì)等方法,再將特征值送入分類器進(jìn)行分類,常見的分類器包括線性判別、支持向量機(jī)、貝葉斯分類和神經(jīng)網(wǎng)絡(luò)等[5]。
隨著深度學(xué)習(xí)的興起,卷積神經(jīng)網(wǎng)絡(luò)受到研究者的廣泛關(guān)注,并在圖像識別、視頻識別和語音識別等領(lǐng)域取得了非常好的效果。而對于生理信號,目前還很少有在卷積神經(jīng)網(wǎng)絡(luò)的運(yùn)用。腦電信號是一種非平穩(wěn)的信號,同時還具有較強(qiáng)的隨機(jī)性,這一特點(diǎn)和語音信號有相似的結(jié)構(gòu),所以卷積神經(jīng)網(wǎng)絡(luò)在理論上有運(yùn)用于腦電信號分類的基礎(chǔ)[6-7]。同時傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)運(yùn)用于腦電信號分類的主要問題是權(quán)值過多,當(dāng)網(wǎng)絡(luò)層數(shù)較多的情況下,計(jì)算量會呈幾何級數(shù)的增加,極大地影響了收斂速度。而卷積神經(jīng)網(wǎng)絡(luò)使用了共享權(quán)值的結(jié)構(gòu),使得計(jì)算量大大減少,降低了網(wǎng)絡(luò)的復(fù)雜程度,同時卷積層可以看作是一個特征抽取器,這樣就可以省略了特征提取的步驟,將信號直接送入網(wǎng)絡(luò)。所以卷積神經(jīng)網(wǎng)絡(luò)非常適合運(yùn)用于腦電信號的分類[8]。
使用腦電信號進(jìn)行左右手運(yùn)動想象的識別一直是研究的熱點(diǎn)問題,盡管相關(guān)研究者已經(jīng)提出了非常多的特征提取算法和分類器,但是更優(yōu)秀的分類算法可以更好地解碼腦電信號,提高運(yùn)動想象預(yù)測的魯棒性和準(zhǔn)確率。在一些相關(guān)的文獻(xiàn)中,已經(jīng)有一些將深度學(xué)習(xí)運(yùn)用于運(yùn)動想象分類的研究,但是大多是基于二維的輸入組合,同時訓(xùn)練數(shù)據(jù)不足的問題也影響了分類的訓(xùn)練性能[9-10]。在本文中,我們對左手和右手兩種運(yùn)動想象進(jìn)行分類,比較不同的分類器的結(jié)果,包括了線性分類器、反向傳播神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò),同時提出了運(yùn)用數(shù)據(jù)增強(qiáng)的方法增加訓(xùn)練數(shù)據(jù)量,從而解決了訓(xùn)練器泛化能力不足的問題。
本文使用了國際的腦機(jī)接口競賽數(shù)據(jù)(BCI Competition III)的Data Set III 組數(shù)據(jù)。該數(shù)據(jù)由腦機(jī)接口的權(quán)威研究機(jī)構(gòu)格拉茨大學(xué)提供[11],電極圖和實(shí)驗(yàn)流程如圖1 所示。電極采用氯化銀電極,基于國際通用的10~20 分布系統(tǒng),放置于C3 和C4 位置,C3 和C4 位于大腦皮層的運(yùn)動感覺區(qū)域,是和運(yùn)動功能最為相關(guān)的大腦區(qū)域。實(shí)驗(yàn)的一次流程如下所述:① 首先兩秒是空白屏幕,被試者保持平靜狀態(tài);② 從第二秒開始屏幕正中出現(xiàn)一個十字標(biāo)記,提示被試者準(zhǔn)備開始;③ 從第三秒開始屏幕上出現(xiàn)一個向左或者向右的箭頭,被試者根據(jù)箭頭的朝向,想象右手或者左手的運(yùn)動,這個動作一直持續(xù)到九秒。
圖1 實(shí)驗(yàn)范式
整個實(shí)驗(yàn)一共重復(fù)280 次,其中140 次是有標(biāo)記數(shù)據(jù),另外140 次是測試數(shù)據(jù),沒有標(biāo)記。腦電記錄的設(shè)備采樣率是128 Hz。
根據(jù)神經(jīng)生理學(xué)的研究,人的大腦可以分成四個頻率帶,在人類進(jìn)行運(yùn)動或者運(yùn)動想象的時候,大腦的對側(cè)運(yùn)動區(qū)域的Mu 節(jié)律(8~12 Hz)和Beta 節(jié)律(14~30 Hz)的能量顯著的減弱,同時同側(cè)運(yùn)動區(qū)域的Mu 節(jié)律和Beta 節(jié)律能量明顯的增強(qiáng)。這種生理現(xiàn)象被人們稱為事件相關(guān)去同步(Event-Related Desynchronization,ERD)和事件相關(guān)同步(Event-Related Synchronization,ERS)。這個生理現(xiàn)象是用來預(yù)測左右手運(yùn)動的根本依據(jù)。舉個例子,當(dāng)被試者想象右手運(yùn)動時候,C3 位置的Mu 節(jié)律和Beta 節(jié)律會顯著的降低,同時C4 位置的Mu 節(jié)律和Beta 節(jié)律會顯著的增加。當(dāng)被試者進(jìn)行左手運(yùn)動想象的時候,C3 和C4 的情況會正好反過來。
經(jīng)典的ERD/ERS 計(jì)算方法是將事件發(fā)生前數(shù)秒作為基線,在相關(guān)頻段內(nèi)計(jì)算腦電能量的相對變化。我們先對記錄的數(shù)據(jù)進(jìn)行處理,將C3 和C4 的信號分別經(jīng)過8~12 Hz的帶通濾波器和14~30 Hz 的帶通濾波器,得到4 組數(shù)據(jù)。同時我們要提取出4 組數(shù)據(jù)的能量信息,并通過一個ERD/ERS 計(jì)算公式來求出平均的ERD/ERS 數(shù)據(jù)[12-13]。ERD 的公式如下:
公式(1)中x 為信號數(shù)據(jù),i 為實(shí)驗(yàn)次數(shù),j 為單次實(shí)驗(yàn)中的數(shù)據(jù)序號,N 為重復(fù)次數(shù),這里是70。公式(2)求出前k 個數(shù)據(jù)的平均值做為參考值。公式(3)計(jì)算出k 之后的數(shù)據(jù)和參考值之間的比例,即為ERD/ERS 數(shù)據(jù)。這樣求出來的數(shù)據(jù)有很多毛刺,我們通過一個平滑濾波器將數(shù)據(jù)進(jìn)行平滑,這樣可以得到較為平滑的數(shù)據(jù)。我們提取C3 和C4 的Mu 節(jié)律的數(shù)據(jù),并計(jì)算ERD/ERS 數(shù)據(jù),如圖2 和圖3 所示。
圖2 C3電極的Mu節(jié)律能量分布
圖3 C4電極的Mu節(jié)律能量分布
圖2 和圖3 為ERD/ERS 的計(jì)算結(jié)果,在右手的運(yùn)動想象時,C3 處有能量減小的現(xiàn)象,同時在左手運(yùn)動想象的時候,C4 處有顯著的能量減小。同樣的在Beta 節(jié)律上也有相同的結(jié)果。
所以我們保留C3 和C4 兩個通道的數(shù)據(jù),并分別通過8~12 Hz 的帶通濾波器和14~30 Hz 的帶通濾波器,這樣我們就得到四組數(shù)據(jù),每組數(shù)據(jù)是128 的采樣率,持續(xù)9 s,一共是1152 個采樣點(diǎn),我們保留中間的1024 個點(diǎn),并轉(zhuǎn)變它的結(jié)構(gòu),成為一個32×32 的方陣形式。這樣我們就得到了一次實(shí)驗(yàn)的數(shù)據(jù)為4×32×32 的三維矩陣,4 是兩個電極的兩個帶通濾波,32×32 是一次實(shí)驗(yàn)的采樣點(diǎn)的重構(gòu)。我們再將實(shí)驗(yàn)次數(shù)作為最后一個維度,一共是140 次數(shù)據(jù)。這樣就構(gòu)成了140×4×32×32 的四維數(shù)據(jù)結(jié)構(gòu),這就是我們將要送入網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)結(jié)構(gòu)。
線性判別和支持向量機(jī)這兩種分類器是尋找數(shù)據(jù)在低緯度的投影距離,所以并不用考慮數(shù)據(jù)的歸一化問題,但是神經(jīng)網(wǎng)絡(luò)不一樣,神經(jīng)網(wǎng)絡(luò)需要激活函數(shù)來激活節(jié)點(diǎn),無論是傳統(tǒng)的Sigmoid、Tanh 還是現(xiàn)在流行的ReLU,都需要對數(shù)據(jù)進(jìn)行歸一化,主要的原因是這些激活函數(shù)在節(jié)點(diǎn)數(shù)據(jù)接近于零的時候就等于0,如果輸入的數(shù)據(jù)的絕對值非常接近于0,那么每一個節(jié)點(diǎn)的數(shù)據(jù)激活后就會也接近于0,這種情況下反向傳遞誤差就會接近于0,沒有辦法有效的修改權(quán)重參數(shù),也就是說這個神經(jīng)網(wǎng)絡(luò)就無法收斂[14]。
常用的歸一化方法有線性歸一化、標(biāo)準(zhǔn)差歸一化等。這里我們使用標(biāo)準(zhǔn)差歸一化的方法,標(biāo)準(zhǔn)差歸一化的公式如公式(4)所示。
每一變量值與其平均值之差除以該變量的標(biāo)準(zhǔn)差。雖然該方法在無量綱化過程中利用了所有的數(shù)據(jù)信息,但是該方法在無量綱化后不僅使得轉(zhuǎn)換后的各變量均值相同,且標(biāo)準(zhǔn)差也相同,即無量綱化的同時還消除了各變量在變異程度上的差異,從而轉(zhuǎn)換后的各變量在聚類分析中的重要性程度是同等看待的。而實(shí)際分析中,經(jīng)常根據(jù)各變量在不同單位間取值的差異程度大小來決定其在分析中的重要性程度,差異程度大的其分析權(quán)重也相對較大。經(jīng)過處理的數(shù)據(jù)符合標(biāo)準(zhǔn)正態(tài)分布,即均值為0,標(biāo)準(zhǔn)差為1。
除了使用了標(biāo)準(zhǔn)差歸一化的方法,我們還使用批數(shù)據(jù)標(biāo)準(zhǔn)化技術(shù)(Batch Normalization),即對于數(shù)據(jù)進(jìn)行分批送入神經(jīng)網(wǎng)絡(luò)訓(xùn)練,對于分批的數(shù)據(jù)獨(dú)立進(jìn)行歸一化。
在利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的時候,我們可以看到訓(xùn)練數(shù)據(jù)一共有140 組,數(shù)據(jù)集過小容易造成模型的過擬合,因此我們可以使用數(shù)據(jù)增強(qiáng)的方式增加數(shù)據(jù)量,這樣可以有效的解決模型過擬合的問題。數(shù)據(jù)增強(qiáng)方式經(jīng)常運(yùn)用于圖像的處理中,尤其是圖像識別[15],因?yàn)閳D像識別的目的是識別圖像的類別,比如圖中是貓或者狗或者汽車,所以圖像處理中的數(shù)據(jù)增強(qiáng)一般使用的方法有,水平/豎直翻轉(zhuǎn)、顏色改變、旋轉(zhuǎn)變化、加噪聲和隨機(jī)改變大小等等。我們可以想象,一個圖像經(jīng)過翻轉(zhuǎn)或者改變顏色,扭曲并不會影響它是什么,而腦電信號卻比較特殊,因?yàn)槟X電信號在本質(zhì)上是一個時間序列,所以不能使用翻轉(zhuǎn)或者扭曲的方法。從另一個角度來考慮,腦電信號是一種非平穩(wěn)的信號,信號中有大量的噪聲,信噪比較低,我們需要從很多噪聲的信號中提取有用的信息。同時我們可以從圖2 和圖3 中看到,經(jīng)過多次數(shù)據(jù)的疊加平均,信號特征越來越清晰。所以我們可以認(rèn)為,為原始信號添加白噪聲是一種有效的數(shù)據(jù)增強(qiáng)方式。本文中我們添加一個10 dB 的高斯白噪聲,這個噪聲疊加在原信號中,最后我們產(chǎn)生了更多的訓(xùn)練數(shù)據(jù)。
我們分別使用四種分類器進(jìn)行計(jì)算,并對其性能進(jìn)行對比。四個分類器分別是線性分類器、反向傳播神經(jīng)網(wǎng)絡(luò)、LeNet 和AlexNet 神經(jīng)網(wǎng)絡(luò)。其中LeNet 和AlexNet 是基于卷積神經(jīng)網(wǎng)絡(luò)的經(jīng)典算法,我們根據(jù)本文中的數(shù)據(jù)類型進(jìn)行一些改動,使其能夠適應(yīng)腦電數(shù)據(jù)。
1.4.1 線性分類器
線性分類器是一種監(jiān)督學(xué)習(xí),原理是將帶標(biāo)簽的數(shù)據(jù),通過投影的方法投影到低維的空間形成分類[16]。通常情況下,相同類別的點(diǎn)會靠近,形成一簇。在本文中,我們就是要將左手和右手的數(shù)據(jù)分別投影到低維空間,左手和右手?jǐn)?shù)據(jù)的投影分在兩簇。通過兩組訓(xùn)練數(shù)據(jù),我們求得判別式的ω 和判別閾值ω0。當(dāng)我們需要計(jì)算測試數(shù)據(jù)屬于哪一類的時候,通過公式(5)計(jì)算y 值。再比較y 與ω0的大小來決定測試數(shù)據(jù)屬于哪一類。
1.4.2 反向傳播神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是由輸入輸出,權(quán)值閾值和感知器組成的網(wǎng)絡(luò),他通過反向傳播的算法對權(quán)值進(jìn)行更新,從而有了自適應(yīng)和自我學(xué)習(xí)的功能[17]。首先將訓(xùn)練數(shù)據(jù)送入網(wǎng)絡(luò)以獲得激勵響應(yīng),然后將激勵響應(yīng)同訓(xùn)練數(shù)據(jù)的標(biāo)記計(jì)算誤差,再通過誤差計(jì)算出權(quán)重梯度,最后將這個梯度乘以一個比例加到權(quán)重上進(jìn)行權(quán)重更新。以上步驟反復(fù)進(jìn)行最后得到合適的網(wǎng)絡(luò)權(quán)重。神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如圖4 所示,輸入層一共是32×32=1024 個,隱藏層一共有三層。假設(shè)我們的隱藏層也是1024 個單元,那么我們可以計(jì)算出來整個網(wǎng)絡(luò)的權(quán)重值一共是3×1024×1024+1024×2 個,每次迭代計(jì)算誤差后所有的權(quán)重值都要進(jìn)行更新,計(jì)算量很大,但這僅僅是一個很簡單的網(wǎng)絡(luò)結(jié)構(gòu)。
圖4 反向傳播神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
1.4.3 LeNet和AlexNet神經(jīng)網(wǎng)絡(luò)
我們可以看到反向傳播神經(jīng)網(wǎng)絡(luò)的計(jì)算量非常大,每次更新權(quán)值需要消耗大量的時間,這也限制了網(wǎng)絡(luò)的規(guī)模。我們使用了LeNet 和AlexNet 兩種新的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),可以大大減少計(jì)算量,有效地節(jié)約計(jì)算時間。這兩種結(jié)構(gòu)是通過卷積的方法實(shí)現(xiàn)了權(quán)值共享,這樣只需要更新卷積核的權(quán)值即可,無需更新所有權(quán)值。下面我們來根據(jù)我們的腦電數(shù)據(jù)來設(shè)計(jì)具體的LeNet 和AlexNet 結(jié)構(gòu)。首先是LeNet 結(jié)構(gòu),這個結(jié)構(gòu)是Lecun 在解決手寫數(shù)字問題是設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu),我們經(jīng)過一些改進(jìn)運(yùn)用于腦電數(shù)據(jù)的分類,結(jié)構(gòu)如圖5 所示。首先最左邊是輸入,我們的原始數(shù)據(jù)是一個32×32 的二維矩陣結(jié)構(gòu),同時它有4 個通道的數(shù)據(jù),是一個4×32×32 的結(jié)構(gòu)體。首先經(jīng)過一次卷積,卷積核是5,邊界處理是2,卷積步長是1,這樣可以得到一個同樣尺寸但是有16 層的卷積結(jié)果。然后經(jīng)過激活函數(shù)Sigmoid 和池化降采樣,得到一個16×16×16 的數(shù)據(jù)結(jié)構(gòu)。然后再經(jīng)過一次卷積,卷積核是5,邊界處理是2,卷積步長是1,可以得到一個32×16×16 的數(shù)據(jù)結(jié)構(gòu)。再經(jīng)過激活函數(shù)Sigmoid 和池化降采樣,得到一個32×8×8 的數(shù)據(jù)結(jié)構(gòu)。最后經(jīng)過一個全連接層,將數(shù)據(jù)結(jié)構(gòu)體全展開,最后輸入一個線性層得到最終的概率結(jié)果。根據(jù)這個概率結(jié)果就可以分類出是左手還是右手運(yùn)動想象[18]。
圖5 LeNet的卷積網(wǎng)絡(luò)的結(jié)構(gòu)
由于我們使用了卷積的方法,并且是共用卷積權(quán)值,那么數(shù)據(jù)的計(jì)算量就少了很多,每次需要更新的權(quán)值也少了。這就是使用LeNet 的意義所在。同時使用了池化降采樣的方法,這樣可降低網(wǎng)絡(luò)訓(xùn)練的參數(shù)以及解決模型過擬合的問題。
AlexNet 主要是在LeNet 的基礎(chǔ)上使用了新的激活函數(shù)ReLu 以及更深的網(wǎng)絡(luò)和Dropout 技術(shù)。與LeNet 相比,AlexNet 多了三層卷積層,并且在最后的全連接層使用了Dropout 方法。Dropout 是以一定的概率對神經(jīng)元輸出設(shè)置為零,一般概率為0.5。這樣設(shè)定的神經(jīng)元既不參與向前計(jì)算誤差也不參與反向傳遞誤差。這樣就等于每次神經(jīng)網(wǎng)絡(luò)的計(jì)算都是一個新的結(jié)構(gòu),但是這些結(jié)構(gòu)是共享權(quán)值的。這種方法是暫時的,對于隨機(jī)梯度下降來說,是隨機(jī)丟棄的,等于是每次訓(xùn)練都是一個不同的網(wǎng)絡(luò),可以有效地防止模型過擬合。因?yàn)樯窠?jīng)元不能依賴于其他某一個特定的神經(jīng)元,所以這種技術(shù)降低了神經(jīng)元復(fù)雜的互適應(yīng)關(guān)系,正因?yàn)槿绱?,?xùn)練出來的網(wǎng)絡(luò)更具有魯棒性[19]。Dropout 只用于最后的網(wǎng)絡(luò)全連接層。
我們一共使用了四種分類器,分別是線性分類器、反向傳播神經(jīng)網(wǎng)絡(luò)、LeNet 和AlexNet 卷積神經(jīng)網(wǎng)絡(luò)。四種分類器的輸入特征都是一致的,分別是70 組訓(xùn)練數(shù)據(jù)和70 組測試數(shù)據(jù)。首先我們看四種分類器的正確率,結(jié)果如表1 所示。
表1 四種分類器的準(zhǔn)確率
可以看到,相比于線性分類器,反向傳播的神經(jīng)網(wǎng)絡(luò)能夠?qū)⒎诸悳?zhǔn)確率提高13%,而兩種神經(jīng)網(wǎng)絡(luò)又有大約6%的提高,這是因?yàn)樯窠?jīng)網(wǎng)絡(luò)有更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),可以有效地提高分類能力,同時兩種卷積網(wǎng)絡(luò)有效地增加的網(wǎng)絡(luò)的泛化能力,相比于反向傳播神經(jīng)網(wǎng)絡(luò)有更好的性能。當(dāng)年腦機(jī)接口競賽的最好成績只是87%,兩種卷積網(wǎng)絡(luò)的準(zhǔn)確率高于競賽的成績。然后我們再對比兩種卷積網(wǎng)絡(luò)的泛化能力,我們將數(shù)據(jù)增強(qiáng)后的數(shù)據(jù)放入網(wǎng)絡(luò)中訓(xùn)練,依然用原來的測試數(shù)據(jù)。結(jié)果如圖6 所示。我們可以看到在測試誤差上,AlexNet 的表現(xiàn)好于LeNet,但是在訓(xùn)練誤差上是相反的,LeNet 的效果好于AlexNet,這說明了在數(shù)量較大的情況下,網(wǎng)絡(luò)容易訓(xùn)練出過擬合的情況,所謂過擬合就是網(wǎng)絡(luò)在訓(xùn)練集有著非常良好的表現(xiàn),但是在測試數(shù)據(jù)集表現(xiàn)反而不如訓(xùn)練集。這是一種常見的問題,以前經(jīng)常會用正則化的方式來解決問題,這里AlexNet 使用了Dropout 的方法來解決過擬合問題,結(jié)果是訓(xùn)練集的誤差上升了一些,但是在測試集中的表現(xiàn)更加良好,這樣的網(wǎng)絡(luò)更具有泛化的特點(diǎn)。從圖6 可以看出來,使用了Dropout 的AlexNet 在訓(xùn)練集的誤差有所提高,但是測試集的誤差反而降低了,這說明有Dropout 的AlexNet 具有更好的泛化能力,這說明AlexNet 能夠有效地解決大數(shù)據(jù)情況下的過擬合問題。
圖6 兩種卷積網(wǎng)絡(luò)的誤差
本文提出并實(shí)現(xiàn)了兩種基于LeNet 和AlexNet 的卷積神經(jīng)網(wǎng)絡(luò),用來對運(yùn)動想象的腦電數(shù)據(jù)進(jìn)行分類,同時采用了數(shù)據(jù)增強(qiáng)的處理方法。在兩種卷積神經(jīng)網(wǎng)絡(luò)上改進(jìn)了傳統(tǒng)的運(yùn)用于圖像的方法,使其適用于腦電數(shù)據(jù)。試驗(yàn)結(jié)果表明,本文提出的方法獲得較好的運(yùn)動識別率,同時相比于傳統(tǒng)的反向傳播神經(jīng)網(wǎng)絡(luò),降低了計(jì)算的復(fù)雜度。相比于傳統(tǒng)的線性分類器和反向傳播神經(jīng)網(wǎng)絡(luò),新的網(wǎng)絡(luò)的有更好的分類準(zhǔn)確率。同時比較了LeNet 和AlexNet 的性能,在數(shù)據(jù)增強(qiáng)之后,AlexNet 的Dropout 能夠使網(wǎng)絡(luò)獲得更好的泛化能力,解決過擬合問題??傮w上來看本文提出的兩種卷積神經(jīng)網(wǎng)絡(luò)算法有著更好的性能。
深度卷積網(wǎng)絡(luò)有著強(qiáng)大的學(xué)習(xí)能力,其更有特色的地方在于多種類的分類問題,比如ImageNet 比賽中,分類情況已經(jīng)達(dá)到了1000 種,所以在以后的研究中,可以嘗試更多種類的腦電信號分類,比如左手、右手、舌頭和腿的四分類情況,甚至是ECoG 的細(xì)分到每根手指的分類情況,這樣更有助于腦機(jī)接口的精細(xì)化使用。