基于猕猴Spike运动解码的不同解码方法性能对比

  1. 公开数据集中文版详细描述 参考前文:https://editor.csdn.net/md/?not_checkout=1&spm=1011.2124.3001.6192
  2. 神经元Spike信号分析 参考前文:https://blog.csdn.net/qq_43811536/article/details/134359566?spm=1001.2014.3001.5501
  3. 神经元运动调制分析 参考前文:https://blog.csdn.net/qq_43811536/article/details/134401004?spm=1001.2014.3001.5501
  4. 离散卡尔曼滤波器算法详解及重要参数(Q、R、P)基于公开数据集解码的讨论 参考前文:https://blog.csdn.net/qq_43811536/article/details/134403022?spm=1001.2014.3001.5501
  5. 基于Spike信号的运动解码分析不同运动参数对解码的影响 参考前文:https://blog.csdn.net/qq_43811536/article/details/134477651?spm=1001.2014.3001.5501

目录

  • 0. 公开数据集
  • 1. 不同解码方法的性能比较
    • 1.1 基于Spike的运动解码
    • 1.2 特征提取
    • 1.3 解码算法
    • 1.3 解码结果
    • 1.4 解码性能


0. 公开数据集

  • 网址:Nonhuman Primate Reaching with Multichannel Sensorimotor Cortex Electrophysiology 1
  • Session:
    • " indy_20170124_01 "

1. 不同解码方法的性能比较

从 公开数据集中文版详细描述 以及其 神经元Spike信号分析 中我们知道:猕猴的感觉运动皮层对运动的调制主要有六个参数——二维平面中x和y方向上的位移、速度和加速度。这六个参数也是我们在运动解码中感兴趣的部分。

1.1 基于Spike的运动解码

参见 基于Spike信号的运动解码分析不同运动参数对解码的影响 的1.1节。

1.2 特征提取

  • 预处理 s p i k e _ f e a t = [ 5900 , 253 ] spike\_feat=[5900, 253] spike_feat=[5900,253], m o t i o n _ f e a t = [ 5900 , 6 ] motion\_feat=[5900, 6] motion_feat=[5900,6]
  • Spike特征:取前后各6个样本的feat作为当前样本的联合特征,即单个样本的总特征数为: 13 ∗ 253 = 3289 13*253=3289 13253=3289维。(卡尔曼滤波器没有此步骤)
  • 数据集划分:训练集:测试集=9:1。
  • 归一化:采用均值-方差归一化。

1.3 解码算法

分别采用线性回归(Linear Regression, LR)、卡尔曼滤波器(Kalman Filter, KF)、DNN以及LSTM 2 进行解码性能比较。

  • KF:参考 离散卡尔曼滤波器算法详解

  • DNN, LSTM的网络结构如下:

    • 三层网络:输入-隐藏层-输出,隐藏层均为200个单元。
    • 激活函数:DNN为‘relu’,LSTM为‘tanh’。
    • 损失函数:均为MSE均方误差。
    • 优化器:DNN为‘Adam’,LSTM为‘RMSProp’。

最后,为了方便比较,DNN和LSTM都训练了固定的20个epochs

1.3 解码结果

Figure 1 呈现四种不同方法的部分解码结果。其中LR和KF在x、y两个不同方向的位置预测上比其他两个神经网络更精准,后者波动明显较大;但前者在速度和加速度的预测上明显弱于神经网络,后者可以捕捉到速度和加速度较大的波动,当然也正是因为这个原因导致后者预测的位置曲线出现了很多意料之外的毛刺。

在这里插入图片描述

Figure 1. 不同方法的部分解码结果. a. LR. b. KF. c. DNN. d. LSTM. 从左到右依次为十折交叉验证的第1、5、10折的前100个samples.

1.4 解码性能

Figure 2 展示了十折交叉验证的平均解码性能。Figure 2a 为Pearson相关性的柱状图,横轴为不同的方法,纵轴为相关性大小,同颜色的点代表不同折实验的性能,黑色竖线代表方差范围,反应解码方法的鲁棒性。Figure 2b 为不同方法在不同运动参数上的性能折线图,可以看到与1.3节的结论一致:LR和KF在位置预测上性能更好,而DNN和LSTM在速度和加速度的预测上更加精确,其中同色阴影为十折实验的误差范围。Figure 2c 为不同方法在不同运动参数上的 R 2 R^2 R2,结果表现与b图一致。

在这里插入图片描述

Figure 2. 不同方法的解码性能

Figure 3 绘制了DNN和LSTM在训练过程中训练集和验证集的性能曲线。可以看到DNN存在过拟合,而LSTM还处于欠拟合的状态,继续训练LSTM的性能可能会更高。

