隐马尔可夫模型和隐含马尔可夫模型的训练
概率论的发展从相对静态的随机变量到相对动态的随机过程。
所谓随机过程,就是随着时间的变化状态转移的过程。
也就是说每一个时刻都对应着一个状态。(这个时刻的)状态到(下一个时刻的)状态的改变的过程,就是过程。
所谓随机是指,某一个时刻的状态是不能够确切的知道的(动态的,随机的)所以说是随机的。
马尔可夫链(马尔可夫)就是根据随机过程提出的一种假设
那么他是怎么假设的呢?
该过程中,在给定当前知识或信息的情况下,过去(即当前以前的历史状态)对于预测将来(即当前以后的未来状态)是无关的
根据输出的m1,m2,m3....来找到最合适的s1,s2,s3.....(这个过程也称为解码)
(s1,s2,代表“1”时刻的状态,“2”时刻的状态,这是个概括,具体时刻的状态是什么,有个能是m1,m2,m3,m4。。的其中一个)
举个例子,比如有好多个袋子,袋子里有许多不同颜色球,并且每个袋子里球的颜色的概率分布是不同的。
现在随意选择一个袋子,初始状态概率,从袋子里选择一个球,记录颜色,这个颜色就是表现出来的(m1,m2,m3,m4)状态,所选择的袋子就相当于的s1(si)
比如,红色m1,黄色m2,蓝色m3,绿色m4,第一次选择的是红色m1,那么p(m1|s1) 就是发射概率(生成概率)p(mi|si).
下一次又随意选择了一个袋子s2,从中任意摸出一个球m2,p(s2|s1)就是状态转移概率p(si|si-1)
这两个参数就是马尔可夫模型的参数,估计和计算这两个参数的过程称之为模型的训练,挺可爱的名字吧~
我又想了下HMM和马尔可夫的区别(马尔可夫也称可视马尔可夫,和隐含是反义词)
见文思意,可视马尔可夫指的是,状态转移的过程是可视的,可以知道的,上面的例子就是说从一个袋子到下一个袋子,选择哪一个袋子是知道的。官方一点,状态转移序列,状态转移过程是知道的。
而HMM是不知道选择的是哪一个袋子,HMM知道的只是,具体什么颜色m1,m2,m3,m4..
我们只能通过看到球的颜色来推测S1,S2,S3....选择了哪一个袋子(解码,前面那个图片倒着推)
换一句话说,我们只能通过看到球的颜色来推测,状态转移概率p(si|si-1),发射概率(生成概率)p(mi|si),初始状态概率
为了表示方便用A表示转移概率p(si|si-1) B:发射概率(生成概率)p(mi|si) c初始概率。
重申一下,A,B被称为HMM的参数,估计和计算这两个参数的过程称之为模型的训练
先说一下,围绕HMM模型有3个基本问题:
1,求观察序列(给定一个模型(A,B,C),求特定的输出序列(m1,m2...))
2,给定(A,B,C)和1观察序列,求S1,S2,S3...
3,估计HMM参数(模型的训练)
1,用Forward-BarkWard算法可以解决
2,用 维特比算法可以解决
3,用鲍牧-韦尔奇算法
我们这次讨论3,3,用鲍牧-韦尔奇算法
鲍牧-韦尔奇算法,
首先找到一租能够产生输出序列O的模型参数,称为M0,(显然是存在这个模型的,因为转移概率和输出概率是均匀分布的,模型可以产生任何输出O)
接着我们要找一个更好的模型M1,假设解决了
1,求观察序列(给定一个模型(A,B,C),求特定的输出序列(m1,m2...))
2,给定(A,B,C)和1观察序列,求S1,S2,S3...
不但可以算出这个模型产生O的概率P(O|M0),而且可以根据这个模型产生O的所有可能的路径(记录了每个状态经过多少次si,到达了哪些状态si+1,输出了哪些符号O),以及这些路径的概率,由此就可以知道发射概率和转移概率了,这两个参数构成了另一个称为新的模型M1。
可以证明P(O|M1)>P(O|M0)
接着从M1,出发找到一个更好的模型M2,一直找到模型的质量不再提高为止,这个算法每一次都是不断的估计,使得输出概率最大化,这个过程称为期望最大化EM。
哎,,,,就说这么多,剩下的下次再说(EM,维特比,和Forward-BarkWard)。
这些都是自己想的,不知道对不对,希望指正。