使用神经网络的cpap的方法和装置的制作方法

文档序号:1159356阅读:291来源:国知局
专利名称:使用神经网络的cpap的方法和装置的制作方法
技术领域
本发明涉及检测和治疗睡眠中呼吸紊乱的方法和装置,尤其涉及应用人工神经网络的方法和装置。
背景技术
序号为5,953,713的美国专利(Behbehani等人)揭示了用于治疗睡眠中呼吸紊乱的方法,包括在放置于连接到压缩气体的病人的气道上的接口测量与呼吸有关的变量,将从与呼吸有关的变量得到的频率数据送入训练用以识别表征睡眠中呼吸紊乱模式的人工神经网络;提供压缩气体给病人的气道以响应人工神经网络对睡眠中呼吸紊乱的识别。在较佳实施例中揭示的压力传感器输出的采样频率是512Hz。使用32个采样值窗口,每1/16秒计算傅里叶变换。
频率分析的另一方面是,一方面精度正比于输入数据的数量,但另一方面响应时间也相应地增加。虽然希望有高的精度,因为它能检测呼吸模式的较小变化,但较慢的响应增加了气道口逐渐损坏的危险性,并从而引起病人前更严重的呼吸扰乱。检测睡眠率乱的其他方法是根据对逐次呼吸的分析。
另外,若不安装足够的治疗,预期在很长时间内病人将被唤醒。
发明目的本发明的目的是提出改善的方法,为病人自动地供应持续的正气道压力。
本发明的另一个目的是提供自动连续正气道压力装置(ACPAP),它至少没有某些现有技术装置的缺点。
从下面对本发明的简短描述、示出较佳实施例的附图、有关的详细描述及所附的权利要求,本发明的其它目的是显而易见的。

