Paper Reproducing (1) -- Deep Learning for EEG Classification

人工智能领域的很多技术早已被应用在一些和医疗相关议题,较为常见的是利用深度学习技术对医学影像进行分析 (如协助判断患者是否患有癌症,预测癌细胞是否出现转移);也有很多是利用深度学习于讯号处理 (如分析病患的脑电波讯号 EEG, 辅助医生诊断睡眠呼吸暂停综合症,Sleep Apnea Syndrome)。

我想实际了解一下如何使用深度学习技术对人的脑电波进行分析,因此选了一篇已经发表的论文,针对其设计的模型进行还原。该论文使用了较为热门的卷积神经网络 (Convolutional Neural Networks, CNN) 作为模型的主要结构,并把问题的定义归为监督式学习(Supervised Learning)。

阅读要求:需要有基础的机器学习相关知识

PS: 所有程式码均不公开到 Github


Related Paper:

O. Tsinalis, P. M. Matthews, Y. Guo, and S. Zafeiriou. (Oct. 2016). “Automatic sleep stage scoring with single-channel EEG using convolutional neural networks.” [Online]. Available:https://arxiv.org/abs/ 1610.01683


Problem Definition

论文使用人体EEG脑波信号,对睡眠状态进行侦测。片段的EEG信号会有相对应的睡眠状态标签,输入资料为EGG信号,输出资料为睡眠状态类别;如某个EGG信号序列为 [1, 0, 2, 3, 4, 5 ...] ,睡眠状态类别是 [ N1],因此 [1, 0, 2, 3, 4, 5 ...] -- [N1] 即为一笔训练资料,因此问题定义为分类问题 (Classification),因此问题用监督式学习 Supervised Learning 可解。


Dataset

为了在复原论文所提出模型的同时,测试其模型的一般性,因此我使用的资料集与论文中所使用的资料集不同,我所使用的是UCDDB资料集 (University College Dublin Sleep Apnea Database)[1]。 UCDDB资料集收集25名病患(21男,4女,平均年龄50岁,平均体重95kg,平均身高173cm)的PSG信号资料。每一份记录包含两个EEG channel的资料(C3-A3和C4-A1 ;指的是头部不同的位点)。资料的取样率为128Hz,即每秒钟有128个资料点;此外,每30秒的讯号资料将对应一个睡眠状态标签 (共有 5 种睡眠状态)。举例而言,一笔150秒的资料包含 5 笔 30 秒的讯号资料,对应5个睡眠状态标签,总共有150 x 128 = 19200个资料点。


Model Structure

论文中,模型的结构如下图所示(我只还原其设计,因为资料的不同,输入向量的大小会不一样)。模型基于CNN网路,输入资料会先经过 20 个 1D-filter 进行特征提取取,然后做max -pooling 的动作;然后 20 个 vector 会堆叠在一起形成一个 2D 的向量空间;这个 2D 的向量会经过 400 个 filter 做进一步的特征提取,400 个向量经过 max -pooling 后进入全连接层,随后输出 5 维的向量,对应 5 个睡眠状态 (如 [0,0,0,0,1] 对应状态1, [0,0,0,1,0] 对应状态2, [0,0,1,0,0] 对应状态3, [0,1,0,0,0] 对应状态4, [1,0,0,0,0] 对应状态5 )。


【Automatic sleep stage scoring with single-channel EEG using convolutional neural networks, https://arxiv.org/abs/ 1610.01683】


参照论文设计相同,程式中用TensorFlow + Keras 输出的模型结构

Experiment Setting

环境:使用VScode编写程式,程式语言为python 3.6,深度学习框架为Tensorflow 2.0 + Keras,运行环境配有多张高性能GPU。

资料前处理:使用raw-data作为输入,不做任何计算特征的动作,仅仅是读原始资料结构,转换为输入资料的结构。

Training and Testing:资料集共包含25名病患的资料,在训练一个模型的过程中,我们的训练资料为前24名病患的资料,测试资料为1名病患的资料。因此我们训练25个模型,最后取平均得到整体的模型准确度。

主要参数设定:optimizer: Adma,epochs:500,validation=0.2, class_weight=“ balanced”, loss=“categorical_crossentropy”。


Results Analysis

以下是实验结果,以 Confusion Matrix 的形式呈现,有25个模型,因此有 25 张图。由于篇幅关系仅选取其中 9 个 Confusion Matrix 的结果。


Result 1
Result 2
Result 3
Result 4
Result 5
Result 6
Result 7
Result 8
Result 9


Conclusion

从初步的结果上看,模型的平均准确度只有0.541,因此效能并不算好 (很不好)。

参数并未做调整,复原论文时没有深究参数设定对模型效能的影响,也无法由此次结果探讨模型之一般性。

复原的结果即便使用新的资料集,依旧与论文呈现的结果有所差异,这部分需要探究论文所使用资料集与本次作业使用的资料集的差异性。


Reference

[1] https://physionet.org/content/ucddb/1.0.0/

你可能感兴趣的:(Paper Reproducing (1) -- Deep Learning for EEG Classification)