基于HMM和BP神经网络的睡眠分期算法

由于在做睡眠监测设备,最近研究了一下睡眠分期的相关…在知网上查到了很多的论文,对其中一篇论文做了一个复现并进行了些许的改进,弄了一个睡眠分期算法,将成果写成博客方便日后查看。首先,在讲述算法模型前,先科普一下睡眠分期的一个相关研究。

睡眠分期的相关研究

睡眠过程中,脑电图发生各种不同变化,这些变化随着睡眠的深度而不同。根据脑电图的不同特征,又将睡眠分为两种状态:非眼球快速运动睡眠(又称正相睡眠、慢波睡眠、同步睡眠、安静睡眠、NREM睡眠)和眼球快速运动睡眠(又称异相睡眠、快波睡眠、去同步化睡眠、活跃睡眠、REM睡眠,还称雷姆期现象),二者以是否有眼球阵发性快速运动及不同的脑电波特征相区别。

图为一个睡眠周期内大致的睡眠分期

在一个睡眠周期内,睡眠状态的变化大致如下:

睡眠分期算法的训练数据来自于在Google dataset中搜到的DREAMS主题数据库中,关于20位健康人员的一晚上的睡眠数据,通过HRV(心率变异性)等原理来进行特征的筛选。

睡眠分期算法模型

数据类型

数据包含两个部分,一部分为来自20名健康受试者的20个全夜多导睡眠图文件,采样的频率为200HZ,也就是说每秒产生200个数据,另一部分为专家根据美国睡眠医学会标准,以30秒为时间段切分,通过人工标注所处睡眠阶段的注释文件。

20名测试者的信息为4男16女,年龄层在20-65岁,有一定的代表性。经过对数据进行预处理、分类训练,得到一个睡眠质量分析的模型,经过多次实验,我们采用了HMM隐马尔可夫模型与反馈神经网络相结合的混合算法应用到了睡眠分期的分类计算中,经过交叉验证,模型的准确率可以达到85%以上。

整体搭建流程

整体思路

首先通过数据中的多导睡眠图进行心率、呼吸率的提取,通过HMM隐马尔可夫模型提取出心率变异的特征向量,训练出各个睡眠时期相对应的隐马尔可夫模型,,然后再将计算结果作为向量输入到反馈神经网络中进行第二次的分类,利用反馈神经网络的强大的区分识别能理提高准确率。经过交叉验证,对于识别的准确率可以达到85%左右。

接下来会分别介绍HMM和BP神经网络

隐马尔可夫模型(HMM)

统计模型的一种,用来描述一个含有隐含未知参数的马尔可夫过程。

HMM基本模型可以用上图来表示,其中y1,y2,y3表示可以观察到的状态,x1,x2,x3表示无法观测到的状态,b为隐藏状态与各个观测状态之间的关系,a为各个隐藏状态之间的相关概率。

HMM模型的建立主要由以下三个参数组成:

  1. 状态转移概率:模型在各个状态之间转换的概率
  2. 状态转移矩阵:表示在模型中,已知当前状态,根据当前状态推测出的各个观测值的概率矩阵
  3. 初始状态概率:模型在初始时刻各个状态出现的概率。
  4. 隐藏状态的集合
  5. 观测状态的集合

这样,确定了参数之后,就可以通过使用x = [S,K,Π,A,B]来表示HMM模型

代码部分截图

BP神经网络

​ 人工神经网络无需事先确定输入输出之间映射关系的数学方程,仅通过自身的训练,学习某种规则,在给定输入值时得到最接近期望输出值的结果。作为一种智能信息处理系统,人工神经网络实现其功能的核心是算法。BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。

​ 基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。(百度百科)

流程

  1. 工作信号正向传递的子过程

  2. 误差信号反响传递的子过程

    在BP神经网络的训练过程中,输入层为样本训练的输入矩阵,输入信号经过处理之后将结果传递给输出层,只有相邻的神经元之间才可以传递信号。输出层将输出结果和预期结果进行对比,如果两个结果的误差未达到预期大小,就会进入反响传递,根据预测误差值的大小来调整整个网络节点之间的权重,知道最后接近期望输出。

混合模型的建立

在单一使用HMM模型进行训练时,由于嵌入式硬件的条件限制,所以只能使用心率进行特征筛选,所以模型的准确率只有65%,在经过BP神经网络的结合之后,准确率达到了85%以上,这也证明了BP神经网络模型对HMM分期的结果进行再分类是有效的。

主要是由于HMM忽略了各个特征之间的不同之处,在进行模型参数计算和模型匹配的时候,都是通过收敛计算和概率计算的方式来进行模型参数和匹配模型,这样再计算的过程中就很容易产生意想不到的计算误差。而BP神经网络可以将其纠正到正确的睡眠状态之中,从而提高睡眠分期计算的准确率。