在这里插入图片描述

Figure 3. DNN与LSTM的训练过程曲线. a. MSE损失曲线. b. Pearson相关性曲线.


创作不易,麻烦点点赞和关注咯!

  1. Makin, J. G., O’Doherty, J. E., Cardoso, M. M. B. & Sabes, P. N. (2018). Superior arm-movement decoding from cortex with a new, unsupervised-learning algorithm. J Neural Eng. 15(2): 026010. doi:10.1088/1741-2552/aa9e95 ↩︎

  2. Glaser J I, enjamin A S, Chowdhury R H, et al. Machine learning for neural decoding[J]. Eneuro, 2020, 7(4). ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/194014.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简历技术栈redis点

熟悉Redis常见的数据类型以及缓存问题,如缓存穿透、雪崩 、击穿等 Redis五种数据类型 Redis常用命令 查看所有 keys * 字符串类型string 常用命令 举例: 放置一个字符串数据到redis中,先为数据定义一个名称,比如name,age等&am…

低代码在ERP中的理解与应用:提升开发效率与业务灵活性

企业资源规划(ERP)指通过融合不同部门的信息和流程,提升企业效率、融洽运营的管理体系。ERP系统通过提供一套集成化应用程序,助力企业管理工作流程,包含选购、库存、销售、生产规划等。 低代码(Low-Code&a…

【机器学习基础】正则化

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ ⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅&am…

实验五:Java多线程程序设计

一、线程接力 编写一个应用程序,除了主线程外,还有三个线程:first、second和third。first负责模拟一个红色的按钮从坐标(10,60)运动到(100,60);second负责模…

未来 20 年 12 大发展趋势

未来 20 年 12 大发展趋势 周末闲来无聊,翻阅以前的材料,常读常新的感觉。 前言 跟30年后的我们相比,现在的我们就是一无所知。必须要相信那些不可能的事情,因为我们尚处于第一天的第一个小时——开始的开始。 技术都会有一个…

qsort函数使用方法总结

目录 一、qsort函数原型 二、compar参数 三、各种类型的qsort排序 1. int 数组排序 2. 结构体排序 3. 字符串指针数组排序 4. 字符串二维数组排序 四、回调函数 1. 什么是回调函数 2. 为什么要用回调函数? 3. 怎么使用回调函数? 4.下面是…

【MySQL--->视图】

文章目录 [TOC](文章目录) 一、概念二、操作三、视图特性 一、概念 视图是一个由插叙结果组成的虚拟表,基于表查询结果得到的表叫做视图,被查询的表叫做基表.基表和视图进行更新操作会互相影响. 二、操作 创建视图 将dept和emp两个基表的查询结果作为视图 更新基表会影响视…

MongoDB相关基础操作(库、集合、文档)

文章目录 一、库的相关操作1、查看数据库2、查看当前库3、创建数据库4、删除数据库 二、集合的相关操作1、查看库中所有集合2、创建集合2.1、显示创建2.2、隐式创建 3、删除集合 三、文档的相关操作1、插入文档1.1、插入单条文档1.2、插入多条文档1.3、脚本方式 2、查询文档3、…

鸿蒙:实现两个Page页面跳转

效果展示 这篇博文在《鸿蒙:从0到“Hello Harmony”》基础上实现两个Page页面跳转 1.构建第一个页面 第一个页面就是“Hello Harmony”,把文件名和显示内容都改一下,改成“FirstPage”,再添加一个“Next”按钮。 Entry Compone…

第 372 场 LeetCode 周赛题解

A 使三个字符串相等 求三个串的最长公共前缀 class Solution { public:int findMinimumOperations(string s1, string s2, string s3) {int n1 s1.size(), n2 s2.size(), n3 s3.size();int i 0;for (; i < min({n1, n2, n3}); i)if (!(s1[i] s2[i] && s2[i] s…

数据挖掘复盘——apriori

read_csv函数返回的数据类型是Dataframe类型 对于Dataframe类型使用条件表达式 dfdf.loc[df.loc[:,0]2]df: 这是一个DataFrame对象的变量名&#xff0c;表示一个二维的表格型数据结构&#xff0c;类似于电子表格或SQL表。 df.loc[:, 0]: 这是使用DataFrame的.loc属性来进行…

牛客网刷题笔记三 寻找第K大+两数之和+合并两个排序的链表+用两个栈实现队列

算法题牛客网NC88 寻找第K大 题目&#xff1a; 思路就是做个排序&#xff0c;要求时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)&#xff0c;因此选用快排。代码&#xff1a; class Solution:def quickSort(self, a, start, end):if start > end:returnval a[start]…