脑机接口(BCI)指的是将大脑与计算机连接起来的工具。过去十年间,业界对 BCI 的关注度迅速增长——一个典型例子就是,埃隆·马斯克名下主要研发脑机接口技术的初创企业 Neuralink 每次开新发布会都会引发舆论热议 [1]。Neuralink 可以在大脑中植入人造物来完成多种任务,诸如用思维来控制动作或直接在大脑中播放音乐等。
你会感到恐惧吗?没关系,这是很正常的。
但在这篇文章中,我们将只关注一个简单的 BCI 实现,具体来说是用一个娱乐设备 [2] 记录脑电波活动,即脑电图(EEG)。这个实现不需要对人体做任何手术(也不会有疼痛或死亡风险)。虽然你(很遗憾)不能用它来收听你最喜欢的乐曲列表,但可以实时观看 BCI 佩戴者的情绪波动(只不过是以 代码 的形式)。
如前所述,在本教程中我们将从想法一路走到具体的实现,完成所有必要的步骤来设计一个处理具体任务的 BCI。作为示例,我们要做的 BCI 属于情绪估测领域。这个应用旨在估计参与者的情绪状态。
情绪 BCI 图解。
如图所示,这个管道的目的是将参与者的 EEG 信号作为输入,并返回相应的 V-A 情感坐标图。V-A 图是一种应用于生物心理学的情绪坐标,其中 Valence(横轴)代表愉快和不愉快(即积极和消极)的程度,而 Arousal(纵轴)代表兴奋和平静的水平。基于这种表示,任何情感状态均可表示为 VA 坐标平面上的一个点。
具体而言,为设计和部署 BCI,我们必须遵循几个关键步骤。
首先我们要定义 BCI 的范式:我想对什么事物建模?或者想要估计哪些信息?我的应用程序的目的是什么?我是否想通过 BCI 来控制机械手 / 脚?我是要评估驾驶任务中驾驶员 / 成员的警觉性吗?是要预测疾病的发作几率?还是检测癫痫发作状态?科学界对一些可以插入 BCI 的研究项目存在巨大兴趣。
在本文的案例中,我们决定关注之前的一项研究工作,就是估计参与者观看一些视频时的情绪状态 [3]。这篇论文还提出了一个可以促进特定情绪状态的视频列表(我们对此非常感兴趣!)。这些视频的列表和对应的情绪都可以在 youtube 上找到,并列在注 [4] 中。
因此我们设计了一个实验基准测试,包括在参与者观看宣传特定情绪的视频时记录他们的 EEG 信号。在我们的 存储库 中,脚本 registration_pipeline.py 给出了一段完成这一任务的代码,用户只需将他想要处理的视频放在专用目录中(或改变路径)即可。
有了上述基准测试,我们就可以完成脑电波信号的记录工作了。这些信号最后将构成训练 ML 模型(甚至是 DL)所必要的数据集。
我们来做这个模型吧...... 等一下!
在建成一个能够从 EEG 信号中估计情绪的管道之前,我们必须提取信息来帮助模型处理数据。如果你有大量信号和 / 或可用的计算资源,跳过这一步也是可以的。但为了保持简洁,我们考虑采用更自然简单的模型来简化复杂性。一种可能的提取信息的方法是基于脑电图信号的频率特性,也就是说“这个脑电图片段是在高频率还是低频率范围内振荡?”。过去,科学家们发现,一些脑电图信号是由几个频段组成的,每个频段在特定的任务或行为中都会增强 / 减弱 [4]。
δ为深度睡眠,[0-4Hz]。
θ表示昏昏欲睡,[4-7Hz]。
α代表放松和闭目思考,[8-15Hz]。
β代表积极思考和与专注相关的状态 [16-31Hz]。
γ代表感受到更多压力的状态 [32-50Hz]。特征提取的图示。
按照这个过程,我们从每个 EEG 片段中提取了一个信息向量。这个过程的目的是提取信息,以便更好地处理生物医学信号。这个步骤可以使用脚本 outline_analysis.py 的第一部分来处理。
最后(如果你还跟得上的话),你应该知道剩下的步骤是创建一个模型,用它从上面预计算的特征向量中估计情绪状态(是快乐还是悲伤?)。这里为了让我们的方法简单易懂,我们考虑一个由决策树组成的简单模型。这种简单方法背后的想法是寻找动态阈值来区分信息向量,例如第 i 个电极的高α贡献对应于低 arousal,第 j 个电极的中等γ贡献对应于高 valence,等等。
给出特征向量 X 和它的标签 y,就可以创建一个名为 clf 的分类器(对应于决策树)。该分类器可以通过以下几行代码轻松训练。
from sklearn import tree
clf = tree.DecisionTreeClassifier() # definition of the model
clf.fit(X, y) # training of the model
...
在 outline_analysis.py 的第二部分给出了一个更完整的解释,包括整个模型描述和训练。训练完这个简单的决策树后,可以用 joblib 库来保存它。
...
from joblib import dump
dump(clf, 'classifier_file_name')
在训练和保存模型之后,剩下的步骤是将各个部分合并在一起。
两个联合脚本必须并行工作:第一个脚本旨在记录、处理和估计来自 EEG 的情绪状态 pylsl_emotion.py;第二个脚本会在图形上显示相应的情绪和对应的笑脸,如 play_emotion.py 所述。
最后提一句:自己尝试一下吧!上述代码和自述文件都放到了 Github 上。你可以自己尝试,或者为不同的模型或 EEG 耳机改编代码。
以上就是全部内容了,感谢大家阅读!我并没有说我的代码是完美的,但如果你有意见、问题或想了解更多内容,请不要犹豫,立刻与我 联系(mailto:victor.delvigne@gmail.com) 吧!😊
[1] Rolfe Winkler:埃隆·马斯克创办了,旨在将人脑与计算机连接起来。华尔街日报,2017(链接)
[2] Unicorn Hybrid Black——脑机接口(链接)
[3] Katsigiannis, S 和 Ramzan, N:通过无线低成本货架设备收集到的 EEG 与 ECG 信号情感识别数据库。IEEE 生物医学和健康信息学(2017——链接)。
[4] Gabert-Quillen, Crystal A:情感视频片段打分。行为研究方法(2015——链接)。
[5] William O Tatum:Ellen R.Grass Lecture: extraordinary EEG。2014(链接)。
原文链接:
https://towardsdatascience.com/hands-on-guide-to-design-brain-computer-interface-b99bcc198428
你也「在看」吗?👇