下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、隐马尔柯夫模型的一种面向对象的程序实现框架伟赵荣椿邓摘要在以 c + + 语言作为程序设计语言的基础上, 提出了一种用面向对象的程序设计方法来实现隐马尔柯夫模型的基本框架。 按照这一框架实现的隐马尔柯夫 模型能够很好地保护它自己不受未知的外部事件的影响, 从而使它的数据和功能免遭破坏; 而且对模型的改进以及程序实现上的变化也不会影响使用它的外部应用程 序。 此外, 用这一方法编制的隐马尔柯夫模型程序具有很好的重用性和继承性。关键词隐马尔柯夫模型, 面向对象的程序设计, 类,中图分类号t p 391t p 311引言隐马尔柯夫模型, 作为一种主要的信号统计模型, 在信号处理、图像处理、模式识别等
2、领域中有着广泛的应用。但是隐马尔柯夫模型的数据元素众多, 数学结构丰富, 计算异常复杂, 因此 用传统的程序设计方法通常不能很好地实现这一模型。 要高效、可靠地使用隐马尔柯夫模型, 尤其是在大型应用软件系统中, 就要用一种崭新的程序设计方法来实现它。面向对象的程序设 计方法是导致软件构造发生一场革命的新方法, 也是用来实现隐马尔柯夫模型的一种新的程 序设计方法。 本文在以 c + + 语言作为程序设计语言的基础上, 提出了一种用面向对象的程序 设计方法来实现隐马尔柯夫模型的基本框架, 即把隐马尔柯夫模型封装在一个类中。这个类既 包含了表示模型特性的数据元素, 又包含了用于求解隐马尔柯夫模型的三
3、个基本问题的多个 函数。由于这个隐马尔柯夫模型类为使用它的各个应用程序提供了统一的功能接口, 而实现这 些功能的数据成员和成员函数对于各个应用程序是“不可见”的。隐马尔柯夫模型类的设计给出一个隐马尔柯夫模型类的 c + + 语言描述, 其中包括类中数据成员的定义和成员函数 的定义, 以此作为隐马尔柯夫模型的一种面向对象的程序实现框架。1. 1隐马尔柯夫模型类中数据成员的定义一个隐马尔柯夫模型由 5 个数据元素唯一确定:1 西北工业大学博士生本文收到日期: 1998- 01- 16 西北工业大学教授 1994-2013 china academic journal electronic publ
4、ishing house. all rights reserved. ki.ne(1) 模型中所包含的状态数目n 。 模型中所有的状态组成集合s =s 1 , s 2 , s n 在时刻 t 的状态可用 q t 来表示。(2)每个状态所能产生的不同观测符号的数目m 。所有的观测符号组成集合v =v 1 , v 2 , vm (3)状态转移概率分布a = a ij , 式中a ij = p q t+ 1 = s j | q t = s i 1 i, j n观测符号概率分布b =式中(4)bi j ,bij = p v j a t t| q t = s i 1 i n ,
5、1 j m初始状态概率分布 i , 式中(5)i = p q1 = s i 1 i n这 5 个元素必须包含在隐马尔柯夫模型类中作为它的数据成员, 而且为了数据的安全性, 应当把这些数据元素定义为类的私有数据成员。 为了使隐马尔柯夫模型类能够成为模型的本质的、抽象的描述, 同时为了尽可能减小类的对象所占用的内存空间, 在类中除了定义用于表示这 5 个数据元素的数据成员以外, 不再定义用于存放中间计算结果的其它数据成员。 此外, 对于以上 3 个概率分布, 在类中用 3 个指针变 量加以表示, 以便进行动态内存分配, 这样就可以根据实际应用中所需要的模型大小恰当地生 成模型。隐马尔柯夫模型类中数
6、据成员的定义:in t n ;in t m ;f lo a t 3 3a ;f lo a t 3 3b ;f lo a t 3 p i ;th e n um b e r o f sta te s in th e m o de lth e n um b e r o f d ist in c t o b se rva t io n sym bo ls p e r sta teth e sta te t ran sit io n p ro b ab ility d ist r ib u t io nth e o b se rva t io n sym bo l p ro b ab ility d i
7、st r ib u t io nth e in it ia l sta te p ro b ab ility d ist r ib u t io n隐马尔柯夫模型类中成员函数的定义在隐马尔柯夫模型类中定义的成员函数用于实现模型的功能, 即用于求解模型的 3 个基 本问题。 隐马尔柯夫模型的第一个基本问题是通过前向反向过程来求解的。 前向变量的递 推计算公式为21 ( i) = ibi (o 1 )1 i n(1)nt ( i) a ijt+ 1 ( j ) =bj (o t+ 1 )1 t t - 1, 1 j n(2)i= 1前向变量的递推计算过程结束以后, 就可以按以下公式计算概率 p (
8、o | )np (o | ) = t ( i)(3)i= 1可以通过递推公式计算反向变量t ( i) = 11 i n(4)nt ( i) = a ij bj (o t+ 1 ) t+ 1 ( j )1 t t- 1, 1 i n(5)j = 1成员函数, 这两个成员函数的函数原型:vo id com p u te a lp h a (f lo a t 3cu r ren t a lp h a, f lo a t 3n ex t a lp h a, in t in dex )vo id com p u te b e ta (f lo a t 3 cu r ren t b e ta, f lo
9、a t 3 p rev io u s b e ta , in t in dex )其中的参数 cu r ren t a lp h a 和 cu r ren t b e ta 分别表示当前时刻的前向变量和反向变量; 参数n ex t a lp h a 和 p rev io u s b e ta 分别表示计算所得的下一时刻的前向变量和上一时刻的反向变量。 在函数 com p u te a lp h a 中参数 in dex 表示下一时刻的观测符号的标号, 而在函数 com 2p u te b e ta 中参数 in dex 表示当前时刻的观测符号的标号。 由于前向变量和反向变量的递推计算是隐马尔柯
10、夫模型的功能实现细节, 因此在隐马尔柯夫模型类中应当把这两个函数作为私有成员函数。有了实现前向变量一步递推计算的成员函数作为基础, 就可以定义一个计算 p (o | ) 的 成员函数。在这个函数中首先求出第一个时刻的前向变量值作为初始值, 然后通过循环调用成 员函数 com p u te a lp h a 从第二个时刻开始递推计算各个时刻的前向变量值直到最后一个时刻, 将最后时刻的各个状态的前向变量值相加即可得到 p (o | ) 。下面给出这个成员函数的函数原型:f lo a t com p u te p ( in t len g th o f o b se rva t io n sequ
11、en ce, in t 3 o b se rva t io n sequ en ce)函数的两个参数分别表示观测序列的长度和观测序列。函数返回计算所得的概率。函数 com 2p u te p 是模型功能调用的一个接口, 应当把它作为类的公有成员函数。隐马尔柯夫模型的第二个基本问题通常用v ite rb i 算法来求解, 算法的计算过程:(1)计算初始值1 ( i) =1 ( i) =ibi (o 1 )01 i n1 i n(6)(7)(2)递推计算t ( j ) = m ax t- 1 ( i) a ij bj (o t )1 i nt ( j ) = a rg m ax t- 1 ( i)
12、 a ij 1 i n计算最大值2 t t , 1 2 t t , 1 j nj n(8)(9)(3)p 3m ax t ( i) 1 i n(10)(11)=q3=a rg m ax t ( i) 1 i nt(4)路径回溯q33= t+ 1 (q t+ 1 )(12)t = t - 1, t- 2, 1t以上算法的计算过程与前向变量的递推计算过程极为相似。因此, 为了实现v ite rb i 算法同样需要定义如下的成员函数以实现 t ( j ) 的一步递推计算:vo id com p u te de lta (f lo a t 3 cu r ren t de lta, f lo a t 3
13、 n ex t de lta , in t 3 n ex t p si, in t in dex )其中参数 cu r ren t de lta 表示当前时刻的 值, 参数 n ex t de lta 和 nex t p si 分别表示下一时刻的 值和 值, 参数 in dex 表示下一时刻的观测符号的标号。同样道理, 应当把这个函数作为类的私有成员函数。有了成员函数 com p u te de lta, 就可以在此基础上定义以下成员函数来实现v ite rb i 算法:vo id f in d ss ( in t len g th o f o b se rva t io n sequ en
14、ce, in t 3 o b se rva t io n sequ en ce, 1994-2013 china academic journal electronic publishing house. all rights reserved. ki.nein t 3 sta te sequ en ce)其中前两个参数分别表示观测序列的长度和观测序列, 最后一个参数表示求得的最佳状态序列。 除了要进行回溯以外, 函数 f in d ss 的计算过程与函数 com p u te p 的计算过程完全相同。 同样, 函数 f in d ss 必须作为类的公有成员以便外部应用
15、程序能够调用它来求解模型的基本问题。隐马尔柯夫模型的第三个基本问题可以用b aum 2w e lch 算法迭代求解, 算法的迭代公式i =1( i)1 i n(13)t - 1t ( i, j )a t= 1 ij =1 i n , 1 j n(14)t - 1t ( i)t= 1tt ( i)t= 1s. t. o t= v jb1 i n , 1 j n(15)i j =tt ( i)t= 1其中 t ( i) 和 t ( i, j ) 可以按以下公式由前向变量和反向变量计算得到 t ( i) t ( i) t ( i) =1 t t , 1 i n(16)nt ( i) t ( i)i=
16、 1 t ( i) a i j bj (o t+ 1 ) t+ 1 ( j ) t ( i, j ) =1 t t- 1, 1 i, j n(17)nnt ( i) a ij bj (o t+ 1 ) t+ 1 ( j )i= 1 j = 1为了实现b aum 2w e lch 算法需要定义以下两个计算给定时刻的 值和 值的成员函数:vo id com p u te gamm a ( in t len g th o f o b se rva t io n sequ en ce, in t 3 o b se rva t io n sequ en ce, in t t im e t, f lo a
17、 t 3 gamm a)vo id com p u te x i ( in t len g th o f o b se rva t io n sequ en ce, in t 3 o b se rva t io n sequ en ce,in t t im e t, f lo a t 3 3 x i)这两个函数的前三个参数表示观测序列的长度、观测序列和给定时刻, 最后一个参数分别表示计算所得的给定时刻的 值和 值。在这两个函数中首先计算前向变量和反向变量的初始值,然后调用函数 com p u te a lp h a 和 com p u te b e ta 递推计算前向变量和反向变量直到给定时刻
18、或给定时刻的下一时刻, 最后根据公式(16)、(17) 算出给定时刻的 值和 值。 同样应当把以上两个成员函数的访问权限设置成私有的。有了这两个函数, 就可以定义实现b aum 2w e lch 算 法的成员函数:vo id ad ju st m p ( in t len g th o f o b se rva t io n sequ en ce, in t 3 o b se rva t io n sequ en ce)函数的两个参数分别表示观测序列的长度和观测序列。在该成员函数中, 用当前的模型参数通过调用函数 com p u te gamm a 和 com p u te x i 计算各个时
19、刻的 值和 值, 然后根据公式(13) (15) 计算出一个新的模型参数, 并对这两个模型加以比较以确定模型参数的重估过程是否继续进行。 为了使得外部应用程序能够调用函数 ad ju st m p , 应当把它的访问权限设置成公有的。结论3本文提出的这一框架所实现的隐马尔柯夫模型是最为基本的。 隐马尔柯夫模型的变化很多, 在这一程序实现框架中并没有考虑模型本身的诸多变化因素。但是由于程序实现方法的优 越性, 在这一框架中实现隐马尔柯夫模型的多种变化是极为容易的, 而且并不影响使用它的外 部应用程序。参考文献r ab ine r l r. a t u to r ia l o n h idden
20、m a rko v m o de ls and se lec ted a pp lica t io n s in sp eech r eco gn it io n. p ro c o f th e ie e e , 1989, 77 (2) : 257 286r um baugh j , b lah a m , p rem e r lan i w , e t a l. o b jec t2o r ien ted m o de ling and d e sign. e ng lew oo d c liff s:12p ren t ice2h a ll,1991杨芙清等 1 面向对象程序设计 1
21、北京: 北京大学出版社, 1992张国锋 1c + + 语言及其程序设计教程 1 北京: 电子工业出版社, 199234a n o b jec t2o r ien ted p ro g ramm in g a pp ro ach toim p lem en t h idden m a rko v m o de ld en g w e iz h a o r on g ch u nd ep a r tm en t o f com p u te r sc ien ce an d e n g in ee r in gn o r thw e ste rn po ly tech n ica l u n i
22、ve r sity, x ian 710072h idden m a rko v m o de l (hm m ) is an im po r tan t sto ch a st ic m o de l o f sign a l an d h a s a w ideran ge o f app lica t io n s. b u t hm m is too com p lica ted to b e im p lem en ted eff ic ien t ly b y co n ven2 t io n a l p ro g ramm in g m e tho d s. h e re w e
23、 p re sen t an o b jec t2o r ien ted p ro g ramm in g (oo p ) ap 2 p ro ach to im p lem en t hm m b y en cap su la t in g it in a c la ss u sin g c + + a s th e p ro g ramm in g lan2 gu age. su ch an app ro ach , to o u r b e st k now ledge, h a s no t b een repo r ted in th e op en lite ra2 tu re s.1,in sec t io nhm m .w e def in e f ive da ta typ e s in th e c la ss rep re sen t in g th e f ive e lem en t s o fin sec t io n 2, w e f ir st em p lo y fo rw a rd2b ackw a rd a lgo r ithm (eq s. 1 th ro u gh 5) , v ite rb ia lgo r ithm ( eq s. 6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国冷却剂过滤纸行业未来趋势与盈利前景预测研究报告
- 医院执行医嘱制度
- 2024年安全隐患定期排查制度样本(二篇)
- 2024年安全检查与事故隐患排查治理制度范例(二篇)
- 2024年学校会议制度范例(二篇)
- 2024年小学科学实验室管理制度例文(二篇)
- 2025届广西南宁市“4 N”高中联合体高二物理第一学期期中学业质量监测试题含解析
- 2025届陕西省渭南市物理高二上期末质量检测试题含解析
- 湖南省浏阳市三中2025届高三物理第一学期期中监测试题含解析
- 2025届辽宁省葫芦岛锦化高中物理高三上期中预测试题含解析
- 家政服务高级培训课件
- 《DNA计算模型》课件
- 中医诊断学中的妇科疾病与具体病例分析
- 小学音乐(人音版)五年级上册《外婆的澎湖湾》
- 《太阳电池工作原理》课件
- 人民调解工作业务知识讲座
- 2023年上海市中考英语试题及参考答案(word解析版)
- 《杰出的科学家》课件
- 胃窦恶性肿瘤相关知识讲座
- 仓库降本增效方案培训课件
- 运动前后的热身与放松活动
评论
0/150
提交评论