发明内容
本发明是根据这样的理解,即直接分析气流信号比紊乱呼吸的分析更具体,尤其对根据频率分析的气流限止呼吸。
根据本发明,提供了一种自动连续的正气道压力装置(ACPAP),其中测量来自CPAP或来自为病人提供正气压的其它系统的气流,用于计算一系列针对信号的参数。参数组包括对数倒频谱系数和能含量,并被选择用来表示在睡眠期间呼吸障碍(apneic)事件,如窒息、呼吸急促和气流限制等。从大量病人收集的那些参数的数据被用于训练人工神经网络,以告诉系统在一系列情况下对病人子集的参数变化范围。来自人工神经网络的结果以低维数网络节点来获得,其中每种呼吸类型由节点的轨迹或节点子集表示。对于正常呼吸的轨迹,看起来很不同于在紊乱睡眠期间的呼吸轨迹。
若检测到紊乱睡眠状态的呼吸征兆,则CPAP压力增加。相反在正常情况下CPAP压力降低。
因此,根据本发明揭示了一种使用人工神经网络检测并治疗睡眠期间呼吸紊乱的方法,其中在人工神经网络中分析有关呼吸气流的数据。
具体说来,根据本发明的方法包括下列步骤·将带管子的掩膜放在病人的气道上,掩膜与由CPAP控制的压缩呼吸气体源联系,从而建立一呼吸回路;·周期地采样在回路中的气体流;·对一个或若干不同呼吸模式的参数周期地计算其值;·周期地将所述参数值送给人工神经网络,后者可训练成识别睡眠中呼吸紊乱的呼吸模式特征;·在神经网络中分析所述参数值;·响应从所述神经网络的输出,来控制压缩呼吸气体的供应。
较佳地将所述参数值以2Hz到30Hz的频率送给网络,最好是20Hz左右。
所述参数较佳地包含对数倒频谱系数和能量梯度。
根据本发明的第一较佳方面,人工神经网络用从大量病人收集的数据进行训练。数据从许多方面不同的病人收集而来性别,年龄,体重,呼吸模式等。此外,需要涉及各种呼吸紊乱的睡眠,如最好发生在背部位置的、在睡眠的特定阶段发生的和在药物或酒精影响下发生的。
这种数据最好在睡眠实验室中收集,其中,追踪睡眠的状态以及类型,并使用睡眠扫描(polysomnography)系统监控呼吸紊乱的严重性。收集的数据构成主数据库。在训练人工神经网络期间,数据在小的可存储ACPAP的次级专用数据库的格式下量化。因此,根据本发明,由包含从许多人收集的数据的主数据库获得的专用次级数据库被存入ACPAP。
根据本发明的第二方面,最好在呼吸期间周期地采样气流。
ANN包含若干表示训练数据组的节点。每个节点反映一个状态或一个事件(特征)。相邻节点表示几何距离小的事件。以与训练事件同样的方式,对每个气流数据样本提取向量。计算从事件向量到每个节点的欧几里得距离。最邻近该向量的节点与其相关。事件向量的顺序依照人工神经网络中节点的顺序。可以说,节点的顺序是网络的响应。因此遵循网络几何结构中的轨迹(响应)而不是参数空间中的轨迹。网络的维数常常小于参数空间是有益的,因为计算得以简化。来自网络的响应形成了区分窒息、呼吸急促和正常呼吸状态的基础,也是CPAP压力控制的基础。
因此,本发明根据kohonen映射型的人工神经网络(ANN)的使用(“相关记忆”——“Associative memory”;T.Kohonen,Self-Organization及“相关记忆”第二版,Springer Verl.,柏林,1987)来检测窒息或类似窒息的事件。ANN用从睡眠实验室的若干病人得到的数据进行训练。容易训练的ANN形成了存入ACPAP的非易失性存储器的共用(全球)数据结构。在使用中,一个病人的呼吸模式形成了ANN中的轨迹(迹线)。正常的呼吸循环形成封闭的轨迹。偏离正常的轨迹表示呼吸的扰乱。ANN如此构造,以使某些区域表示窒息的初始阶段。穿过该区域或接触其边界的轨迹表示,提供给病人的空气量应增加,以使呼吸恢复正常。一旦呼吸正常了,增加的空气量被减少到正常值,即到增加以前的基础值。
如在P.Brauer和P.Knagenhjelm,Infrastructur in Kohonen Maps,Proc.IEEE ICASSP,Glasgow,1989中所示,人工神经网络的训练有两个阶段。
分析的目的是从一系列空气流率测量值中提取参数值,选择这些参数值来分类并检测窒息和呼吸急促的状态。在每次单独的分析中,使参数形成作为所有训练和作决策基础的事件或特征向量。所有采样值被单独地分析,以准备快速响应气流的改变,这改变通常是窒息或呼吸急促状态的预先警告。
按本发明的第三个较佳方面,使用线性预测编码来分析送到神经网络的参数值。对所有样本完成包含4个参数的线性预测编码分析。尤其是,从分析得到的被称为A-参数被转换成对数倒频谱参数,用于参数距离和概念距离之间的最优相关,即称之为结合性。
按本发明的第四个较佳方面,在计算线性预测编码中,预测误差被当作一行中下一个参数的基础。过滤误差以消除短期的变化,并用分析窗口的总能量标准化。
为计算能量,使用比线性预测编码分析更大的窗口。能使用最近窗口的能量来计算其倾斜度描述趋势的线。使用趋势中的差作为其它参数。由此,根据本发明的第五个较佳方面,从测量值计算的趋势线的倾斜被用作为一个参数。
根据本发明,还揭示了用CPAP检测并治疗在睡眠期间呼吸紊乱的装置,该装置包括采样呼吸气流数据(特别在吸入时)的探针,和用于直接或间接分析所述数据以便控制呼吸气压的人工神经网络。
根据本发明,还揭示了一个CAPAP,它包括采样呼吸气流数据(特别在吸入时)的探针,和用于直接或间接分析所述数据以便控制呼吸气压的人工神经网络。
在下面附图示出的较佳实施例的详细描述中揭示了本发明的其它变化。
附图简述本发明由包含下列若干图纸的附图示出

