我正在研究睡眠階段分類。我閱讀了一些有關此主題的研究文章,其中許多使用SVM或集成方法。使用卷積神經網絡對一維腦電信號進行分類是一個好主意嗎?
我是這種工作的新手。請問我有什麼問題嗎?
我正在研究睡眠階段分類。我閱讀了一些有關此主題的研究文章,其中許多使用SVM或集成方法。使用卷積神經網絡對一維腦電信號進行分類是一個好主意嗎?
我是這種工作的新手。請問我有什麼問題嗎?
我猜想1D信號表示時間序列數據,其中假設值之間存在時間依賴性。在這種情況下,卷積神經網絡(CNN)是可能的方法之一。此類數據最流行的神經網絡方法是使用遞歸神經網絡(RNN),但您也可以使用CNN或混合方法(準遞歸神經網絡,QRNN),如 Bradbury et al(2016)所述。,並在下面的圖中進行了說明。還有其他方法,例如單獨使用注意力,如 Vaswani等人(2017年)所述的Transformer網絡中,有關時間的信息是通過 Fourier系列特徵傳遞的。
對於 RNN,您將使用一個單元格,該單元格將先前的隱藏狀態和當前輸入值作為輸入,以返回輸出和另一個隱藏狀態,因此信息會通過隱藏狀態流動。使用CNN,您將使用一定寬度的滑動窗口,它將看起來像數據中的某些(學習過的)模式,並將這些窗口彼此堆疊,以便更高級別的窗口看起來用於較低級別模式中的模式。使用此類滑動窗口可能有助於查找諸如重複數據中的模式(例如季節性模式)之類的內容。 QRNN層混合了這兩種方法。實際上,CNN和QRNN架構的優點之一是它們比RNN更快。
您當然可以使用CNN對一維信號進行分類。由於您對睡眠階段分類感興趣,請參見本文。它是一個稱為DeepSleepNet的深度神經網絡,它使用1D卷積層和LSTM層的組合將EEG信號分類為睡眠階段。
這是架構:
網絡有兩個部分:
最後,有一個5向softmax層將時間序列分為對應於睡眠階段的五種類別之一。
我想強調在處理長序列時使用堆疊式混合方法(CNN + RNN):
您可能已經知道,一維CNN對時間步長的順序並不敏感(不超過本地範圍)。當然,通過在彼此之上堆疊許多卷積和池化層,最終的層能夠觀察到原始輸入的更長子序列。但是,這可能不是建模長期依賴關係的有效方法。儘管CNN與RNN相比非常快。
另一方面,RNN對時間步長敏感,因此可以很好地建模時間依賴性。但是,眾所周知,它們在建模非常長期的依存關係方面較弱,因為時間步長可能具有時間依存關係,並且時間步長在輸入中很遠。此外,當時間步長很高時,它們非常慢。
因此,一種有效的方法可能是以這種方式組合CNN和RNN:首先,我們使用卷積和池化層來減少輸入的維數。這將為我們提供具有較高功能的原始輸入的壓縮圖像。然後,我們可以將此較短的1D序列饋送到RNN,以進行進一步處理。因此,我們同時利用了CNN的速度和RNN的表示能力。儘管,與其他方法一樣,您應該針對特定的用例和數據集進行試驗,以了解其是否有效。
以下是此方法的粗略說明:
--------------------------
--
-一維長序列-
--
--------------------------
|
|
v
=========================
= =
=轉化+匯總層=
= =
=========================
|
|
v
---------------------------
--
-簡短表示-
- (更高層次 -
-CNN功能)-
--
---------------------------
|
|
v
==========================
= =
=(RNN圖層的堆棧)=
= =
==========================
|
|
v
==============================
= =
=分類器,回歸器等=
= =
==============================
FWIW,我建議您從本文中檢查時間卷積網絡(我不是作者)。他們有一個很好的想法,可以使用CNN來處理時間序列數據,對時間順序敏感,可以對任意長序列進行建模(但沒有內存)。