基于HMM和BP神经网络的睡眠分期算法相关推荐

  1. 基于GA优化BP神经网络的传感器故障诊断算法matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 1.做优化要先明白优化的结果是什么? 使得网络参数配置最优,测试集预测误差最小--适应度函数 2.可以通过改变什么来使得网络结果不同? ...

  2. 基于RBF和BP神经网络的信道估计算法的仿真与分析

    使用神经网络进行信道估计构架 整个仿真系统的结构如上所示. 这里,我们主要是通过对导频序列和已知的导频序列进行神经网络训练,得到一个神经网络,对输入的新号进行实时的预测和估计.最后得到所要的接受信号. ...

  3. 【笔记】基于边缘检测和BP神经网络的大豆杂草识别研究

    <基于边缘检测和BP神经网络的大豆杂草识别研究> 单位:吉林农业大学信息技术学院 作者:侯雨 数据获取 设备:大疆 DJI 精灵3 相机:EXMOR 1/2.3 RGB 相机 拍照:飞行高 ...

  4. matlab 神经网络dpi,基于DPI和BP神经网络的P2P流量识别研究

    研究与开发 现代计算机 2019.04 上 文章编号:1007-1423(2019)10-0031-05 DOI:10.3969/j.issn.1007-1423.2019.10.007 基于 DPI ...

  5. 【机器学习】基于AutoEncoder的BP神经网络的tensorflow实现

    [机器学习]基于AutoEncoder的BP神经网络的tensorflow实现 一.基于AutoEncoder的BP神经网络 1.1.BP神经网络 1.1.1.BP神经网络结构 1.1.2.BP神经网 ...

  6. gwo算法matlab源代码,智能优化算法应用:基于GWO优化BP神经网络 - 附代码

    智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 文章目录智能优化算法应用:基于GWO优 ...

  7. Python基于PyTorch实现BP神经网络ANN分类模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 在人工神经网络的发展历史上,感知机(Multilayer Per ...

  8. Python基于PyTorch实现BP神经网络ANN回归模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 在人工神经网络的发展历史上,感知机(Multilayer Per ...

  9. 生猪价格matlab,基于时间序列的BP神经网络猪肉价格预测

    科技创新 2m6钎第20期I科技创新与应用 基于时间序列的BP神经网络猪肉价格预测 张津张瑞斌 (成都理工大学管理科学学院,四川成都610059) 摘要:猪肉价格是不稳定的,起伏变化的,猪肉价格的预测 ...

  10. 【智能控制实验】基于MATLAB的BP神经网络设计

    实验五:基于MATLAB的BP神经网络设计 一.实验要求: 重点是掌握BP神经网络的学习算法原理和代码设计方法,应用MATLAB编写BP神经网络训练方法:应用神经网络工具箱设计BP神经网络实现对输入输 ...

最新文章

  1. 实用的bit 位操作
  2. 比 Redis 快 5 倍的中间件,KeyDB
  3. Android客户端与服务器之间传递json数据
  4. 在notepad++中运行python代码
  5. 第 4 章 设计模式概述
  6. MongoDB(三):MongoDB概念解析
  7. Asp.net 表单打印时的样式设置【原】
  8. 12. Django基础:模型层及ORM
  9. Python编程-继承和接口
  10. 测试学习-测试工具wireshark、HFS、wlan信号
  11. 带你走进组件化(三)—— 曲径
  12. android椭圆进度,Android 圆形进度条
  13. Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must
  14. HTML学习6~29(HTML语法规范)
  15. 电脑不稳定? 可能系统已被病毒渗透:怎样判断是否遭受入侵
  16. 爱帮网遭江苏移动侵权 源自爱帮机器人
  17. OpenCV内部函数cvFindExtrinsicCameraParams2解析(一)
  18. 应急通信指挥调度|森林防火指挥调度
  19. cidr计算器android,无类别域间路由(CIDR)网络地址计算器
  20. sklearn-KMeans-花卉识别

热门文章

  1. 使用TortoiseSVN将文件回退到某个版本
  2. Surface 内置原生壁纸下载
  3. 每周分享第 24 期
  4. Vcpkg 的安装与使用
  5. 简单详细的OD破解教程
  6. 常用 ASCII 码整理
  7. Un*、IdL分别突变情况下双闭环直流调速系统仿真
  8. Ae:Roto 笔刷工具和调整边缘工具
  9. python开发仓库管理系统_tkinter的应用--mini级《仓库管理系统》
  10. windows server 部署java Web项目