250630课题进展
脑电分析课题进展
目录
- 脑电分析课题进展
- 一、课题初识
- (一)课题解决的核心问题、输入输出与关键步骤
- (二) 各步骤的主要作用与原理
- (三)主要难点/挑战与解决策略
- 二、论文阅读
- (一)内容
- (二)创新
- (三)不足
- 三、基础知识学习
- (一)机器学习
- (二)代码能力
一、课题初识
脑电(EEG)分析是神经科学与计算机科学交叉的前沿领域,旨在通过解析大脑的电活动来理解其功能、诊断疾病、评估状态乃至实现人机交互。
(一)课题解决的核心问题、输入输出与关键步骤
-
解决的核心问题:
-
理解与量化: 旨在从复杂的、个体差异大的脑电信号中解码和量化大脑的生理、认知、情感和病理状态(如冥想水平、情绪、睡眠阶段、癫痫活动等)。
-
个体差异与噪声: 解决脑电信号固有的高噪声、易受伪迹干扰以及个体间/内差异巨大的问题,以实现更鲁棒和个性化的分析。
-
应用与转化: 将脑电分析成果转化为实际应用系统(如神经反馈系统、脑机接口、辅助诊断工具),以改善人类健康和生活质量。
-
-
输入:
- 原始脑电信号(EEG),可选扩展为其他生理信号、行为数据和专家标签。
-
输出:
- 大脑状态识别/预测(如冥想水平、情绪、疾病)、神经反馈/BCI控制指令、辅助诊断信息。
-
关键步骤(通用流程):
-
脑电信号采集: 记录大脑的电活动。
-
信号预处理: 清洗噪声和伪迹,标准化数据。
-
特征提取与表示学习: 从原始信号中抽取有意义的数值或模式。
-
模型构建与训练: 运用算法建立脑电特征与目标状态间的映射关系。
-
模型评估与优化: 验证模型性能并进行改进。
-
应用与部署: 将分析成果集成到实际系统或产品中。
-
(二) 各步骤的主要作用与原理
-
脑电信号采集与预处理:
-
作用: 获取高质量、低噪声的原始脑电数据,并消除各种生理(如眼电、肌电)和环境伪迹。
-
原理: 通过电极捕捉信号;运用滤波、分段、伪迹去除(如ICA、深度学习方法)。
-
-
特征提取与表示学习:
-
作用: 将复杂原始信号转化为有判别力的数值特征。
-
原理:
-
传统特征: 计算频域特征,时域特征,时频域特征,以及非线性动力学特征(如C0复杂度、盒维数、信息熵,)。
-
表示学习(前沿): 运用深度学习模型(如CNN、RNN、Transformer)自动学习抽象特征;进行脑网络分析。
-
-
-
模型构建与训练:
-
作用: 基于特征和标签,建立识别或预测脑状态的数学模型。
-
原理: 采用机器学习算法(如随机森林、支持向量机SVM、k近邻KNN)或深度学习模型(如CNN用于空间特征、RNN/LSTM用于时序依赖、Transformer用于长程依赖)进行分类或回归。也可用无监督学习聚类或降维或强化学习。
-
-
模型评估与优化:
-
作用: 衡量模型性能,识别潜在问题,并调整模型以提高准确性和泛化能力。
-
原理: 通过交叉验证、性能指标(如准确率、AUC)评估;通过超参数调优、正则化优化。
-
-
应用与部署:
-
作用: 将模型集成到实际系统,提供实时监测与反馈。
-
原理: 开发软硬件平台,实现实时数据处理、模型预测,并通过多种形式提供个性化反馈。
-
(三)主要难点/挑战与解决策略
-
挑战:脑电信号的个体差异大且非平稳性。
-
说明: 不同个体的大脑生理结构和活动模式存在固有差异;同时,个体的脑电信号也会随时间、情绪、疲劳等因素动态变化。这使得构建一个普适性强、鲁棒性好的模型极其困难。
-
解决: 个性化校准、自适应学习、迁移学习、领域适应。
-
-
挑战:脑电信号的低信噪比和复杂伪迹。
-
说明: 脑电信号微弱且容易受到来自肌肉活动(肌电)、眼球运动(眼电)、心跳(心电)以及电源线等各种生理和环境噪声的干扰。
-
解决: 先进预处理(深度学习去伪迹)、硬件优化。
-
-
挑战:高质量、大规模带标签脑电数据的稀缺性。
-
说明: 获取大规模、标准化的脑电数据集,特别是带有精确任务标签或临床诊断的高水平数据,成本高昂且耗时。高水平冥想者或特定疾病患者的样本尤其稀缺。
-
解决: 数据增强、小样本学习、自监督/半监督学习、合成数据生成。
-
二、论文阅读
[1] 徐昊. 智能冥想神经反馈系统[D/OL]. 厦门大学, 2019[2025-07-01].
[2] 徐昊, 黄敏, 周昌乐. 用于冥想神经反馈系统的脑电图数据挖掘研究[J]. 厦门大学学报(自然科学版), 2018, 57(2): 258-264.
(一)内容
研究旨在开发有助于禅修的冥想神经反馈系统,采用乐易心法七日禅学员的脑电图信号,提取15维脑电图特征,并以禅修导师给学员的评分作为数据标记。为了解决EEG研究中常见的个体差异问题,研究采用了个性化校准方案 。论文测试了多种分类和回归算法,以评估其对学员冥想水平的分类性能 。最终,研究为更智能的冥想神经反馈系统的研发提供了支持。
(二)创新
-
提出个性化校准方案,有效解决了EEG研究中的个体差异问题。
-
广泛利用了多种EEG指标和分析方法(6个波段能量、6个波段能量比和3种现代EEG分析方法:C0复杂度、盒维数、信息熵)作为特征。
-
结合了中华传统心法中的冥想与神经反馈技术,为开发有益身心健康的智能应用提供了思路。
(三)不足
-
被试数量较少(实际被试16人,高分学员仅4人),这限制了研究结果的普遍性。
-
尽管采用了10折交叉验证,但由于被试数量少,每个学员的样本参与训练的概率较高,导致实验条件接近测试集即训练集的情况,可能影响泛化能力 。
-
目前模型所用特征数量较多(一般在5个以上),且不采用主成分分析进行降维,这不利于对EEG结果进行直观解读和分析,也可能导致NFB系统反馈参数过多,影响用户体验 。
三、基础知识学习
(一)机器学习
复习了包括线性回归,逻辑回归,过拟合等知识点,同时继续了神经网络的初步学习
(二)代码能力
进行了python的系统学习,目标达成,能完成基础语句的编写,能够看懂代码的操作与作用
包括但不限于数据类型,条件控制,循环,函数,类等等操作
以下为练习部分代码
# 标识符def is_valid_identifier(name):try:exec(f"{name} = None")return Trueexcept:return Falseprint(is_valid_identifier("2var")) # False
print(is_valid_identifier("var2")) # True# 关键字
import keyword
print(keyword.kwlist)# 缩进if True:print ("True")
else:print ("False")# 多行语句item_one = 1
item_two = 2
item_three = 3
total = item_one + \item_two + \item_three
print(total) # 输出为 6# 字符串str = '123456789'print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第六个的字符(不包含)
print(str[2:]) # 输出从第三个开始后的所有字符
print(str[1:5:2]) # 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print(str * 2) # 输出字符串两次
print(str + '你好') # 连接字符串print('------------------------------')print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义import sys; x = 'BeiWenliang'; sys.stdout.write(x +'\n')
sys.stdout.write(' hi ')# printx = "a"
y = "b"
# 换行输出
print(x)
print(y)print('---------')
# 不换行输出
print(x, end="")
print(y, end="")
print()# 导入import sys
print('================Python import mode==========================')
print ('命令行参数为:')
for i in sys.argv:print (i)
print ('\n python 路径为',sys.path)from sys import argv, path # 导入特定的成员print('================python from import===================================')
print('path:', path) # 因为已经导入path成员,所以此处引用时不需要加sys.path# 如下实例,查看 max 内置函数的参数列表和规范的文档
help(print)# 文件操作add_text = "\nI like badminton.\nI like badminton.\nI like badminton.\n"my_file = open("my_file.txt", "a")
my_file.write(add_text)
my_file.close()file=open("my_file.txt","r")
content=file.read()
second_content=file.readlines()
print(content)
print(second_content)
file.close()import ex2ex2.sub(9,3)try:file = open("my_file.txt", "r+")
except FileNotFoundError:a= input("please create a new file")if a=="y":file = open("my_file.txt", "w")else:pass
else:file.write("6666")
file.close()# 类的用法class Calculator:name = 'Good Calculator'price = 30def add(self, a, b):result = a + bprint(result)def sub(self, a, b):result = a - bprint(result)def mul(self, a, b):result = a * bprint(result)def div(self, a, b):result = a / bprint(f'{result:.0f}')calcu = Calculator()
print(calcu.name)
print(calcu.price)
calcu.add(15, 2)
calcu.sub(16, 2)
calcu.mul(10, 2)
calcu.div(50, 2)class Student:def __init__(self, name, hobby):self.name = nameself.hobby = hobbydef introduce(self):print(f"Hello,my name is {self.name}, I like {self.hobby}")
student1 = Student("James", "Python")
student2 = Student("Jack", "C")
student1.introduce()
student2.introduce()
# 列表和元组a = [1,3,6,94,24,52,6,6]
b = (1,3,6,94,24,52,6)print(a.count(6))
print(a.index(6))
print(a[0:3])
print(a[3:])
print(a[:3])
a.sort(reverse=True)
print(a)multi_dim_a = [[1,2,3],[4,5,6],[7,8,9]]
print(multi_dim_a[2][1])
print(min(multi_dim_a))
print(id(multi_dim_a))# 字典def sub(a,b):print("I'm sub.")print('The result is:',a - b)d = {'apple':[1,2,3],'orange':{3:1,4:'a'},'pear':sub(3,4)}print(d['pear'])import timeprint(time.localtime())
print(time.asctime(time.localtime()))