隐马尔科夫模型

马尔科夫模型

二阶马尔科夫模型案例

初始概率分布

状态转移概率分布

状态集合

状态集合S={sunny,cloudy,rainy}。

观测序列

观测状态序列可以是X=x1,...,xt,...,xT,其中xt∈S。

观测序列就是一个系列的状态。马尔科夫模型在计算状态序列的概率时,考虑了转移概率,也就是从一个状态转移到另一个状态的概率。

观测序列概率计算

使用马尔科夫模型计算观测状态序列的概率:

其中θ为模型参数,θ={ p(x) | x∈S }∪{ p(x'|x) | x,x' ∈ S  },也就是初始概率和转移概率,这些都为参数。

P(x;θ)表示在参数θ下,观测状态序列的概率。

因为当前状态的生成只依赖于前一个状态,故称为二阶马尔科夫模型。

连续四天下雨的概率

P(rainny,rainny,rainny,rainny;θ)

=P(x1=s3,x2=s3,x3=s3,x4=s3;θ)

=P(x1=s3) x P(x2=s3 | x1=s3) x P(x3=s3 | x2=s3) x P(x4=s3|x3=s3)

3 x a33 x a33 x a33

=0.3 x 0.4 x 0.4 x 0.4

=0.0192

状态初始化概率

状态初始化概率就是初始时状态的概率,定义为:

πi=p(x1=si),1≤i≤N。

状态初始化概率满足的性质

非负性:πi≥0

归一性:

在天气案例中,状态初始化概率分别为:π1=0.4,π2=0.3,π3=0.3。

状态转移概率

状态转移概率就是从当前状态转移到另一个状态的概率,定义为:

aij=p(xt=sj | xt-1 = si) ,1≤i , j≤N

表明在前一个状态为si事件发生下,后一个状态为sj的概率,这是一个条件概率。

状态转移概率满足的性质:

非负性:

归一性:

归一性表明,从状态i转移到其他所有状态的概率总和为1。

例如在天气案例中,a12表明前一个状态为晴天时,后一个状态为阴天的概率,a12=0.5。

 

马尔科夫模型的极大似然估计

给定包含D个样本的训练数据D={x(d)}Dd=1,使用极大似然估计来从训练数据中自动获取最优模型参数(初始概率和转移概率):

似然函数L(θ)通常以对数形式定义:

其中T(d)表示第d个序列的长度,xt(d)表示第d个序列x(d)中的第t个状态。

构造拉格朗日函数:

计算初始概率

估计初始概率,就要对初始概率求偏导,求目标函数的极值

δ(a,b)中,当a=b时为1,否则为0。令式子等于0,得到:

计算λ

估计λ的值,就要对λ求导,求目标函数的极值:

令式子等于0,得到:

代入式子中,得到:

注意,在λ表达式中,x表示的是S集合中任意状态,是与式子无关的量,而在p(x)式中,x是与p(x)有关的一个量,表示特定的一个状态,在整合的时候应当区分开,使用x'代替,将λ的结果代入p(x)中可以得到:

 

计算状态转移概率

估计状态转移概率,就要对转移概率求导:

令式子等于0,得到:

计算参数γ

目标函数对参数γx求偏导:

令式子等于0,同时将代入,得到:

注意,在γx式子中,x'表示为集合S中任何一个状态,与γx无关,但是在p(x'|x)式子中,是与p(x'|x)有关的一个变量,表示特定的一个状态'。因此在整合的时候要区分开,将γx中使用x''代替,得到最终式子:

参数估计公式

经过上述推导,得到参数估计公式。回想一下,δ(a,b)中,当a=b时为1,否则为0。

状态初始化概率的估计公式为:

分子表示在所有状态序列中,第一个状态序列为x的次数;分母表示在所有状态序列中,第一个状态为任意状态的次数,也就是状态序列的总数;整个式子描述了第一个状态为x的状态序列占总的状态序列的比例,也就是初始状态概率。

 

状态转移概率的估计公式为:

分子表示在所有的状态序列中,前一个状态为x,后一个状态为x',这样成对出现的次数;分母表示在所有状态序列中,前一个状态为x,后一个状态为状态集合中任意状态,这样成对出现的次数;整个式子描述了以 状态x为起点且以状态x'的结束的序列 占以状态x为起点以任意状态x''结束的序列的比例,也就是状态转移概率

隐马尔科夫模型

隐状态与观测状态

假定⼀个囚徒被关在暗⽆天⽇的牢房⾥,不知道外⾯的天⽓(如晴天、阴天、⾬天),但是可以通过触摸感受到地⾯的潮湿程度(如⼲燥、潮湿),从⽽推测天⽓情况。在这个例⼦⾥,地⾯潮湿程度是观测状态,外⾯的天⽓是隐状态。

隐状态无法被直接观测,只能通过观测状态来推断隐状态,观测状态的生成取决于隐状态,可以理解为隐状态是原因,观测状态是结果,求隐状态序列的概率就是通过观测的结果来推断原因。

如图中所示,当前得到的观测状态的概率,既取决于由某个隐状态生成该观测状态概率,也取决于上一个隐状态转移到当前隐状态的转移概率。

隐马尔科夫模型

隐马尔科夫模型相比与马尔科夫模型,引入了隐状态。

O={o1,...,om}表示观测状态集合,S={s1,...,sN}表示隐状态集合。

x=x1,...,xt,...,xT表示观测状态序列,z=z1,...,zt,...,zT表示隐状态序列。

二阶隐马尔科夫模型表示:

其中θ为参数,θ= { p(z) | z ∈ S } ∪ { p(z'|z) | z,z' ∈ S } ∪ { p(x|z) | x∈O ∧ z ∈ S }。

马尔科夫模型中参数只有两个,分别为状态初始概率状态转移概率,在隐马尔科夫模型中参数有3个,分别是隐状态初始概率隐状态转移概率隐状态生成观测状态概率

p(z):表示隐状态的初始概率。

p(zt|zt-1):表示上一个隐状态为zt-1的条件下,当前隐状态为zt的条件概率。

p(xt|zt):表示隐状态为zt的条件下,观测为xt的条件概率。

该表达式中描述了 隐状态生成观测状态的概率 和 隐状态转移概率 。

隐状态初始化概率

 隐状态初始化概率就是初始时隐状态为某一状态的概率,表示为:

πi=p(zi=si),1≤i≤N

隐状态初始化概率性质:

非负性:πi ≥ 0。

归一性:

在天气案例中,隐状态初始概率如下:

隐状态转移概率

隐状态转移概率就是从一个隐状态转移到另一个隐状态的概率,表示为:

aij = p(zt = sj |zt-1 = si ),1 ≤ i,j ≤ N。

隐状态转移概率的性质:
非负性:aij ≥ 0。

归一性:

归一性说明从一个隐状态转移到其他所有隐状态的概率总和为1.

天气案例中,隐状态转移概率如下:

观测状态生成概率

观测状态生成概率指的是从一个隐状态生成一个观测状态的概率,是一个条件概率,表示为:

bj(k) = p(xt = ok | zt =sj),1 ≤ j ≤ N ∧1 ≤ k ≤ M。

bj(k)表明由隐状态j生成观测状态k的概率。

观测状态生成概率性质:

非负性:bj(k) ≥ 0。

归一性:

归一性说明:由一个隐状态生成其他所有观测状态的概率总和为1。

观测状态序列计算

任务定义

给定模型参数(隐状态初始概率,隐状态转移概率,观测状态生成概率),计算观测状态序列的概率。

观测状态序列的概率描述了所有隐状态组合并且转移形成该观测状态序列的概率,所以需要全枚举。

计算复杂度

因为一个观测状态序列可以由多个隐状态序列得到,因此要计算观测状态序列的概率时,要枚举所有的隐状态序列。

假设观测状态序列长度为T,也就是有T个观测状态,隐状态一共有N中,如果全部枚举的话,一共有NT隐状态序列,计算量非常大。

假设观测状态序列为“干燥,潮湿”,则总共有32=9种隐状态序列:

搜索空间的表示

隐马尔科夫模型的搜索空间可以使用一个有向图表示,节点表示隐状态,边表示隐状态之间的转移。

如下图所示,路径等价于P(x,z;θ)= π3b3(x1) X a32b2(x2) X a21b1(x3) X a13b3(x4

每一个时间节点的状态,由隐状态生成观测状态概率 和 隐状态转移概率 决定。

如在时间节点2,a32b2(x2) 表示当前状态由 从上一个隐状态3转移到当前隐状态2的概率 乘以 隐状态2生成观测状态x2(观测序列是给定的,目的是求其概率)的概率。

从图的角度,计算观测状态序列等价于计算所有路劲之和(因为每个时间节点的不同隐状态都可以生成特定的观测状态)。

计算路劲之和有两种方法,全枚举法和动态规划法。

全枚举法

列出所有路径,计算其取值。

动态规划法

利用动态规划的思想,dp[i]表示节点i的累积值,dp[i]可以从dp[i]的所有前驱节点得到,也就是要加上其所有前驱的累积值。

状态转移方程:

dp[i]= sum dp[j]j∈heads(i),其中j为i的前驱,dp[j]为i的前驱j累积的值。

后向路径

与前向路径一致,使用动态规划求解

 

前向概率

部分观测状态序列x1,...,xt与第t个隐状态为si的联合概率称为前向概率。前项概率描述了最后一个观测状态为xt且隐状态为zt=si时,从初始状态转移到该状态的所有情况的概率总和。

定义:at(i)=P(x1,...,xt,zt=si;θ)

想要知道x1,...,xt序列中,也就是最后一个观测状态为xt时,隐状态为zt的概率,就必须知道是如何转移过来的,也就是要知道x1,...xt-1中,也就是最后一个观测状态为xt-1时,隐状态zt-1从不同的状态转移到zt的概率,最终乘以当前的观测状态生成概率

P(x1,...,xt,zt=si;θ)=sum [ P(x1,...,xt-1,zt-1;θ) P(zt=si|zt-1) ] P(xt|zt=si)

初始化:t=1

递归:t=2,...,T

终止:

假设观测状态序列为“干燥,潮湿,干燥”。前向概率为P(x1=干燥,x2=潮湿,x3=干燥,z3;θ)

P(x1=干燥,x2=潮湿,x3=干燥,z3;θ)

 

P(x1=干,z1=晴;θ) = p( z1=晴) x p( x1=干 | z1=晴) = 0.4 x 0.8 = 0.32

P(x1=干,z1=阴;θ) = p( z1=阴) x p( x1=干 | z1=阴) = 0.3 x 0.6 = 0.18

P(x1=干,z1=雨;θ) = p( z1=雨) x p( x1=干 | z1=雨) = 0.3 x 0.3 = 0.09

P(x1=干,x2=湿,z2=晴;θ)=[ p(z2=晴|z1=晴) x P(x1=干,z1=晴;θ) + p(z2=晴|z1=阴)x P(x1=干,z1=阴;θ) + p(z2=晴|z1=雨) x P(x1=干,z1=雨;θ) ] x p(x2=晴|z2=湿) = ( 0.32 x 0.4 + 0.18 x 0.3 + 0.09 x 0.1 ) x 0.2 = 0.0382

P(x1=干,x2=湿,z2=阴;θ)=[ p(z2=阴|z1=晴) x P(x1=干,z1=晴;θ) + p(z2=阴|z1=阴)x P(x1=干,z1=阴;θ) + p(z2=阴|z1=雨) x P(x1=干,z1=雨;θ) ] x p(x2=阴|z2=湿) = ( 0.32 x 0.5 + 0.18 x 0.4 + 0.09 x 0.5 ) x 0.4 = 0.1108

P(x1=干,x2=湿,z2=雨;θ)=[ p(z2=雨|z1=晴) x P(x1=干,z1=晴;θ) + p(z2=雨|z1=阴)x P(x1=干,z1=阴;θ) + p(z2=雨|z1=雨) x P(x1=干,z1=雨;θ) ] x p(x2=雨|z2=湿) = ( 0.32 x 0.1 + 0.18 x 0.3 + 0.09 x 0.4 ) x 0.7 = 0.0854

P(x1=干,x2=湿,x3=干,z3=晴;θ)=[ p(z3=晴|z2=晴) x P(x1=干,x2=湿,z2=晴;θ) + p(z3=晴|z2=阴) x P(x1=干,x2=湿,z2=阴;θ) + p(z3=晴|z2=雨) x P(x1=干,x2=湿,z2=雨;θ) ] x p(x3=晴|z3=干) = ( 0.0382x 0.4 + 0.1108x 0.3 + 0.0854x 0.1 ) x 0.8 = 0.045648

P(x1=干,x2=湿,x3=干,z3=阴;θ)=[ p(z3=阴|z2=晴) x P(x1=干,x2=湿,z2=晴;θ) + p(z3=阴|z2=阴) x P(x1=干,x2=湿,z2=阴;θ) + p(z3=阴|z2=雨) x P(x1=干,x2=湿,z2=雨;θ) ] x p(x3=阴|z3=干) = ( 0.0382x 0.5 + 0.1108x 0.4 + 0.0854x 0.5 ) x 0.6 = 0.063672

P(x1=干,x2=湿,x3=干,z3=雨;θ)=[ p(z3=雨|z2=晴) x P(x1=干,x2=湿,z2=晴;θ) + p(z3=雨|z2=阴) x P(x1=干,x2=湿,z2=阴;θ) + p(z3=雨|z2=雨) x P(x1=干,x2=湿,z2=雨;θ) ] x p(x3=雨|z3=干) = ( 0.0382x 0.1 + 0.1108x 0.3 + 0.0854x 0.4 ) x 0.3 = 0.021366

P(x1=干燥,x2=潮湿,x3=干燥,z3;θ)=P(x1=干,x2=湿,x3=干,z3=晴;θ) + P(x1=干,x2=湿,x3=干,z3=阴;θ) + P(x1=干,x2=湿,x3=干,z3=雨;θ) =0.045648+0.063672+0.021366=0.1307

最终观测序列“干燥,潮湿,干燥”的前向概率为0.1307

 

后向概率

后向概率类似于前项概率,但是计算方式与前向概率相反,第t个隐状态为si生成部分观测状态序列xt+1,...,xT的概率称为后向概率,定义为:

βt(i)=P(xt+1,...,xT | zt=si ; θ )

初始化:t=T,βT(i)=1,1≤i≤N

递归:t=T-1,...,1

终止:

当前状态的概率要考虑 当前隐状态转移到后一个隐状态的概率 以及 后一个的观测状态生成概率,还要乘以后一个隐状态的后向概率

例如计算观测序列“干燥,潮湿,干燥”的后向概率,p(x1=干,x2=湿,x3=干|z ; θ)。

在后向概率中,初始值一般设置为1

β3(晴)=1

β3(阴)=1

β3(雨)=1

p(x3=干| z2=晴)=[ β3(晴) p(z2=晴|z3=晴) p(x3=干|z3=晴)+ β3(阴) p(z2=晴|z3=阴) p(x3=干|z3=阴) + β3(雨) p(z2=晴|z3=雨) p(x3=干|z3=雨) = 1x0.4x0.8 + 1x0.5x0.6 + 1x0.1x0.3= 0.65

p(x3=干| z2=阴)=[ β3(晴) p(z2=阴|z3=晴) p(x3=干|z3=晴)+ β3(阴) p(z2=阴|z3=阴) p(x3=干|z3=阴) + β3(雨) p(z2=阴|z3=雨) p(x3=干|z3=雨) =1x0.3x0.8 + 1x0.4x0.6 + 1x0.3x0.3 =0.57

p(x3=干| z2=雨)=[ β3(晴) p(z2=雨|z3=晴) p(x3=干|z3=晴)+ β3(阴) p(z2=雨|z3=阴) p(x3=干|z3=阴) + β3(雨) p(z2=雨|z3=雨) p(x3=干|z3=雨) =1x0.1x0.8 + 1x0.5x0.6 + 1x0.4x0.3 =0.5

p(x2=湿,x3=干| z1=晴)=[ β2(晴) p(z1=晴|z2=晴) p(x2=湿|z2=晴)+ β2(阴) p(z1=晴|z2=阴) p(x2=湿|z2=阴) + β2(雨) p(z1=晴|z2=雨) p(x2=湿|z2=雨) = 0.65x0.4x0.2 + 0.57x0.5x0.4 + 0.5x0.1x0.7= 0.201

p(x2=湿,x3=干| z1=阴)=[ β2(晴) p(z1=阴|z2=晴) p(x2=湿|z2=晴)+ β2(阴) p(z1=阴|z2=阴) p(x2=湿|z2=阴) + β2(雨) p(z1=阴|z2=雨) p(x2=湿|z2=雨) = 0.65x0.3x0.2 + 0.57x0.4x0.4 + 0.5x0.3x0.7= 0.2352

p(x2=湿,x3=干| z1=雨)=[ β2(晴) p(z1=雨|z2=晴) p(x2=湿|z2=晴)+ β2(阴) p(z1=雨|z2=阴) p(x2=湿|z2=阴) + β2(雨) p(z1=雨|z2=雨) p(x2=湿|z2=雨) = 0.65x0.1x0.2 + 0.57x0.5x0.4 + 0.5x0.4x0.7= 0.2670

p(x:θ)=p(z0=晴)p(x1=干燥|z1=晴)β1(晴) + p(z0=阴)β1(阴)p(x1=干燥|z1=阴) + p(z0=雨)β1(雨)p(x1=干燥|z1=雨)=0.4 x0.8 x 0.2010 + 0.3 x 0.6 x 0.2352 +0.3 x 0.3 x 0.2670 = 0.1307

posted @   Laplace蒜子  阅读(305)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示