图1关于参数提取的方块图;图2关于例3的特征映射响应;图3特征向量;图4关于例4的特征映射响应。
较佳实施例的描述例1通用的例子主要数据分析。分析的目的是从一系列空气流率测量中提取参数值,选择该参数值用来对窒息和呼吸寄存状态进行分类和检测。在每次单独的分析中,使参数形成作为所有训练和决策基础的事件或特征向量。所有采样值被单独地分析,以备对气流变化作出快速响应,这变化通常是窒息或呼吸急促的预先警报。
事件向量参数。LPC-Cepstrum(LPC-对数倒频谱)。对每个样本完成线性预测编码(LPC)的4参数分析。在分析中得出的所谓A-参数被转换成对数倒频谱参数,用于参数距离和概念距离之间的最优相关性,即结合性。由Bogert等人介绍的术语对数倒频谱,结合回波时间序列的分析,指定了信号功率谱对数的傅里叶变换。将信号转换成对数倒频谱是同态变换,见A.V.Oppenheim和R.W.Schafer,Dicrete-Time Signal Processing,Prentice Hall,EnglewoodCliffs,NJ,1989。剩余的(Residual)。在计算LPC中的预测误差被用作下一参数的基础。过滤误差以相对于短期变化,并用分析窗口的总能量对其进行标准化。能量梯度。为计算能量,使用比LPC分析更大的窗口。最近窗口的能量被用于计算其斜度描述一个趋势的线。趋势的差。趋势的差被用作其它参数。
参数。为检测窒息事件(即,中心/阻塞性窒息、呼吸急促和气流限止),使用一个模型来表征在事件发生期间气流信号的典型性质和特征。选择模型参数,目的是使其尽可能地明确,无二义性和有信息量。参数组应响应于容易由医生检测到的典型窒息事件。除了对窒息事件灵敏以外,重要的是,该参数应对与检测窒息事件的任务无关的特征不灵敏。
特征向量。编译参数值以形成以下称为特征向量的向量。每当测量(采样)气流信号时,提取特征向量的值。这就意味着,若气流信号每秒测量fs次,且在模型中需要N个参数,则数据速率从每秒fs个样本增加到每秒fs·N个。
在提取参数值之前,对气流信号进行微分(高通滤波),以避免平均信号值的影响。此平均值随病人和/或硬件而变化,且不能用于分类窒息事件,因而被去除。每个N维特征向量能看作N-维信号空间中的一点。
训练该神经网络。人工神经网络(ANN)被迭代地训练以便组织有相似特性的特征向量组或束。称为“Kohonen的自组织特征映射”[1-2]的自组织过程显示出完成此任务的强大能力。在训练之前确定束的数目,并根据所需的ANN的分辨力来确定。由随机位于N-维信号空间中的一组M束来起动训练。通过编译来自大量有各种睡眠紊乱并处于所有睡眠阶段的病人的特征向量,来形成用于训练的数据库。在训练期间,每个输入特征向量与每个束比较以找出与输入向量最相似的那一个。该束被称为优胜者,并朝着输入向量进行调节。另外,另一范围中优胜者邻域的所有其它束——我们称之为向量空间——朝输入向量进行调节。映射空间通常是对信号空间中每个束包含一个节点的低维数。节点被排列在六边形或正方形的格栅中,而它们之间的欧几里得距离确定了它们的内部关系。节点的邻域通常由邻域函数定义,并在训练开始时包含设定的所有节点,然而在结束时只有少数(或没有)被认为是邻居。节点在映射空间中离优胜者越远,对应的信号空间中的束就越少向输入向量调节。从而所有调节都在信号空间中完成,而调节规则在映射空间中定义。
训练时间是预定的,使用退火(annealing)函数来“冻结”该系统,使得在训练终结时只有小的调节。邻域函数还建立了信号空间距离和映射空间距离之间的相关性,使得分类能在(低维数的)映射空间完成而不是在更复杂的信号空间内完成。上述方法被称为“不受监督的学习”,即在上述训练过程中不需要使用分类数据。将数据分成各种窒息事件的分类是繁复的任务。
当ANN容易训练时,束将表示输入气流信号的M个特征,包括正常呼吸、呼吸急促、气流限止和窒息(若这些特征出现在用于训练的数据库中)。ANN的响应与输入信号和所有束之间的信号距离成正比。见图2。在分类的情况下,此输出常常不是很重要。相反,输出被用于寻找最类似于分类输入的节点,如正常呼吸和窒息事件。这在ANN的设计中被称为标记阶段。向ANN呈现分类的特征向量,观察输出,且用呈现的特征对给出最高输出的节点进行标注。随后,实际输出是标记而不是响应值。
现在将束组存入以运行时模式进行使用的APAP的存储器。以与训练阶段完全相同的方法分析病人的气流数据,以便提取在模型中使用的参数值,即特征向量。然后将向量呈现给网络,后者将产生由气流控制逻辑使用的输出标记(分类)。
例2.算法数据采集令气流信号成为以fs样本/秒采样的模拟气流信号的数字化型式,给出采样序列xi,i=0,1,k,其中xi是x(i·T)的缩写,即i·T瞬时的样本,且T=1/fs。
预处理。为减少单独病人变化的影响,并便于分类的稳定性,信号应传递给除去信号均值的设备。能使用任何类型的陡峭沿高通滤波器,因此为简单起见使用理想的微分器。因而微分器的输出d(以及参数提取器的输入)将是di=xi-xi-1,其中i=0,1,k,x-1≡0参数。对数倒频谱系数示出了,只使用少量参数来很好地模拟信号的频率内容(低阶模型)。此外,对数倒频谱系数的动态方便了参数的量化。经常对参数进行加权以产生具有类似变化的参数。对数倒频谱系数是由标准线性预测编码(LPC)计算的所谓的A-多项式的导数。
因为使用的对数倒频谱系数不保持有关信号能量的信息,所以对数倒频谱必须用考虑长期(如10秒)能量变化的参数来扩大。此参数应不对气流信号的绝对电平灵敏,且只反映相对波动。
对数倒频谱。为计算在时间K的P模型参数,使用最近的Wz输入样本(窗口化)。样本dk被预测为d~k=-Σl=1pal·dk-l]]>由此预测误差信号是ek=dk-d~k=-Σl=1pal·dk-l]]>任务是寻找组a,它将窗口中所有样本上预测误差信号的能量最小化(即,寻找a=[al,Λ,ap]的值使得 尽可能地类似于dk)。通过解以下的矩阵等式寻找最优解R·a=-r我们称之为Yule-Walker或正规方程,使用如Cholesky算法求解。
向量a组成所谓的A-多项式,使用下列算法将其转换成一组对数倒频谱系数cc0=0c1=a1cn=an-Σl=1pn-1n·cn-l·aln=2,KP]]>使用对数倒频谱系数cl,k,cp作为特征向量中p的第一系数。
能量趋势参数(PET)。使用来自若干窗口的能量来计算能量值的趋势。若趋势表示能量级不断增加,则将PET设为0。若趋势不断减少,则计算趋势相交时间轴的点。此值的非线性变换形成了PET系数。HBK图。将PET添加到特征向量。由此根据图3组成完全的特征向量。
特征映射的几何形状与定义。令M个映射节点被标记成mi,i=0,K,M-1。
节点最经常被排列在正方形(2维)的格栅中。两个映射节点i和j之间的距离被标记为Di,j,且定义成它们之间欧几里得距离的平方(L2标准),即Di,j=L2(mi,mj)令表示样本Xk的输入特征向量标记为yk。对特征k,在节点i的映射响应Sik被定义为Sik=exp{-dik2/(p+1)}]]>其中信号空间距离dik2定义成dik2=Σl=1p+1wl(ylk-mli)2]]>且wl是某个适当的加权函数。
退火函数。退火函数的任务是在训练结束时获得均衡。原则是在训练开始时允许有大的调节,而在结束时只允许小的(或零)调节。如何实现减少是不重要的。在文献中提出线性的、指数的、甚至脉动的[4]衰减方案。
初始化。传统上,所有数据驱动的分束方案(包括ANN),都通过将(小的)随机数分配给参数来应用信号空间中束的随机定位。只要它们不是等同的,实际值就是不重要的。束的排序也是随机的。
训练。在给出每个输入特征向量yk之后,迭代算法调节所有束。调节的方向是指向yk,调节多少则部分由退火函数而定,部分由邻域函数确定。对束yk在瞬时t+1的调节公式是yk(t+1)=yk(t)+γk·(t)(z-yk(t)),其中γk·(t)=f(t)·gk(t)且f(t)是退火函数,g(t)是邻域函数。在[3]中讨论各种合适的函数。
例3.硬判决令64个映射节点排列在8×8的正方形格栅中,并从左上角到右下角从0排序到63。由此,比如映射距离D0,1=1,D0.2=4和D0,9=2。
记录包含来自几个病人在所有睡眠阶段的气流测量值的大数据库。以20Hz速率完成记录,且存入存储盘。该数据库将包含正常睡眠呼吸、气流限止、打鼾、打哈欠、咳嗽和各种呼吸障碍事件,但也掩盖了泄漏量和其他人为因素。
逐个样本地分析数据库。20Hz的气流信号首先通过理想的微分器。使用180个样本的矩形窗口来形成提取4个对数倒频谱系数(c1,K,c4)和PET参数的基础。由此,特征向量是每50毫秒对值进行提取的5维向量。
只要训练在进行,就以随机方式从数据库收集样本。迭代次数T由数据库的大小决定,但是凭经验,每个样本10-30次迭代应是足够的次数了。
计算到所有束yi,i=0,K,M-1的欧几里得距离,且最接近特征向量的束被称作优胜者,并记作yi。在计算距离时采用下述加权函数w=[1 2 3 4 1]
邻域函数使所有束能自始至终进行调节(即,邻域的大小不会随时间推移而减少),但对远离优胜者y1的束是不利的。g(t)=e-2·Dkl,∀t]]>退火函数f(t),遵循线性衰减方案f(t)=0.2·(1-t/T)t=0,K,T在训练阶段之后,映射用已知的特征,如正常呼吸,气流限止信号等进行表征。对每个事件,计算在映射的每个节点中的响应S(见图2)。Sik=exp(-dik2/P),]]>对正常呼吸有高响应的区域标记为正常区域;对气流限止起作用的区域标记为气流限止区域等。
然后决定,哪个节点表示需要响应的事件;也就是报警信号被送到压力控制系统。在图2中,描绘了响应对应于气流限止的输入的映射。在此情况下,节点X,Y,Z可能被标记为气流限止区域。
例4.硬判决B本例类似于例1中描述的例子,但代替矩形窗而使用180个样本的汉明窗。此外,对对数倒频谱系数进行加权,使其具有近似相同的变化,尽管给出的PET参数为对数倒频谱变化的两倍。这使PET参数比其他参数稍为重要。使用下面的加权函数w=[1 1.41 1.5 4 2]训练的完成与以前完全一样,在图4中示出了对典型气流限止信号的映射响应。在此情况下,节点X,Y,Z可能被标记为气流限止区域。
例5.软判决在本例中,给映射节点一个数0,2,5或10作为标记,用以表示分类结果的严重性。因此,不是将报警开/关信号送给压力控制系统,而是送去这个数。例如若0反映正常区域而10反映窒息,则可将这些数整合形成总的呼吸状态分类。若级数很高,可允许快速增加压力,级数低则允许压力降低,中间级数导致压力缓慢增加。
例6.降低采样率若处理器的容量不允许上述所有的计算,则LPC计算可由2中取1或4中取1。分析窗口中的采样数则必须减少,使得窗口的时间跨度仍然大约是2个呼吸周期。映射响应的分辨力将不会因此受到影响。
例7.压力调节和运行时模式若对一个序列中50个样本的ANN响应是正的,则压力控制系统将增加1个步长,0.125毫巴。若对一个序列中300个样本的ANN响应是负的,则压力将减少1个步长,0.125毫巴。若在那些序列期间ANN响应有变化,则压力将不变。
在运行时模式中,如上所述分析气流信号的一个样本(即提取特征向量),并送到当前存入APAP单元的存储体中的映射中。在对映射响应的表达式中不需要计算指数,因为函数是单调的。
例8.程序码<pre listing-type="program-listing">  //function ann_detect  //COPYRIGHT(C)2000 PePe Research  //GOTHEBORGH,SWEDEN.  #include<stdio.h>  #include″ann_detect. h″  #include″apne_func.h″  int ann_detect(const float new_sample){  float corr[10];  int ana_dim=5;  int win=180;  float apol[5];  float alpha;  float dvec[5];  int respx,respy;  int resp_en,resp_ann;  calc_corr(new_sample,win,ana_dim+1,corr);  /* Check levels,and slope */  resp_en=reg_r0(corr
,&amp;amp;dvec[4]);  ipc(corr,ana_dim,apol,&amp;amp;alpha);  a2cep(apol,ana_dim,dvec);  dvec[1]*=1.41;  dvec[2]*=1.5;  dvec[3]*=4;  dvec[4]*=2;&lt;dp n="d10"/&gt;   map_resp(dvec,ana_dim,&amp;amp;respx,&amp;amp;respy);  resp_ann=apne_dec(respx,respy);  if(resp_ann==1||resp_en==1)  return 1; return 0;}//functions for apne detection////COPYRIGHT(C)2000 PePe Research//GOTHEBORGH,SWEDEN.#define MAP_DIM_X 8#define MAP_DIM_Y 8#define MAP_SIZE 64#define DATA_DIM 5#define NHEAD 256#define NMB_SAVE 100#define MaxRO 180#define MaxRO_ 290#define SLOPE 0.006#include<stdio.h>#include<math.h>#include″map.h″#include″annpar.h″float distance(const float *x,const float *y,int d ){   int i;   float dist,t;   t=x
-y
;   dist=t*t;   for(i=1;i<d;i++){   t=x[i]-y[i];   dist+=t*t;   }   return dist;}void calc_corr(float const rec_sample,int const win,int const ana_dim,float* corr){   static float samp_win[180];   static int first=0;   static float prev_sample=0;   float diff;   int i,j;   /* calc diff of new and prev sample */   diff=rec_sample-prev_sample;   prev_sample=rec_sample;   /*Insert new sample first,move all the other */   for(i=win-1;i>0;i--){   samp_win[i]=samp_win[i-1];   }   samp_win
=diff;   for(j=0;j<ana_dim;j++){&lt;dp n="d11"/&gt;    corr[j]=0;   for(i=0;i<win-j;i++){   corr[j]+=samp_win[i]*samp_win[i+j];   }   }   /* Add an offset to avoid near/0 operations */   corr
+=1;}int reg_r0(fioat cur_r0){   static float rf[MaxR0];   static int first=1;   static int Index=0;   int i;   static float prev_r0=0;   float k,m,rf0,dec;   rf0=0.9*prev_r0+0.1*cur_r0;   prev_r0=rf0;   k=0.5*(rf0-rf[MaxR0-1]);   m=(rf0+rf[MaxR0/2]+rf[MaxR0-1])/3.;   /*update the saved old values */   for(i=MaxR0-1;i>0;i--){   rf[i]=fi[i-1];   }   rf
=rf0;   /* second rule check the regression line */   if(k>-1)   dec=1000;   else   dec=-MaxR0_2*((m/k)+1);   *out=exp(-SLOPE*dec);   /* first rule,if energy less then 15 make alarm */   if(cur_r0<15){   return 1;   }   /* second rule,if regression line crosses zero line too soon make alarm */   if(dec<50){   return 1;   }   return 0;void ipc(fioat* const acf,int const ana_dim,float* aCoeffs,float* alpha){   float err;   int i,j;   float refis[5];   float sum,refi,tmp;   err=acf
;   for(i=0;i<ana_dim;i++){&lt;dp n="d12"/&gt;  if(err<=0){   refis[i]=0;   aCoeffs[i]=0;   }else{   sum=0;   for(j=0;j<i;j++)  sum+=aCoeffs[j]*acf[i-j];   refi=(acf[i+1]-sum)/err;   refis[i]=refi;   for(j=0;j<i/2;j++){  tmp=aCoeffs[j];  aCoeffs[j]-=refi*aCoeffs[i-j-1];  aCoeffs[i-j-1]-=refl*tmp;   }   if(i &amp;amp; 1)  aCoeffs[i/2]-=refi*aCoeffs[i/2];   aCoeffs[i]=refi;   err*=1-refi*refi;   for(i=0;i<ana_dim;i++){   aCoeffs[i]=-aCoeffs[i];   }   *alpha=sqrt(err);}void a2cep(fioat* const a,int const ana_dim,float* cep){   int i,j,ind;   float sum;   cep
=-1*a
;   for(i=2;i<ana_dim+1;i++){   sum=i*a[i-1];   for(j=2;j<=i;j++){   ind=i-j+1;   sum=sum+a[j-2]*cep[ind-1]*ind;   }   cep[i-1]=-sum/1;   }}void map_resp(fioat* const dvec,int const ana_dim,int* respx,int* respy){   int xm,ym,ind,i;   float dist; float min_dist=1000000;   for(xm=0;xm<MAP_DIM_X;xm++){ for(ym=0;ym<MAP_DIM_Y;ym++){    ind=(xm+(ym*MAP_DIM_X))*DATA_DIM;  if((dist=distance(dvec,&amp;amp;map[ind],DATA_DIM))<min_dist){ *respx=xm;   *respy=ym;   min_dist=dist;  }  }  }}&lt;dp n="d13"/&gt;int apne_dec(int const respx,int const respy,float* d_out){   static float mean_x=MAP_DIM_X/2;   static float mean_y=MAP_DIM_Y/2;   static int first=0;   static float resp_hist[NMB_SAVE];   static int n_hist_x=0;   static int n_hist_y=0;   float rad_filt;   float rad_inst;   double dx,dy,dfx,dfy;   int current_in_area=0;   int new_in=0,i;   dx=(respx-area_x_mid)*(respx-area_x_mid);   dy=(respy-area_y_mid)*(respy-area_y_mid);   rad_inst=sqrt(dx+dy);   mean_x=ip_a*mean_x+(1-ip_a)*respx;   mean_y=ip_a*mean_y+(1-ip_a)*respy;   dfx=(mean_x-x_cen)*(mean_x-x_cen);   dfy=(mean_y-y_cen)*(mean_y-y_cen);   rad_filt=sqrt(dfx+dfy);   /*check if the current response is in the area */   if(area_rad>rad_inst)new_in=1;   for(i=NMB_SAVE-1;i>0;i--){   resp_hist[i]=resp_hist[i-1];   }    resp_hist
=new_in;   for(i=0;i<nb_resp_hist;i++){   if(1==resp_hist[i])current_in_area++;   }   if(mean_x>det_x_min &amp;amp;&amp;amp;   mean_y>det_y_min &amp;amp;&amp;amp;   mean_x<det_x_max &amp;amp;&amp;amp;   mean_y<det_y_max)   /* standard case,when detecting a simple square area of the filtred response */   return 0;   else if(rad>rad_filt)   /* within circle caic,otherwise same as above */   return 0;   else if(resp_in_area<current_in_area)   /*instant resp totaly over the given number */   return 0;   else   return 1;};</pre>例9.病人治疗设备。带有内部气流测量的breas CPAP pv10型(Breas AB,Molndal,瑞典);PSG系统,EMBLATMPolysomnography(Embla hf,Reykjavik冰岛);带有用于睡眠扰动检测的人工神经网络软件的PC。
病人。6个男性,年龄从31到60岁,受到各种睡眠紊乱的病疼。
测量。病人装备了来自PSG系统的所有传感器EEG、EOG、EMG、氧饱和、脉冲,鼻气流热敏电阻测量和身体位置。带着这些装备可以确定睡眠的阶段、唤醒、睡眠窒息、睡眠呼吸急促以及与睡眠有关的其它事件。CPAP提供空气穿过管子经鼻隔膜到病人。通过CPAP通讯接口将PC连接到CPAP。PC的软件能通过通讯接口从CPAP读出空气流的值并在CPAP上设置新的压力设定点。信息以约20Hz的速率进行交换。PC程序将气流值送入人工神经网络(ANN)。从ANN的输出被送入压力调节算法(PRA)。压力调节算法计算新的压力设定点,并激活CPAP中新的值。从人工神经网络的输出和压力设定点由PSG系统读出。
估算。在正常的CPAP滴定中(睡眠紊乱分析),CPAP连接到在睡眠中的病人。在夜间,调节CPAP的压力使得病人处于无睡眠紊乱表示的状态。此压力是在CPAP治疗中用的压力。用PSG系统能看到病人逐次呼吸对各种CPAP压力的需求。所需的CPAP压力根据睡眠的阶段,身体位置等而变化。来自自动CPAP测试的数据在PSG系统中估算,其方法与医生用于估算接收CPAP治疗的病人的CPAP滴定相同。从而能确定由ANN进行的睡眠紊乱检测与PSG系统中的分析之间的相关性。所获得的好的相关性表示,ANN作出正确的反应。
参考文献[1]T.Kohonen,T.Torkkola,M.Shozakai,O.Venta“Phonetic typewriterfor Finnish and Japanese”,Proc IEEE ICASSP,纽约,1988。
H.C.Leung,V.W.Zue“Some Phonetic Recognition Experiments usingArtificial Neural Nets”,Proc IEEE ICASSP,NewYork,1988。
P.Brauer“Infrastructure in Kohonen maps”,Proc.IEEE ICASSP,Glasgow,苏格兰,1989。
P.Knagenhjelm“A Recursive Design Method for Robust VectorQuantization”,Proc. ICSPAT,波士顿,Massachusetts,1992.
权利要求
1.采用人工神经网(ANN)检测并治疗在睡眠期间呼吸紊乱的方法,其中分析有关呼吸气流的数据,该方法包括·将带管子的掩膜放置在病人的气道上,该掩膜与由连续正气道压力(CPAP)系统控制的压缩呼吸气体源相联系,从而建立呼吸回路;·周期地采样该回路中的气流;·对各种呼吸模式的一个或若干不同的参数周期地计算其值;·周期地将所述参数值送给ANN,后者被训练成识别睡眠中呼吸紊乱的呼吸模式特征;·在该神经网络中分析所述参数值;·响应来自所述ANN的输出,来控制压缩呼吸气体的供应。
2.如权利要求1所述的方法,其特征在于,所述参数值以2Hz到30Hz的频率送到该网络。
3.如权利要求2所述的方法,其特征在于,所述参数值以大约20Hz的频率送到该网络。
4.如权利要求1所述的方法,其特征在于,所述参数包含对数倒频谱系数、能量梯度、趋势差。
5.如权利要求1-5中任一权利要求所述的方法,其特征在于,用从大量病人收集的数据训练ANN。
6.如权利要求1所述的方法,其特征在于,ANN已用从在特定睡眠阶段的病人收集的数据进行训练。
7.如权利要求1所述的方法,其特征在于,ANN已用从睡眠期间停留在特定体位的病人收集的数据进行训练。
8.如权利要求1所述的方法,其特征在于,ANN已用从在包括酒精等药物影响下在睡眠期间的病人收集的数据进行训练。
9.如权利要求1所述的方法,其特征在于,ANN已通过使用睡眠扫描系统,用从病人收集的数据进行训练。
10.如权利要求1所述的方法,其特征在于,ANN包含一系列表示训练数据组的节点。
11.如权利要求1所述的方法,其特征在于,ANN是Kohonen映射型的ANN。
12.如权利要求11所述的方法,其特征在于,包括存储在非易失性存储器中的数据的结构。
13.如权利要求12所述的方法,其特征在于,该非易失性存储器包含在自动CPAP之内。
14.如权利要求11所述的方法,其特征在于,ANN包含表示窒息的初始阶段的区域。
15.如权利要求14所述的方法,其特征在于,使病人呼吸模式的封闭轨迹特征通过ANN,并关于其对表示窒息初始阶段的所述区域的几何关系作出分析,所述轨迹穿过那样的区域或触及那样的区域表示紊乱的呼吸模式,并用于控制ACPAP,使增加提供给病人的空气量,从而恢复正常的呼吸。
16.如权利要求15所述的方法,其特征在于,在正常的呼吸模式重新建立后,用于恢复正常呼吸所需要的附加空气量减少了。
17.如权利要求11所述的方法,其特征在于,包括使用线性预测码来分析送给ANN的参数值。
18.如权利要求17所述的方法,其特征在于,在所述线性预测码分析中,从该分析中得出的所述A-参数被转换成对数倒频谱参数,用于参数距离与概念距离之间的最优相关性。
19.如权利要求11所述的方法,其特征在于,在计算线性预测码时的预测误差被用作确定一行中下一个参数值的基础。
20.如权利要求19所述的方法,其特征在于,过滤所述的预测误差,以抵消短期变化,并用分析窗口的总能量进行标准化。
21.一种与CPAP一起使用的检测并治疗在睡眠期间呼吸紊乱的装置,该装置包括采样(尤其在吸入期间)呼吸空气流数据的探针,和用以直接或间接分析所述数据以控制呼吸空气压力的人工神经网络(ANN)。
22.如权利要求21所述的装置,其特征在于,该ANN是Kohonen映射型的ANN。
23.一种自动连续的正气道压力装置(ACPAP),它包括采样呼吸空气流数据的探针和直接或间接分析所述数据以控制呼吸空气压力的人工神经网络。
24.如权利要求23所述的装置,其特征在于,该ANN是Kohonen映射型的ANN。
全文摘要
一种用于检测并治疗在睡眠期间呼吸紊乱的方法,它使用了人工神经网络(ANN),在其中分析有关呼吸气流的数据。通过为病人接上带有压缩呼吸气体供应的连续正气道压力(CPAP)系统来建立呼吸回路,该回路中的气流被周期地采样,并周期地计算一个或若干个各种不同呼吸模式的参数;该参数值周期地送到被训练成识别睡眠中呼吸紊乱的呼吸模式特征的ANN,并在该网络中进行分析,CPAP压缩呼吸气供应设备通过响应ANN的输出进行控制。还揭示了相应的装置。
文档编号A61M16/00GK1468077SQ0181670
公开日2004年1月14日 申请日期2001年9月28日 优先权日2000年10月2日
发明者O·艾克伦德, O 艾克伦德 申请人:布利斯医学联合股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1