状态空间模型(离散)-隐马尔可夫模型推导及实例

推导和证明状态空间模型State Space Model中的离散动态模型Discrete Dynamic Model隐马尔可夫模型Hidden Markov Model,HMM。

1. 马尔科夫模型

一个系统有N各状态,S1,S2,...,Sn,随着时间的推移,系统从某一个状态转移到另一个状态。设qt是时间为t时刻对应的状态,系统在t时刻处于状态Sj的概率取决于其在时间1, 2, 3, ... , t-1的状态。这个概率为:

如果系统在t时刻的状态只与其在时间t-1的状态相关,则该系统构成一个离散的一阶markov链(马尔科夫过程):

如果仅仅考虑独立于时间t的随机过程,,其中状态转移概率aij必须满足aij≥0,并且状态空间模型(离散)-隐马尔可夫模型推导及实例_第1张图片,则该随机过程称为markov model。

  • 实例:气象观测

假定某地一段时间的气象可由一个三状态的markov model描述。S1=雨; S2=多云; S3=晴。并且我们已经知晓状态转移矩阵为:

状态空间模型(离散)-隐马尔可夫模型推导及实例_第2张图片

如果第一天为晴天,那么我们根据Markov Model,可以推测在今后7天中天气为O=“晴晴雨雨晴云晴”的概率为:

状态空间模型(离散)-隐马尔可夫模型推导及实例_第3张图片

2. 隐马尔科夫模型 HMM

在Markov Model中,每一个状态代表一个可观察的事件。然而在Hidden Markov Model中观察到的事件是状态的随机函数,因此HMM模型是双重随机过程,其中状态转移过程是隐蔽的,并且可观察的事件的随机过程是隐蔽的状态转换过程的随机函数

HMM模型建立在三条重要的假设基础之上。对于一个随机事件,观察序列为O=O1,O2, ... , Ot,该事件对应的隐状态序列为Q=去q1,q2, ..., qt.

  • 假设1:Markov性假设,即一阶Markov过程 P(qi | q1,q2,...,qi-1)=P(qi | qi-1)
  • 假设2:不动性假设,即状态与具体的时间无关 P(qi+1 | qi ) = P(qj+1 | qj) 对于任意的i/j都成立
  • 假设3:输出独立性假设,即输出仅仅与当前状态相关 P(O1,O2,...,Ot | q1,q2,...,qt) = π P(Ot | qt)

HMM 可以通过五元组进行描述λ=[N,M,A,B,π]。其中

  • N = {q1, q2, ..., qt} : 状态的有限集合
  • M = {v1, v2, ..., vt} : 观察值的有限集合
  • A = {aij}, aij=P(qt=Sj | qt-1=Sj-1) : 状态转移概率矩阵
  • B = {bik}, bjk=P(Ot =vk | qt=Sj) : 观察值概率分布矩阵
  • π = {πi}, πi = P(q1=Si) : 初始状态概率分布

观察序列产生步骤。给定HMM模型λ=[π,A,B],则观察序列O=O1,O2,...,Ot可以通过下面步骤产生:

  1. 根据初始状态概率分布π=πi,选择初始状态q1 = Si
  2. 设定t=1
  3. 根据Si的输出概率分布bjk, 输出Ot = vk
  4. 根据状态转移概率分布aij, 转移到新状态qt+1=Sj
  5. 设t=t+1, 如果t

令λ=[π,A,B]为给定HMM的参数, 令O=O1,O2,...,Ot为观察值序列,这里可以总结出关于HMM的三个基本问题:

  • 评估问题:定于给定模型,求某个观察值序列的概率P(O|λ)
  • 解码问题:对于给定模型和观察值序列,求可能性最大的状态序列maxQ{ P(Q|O,λ) }
  • 学习问题:对于给定的一个观察值序列O,调整参数λ,是的观察值出现的概率P(O|λ)最大

3. 实例:赌场的欺诈问题

状态空间模型(离散)-隐马尔可夫模型推导及实例_第4张图片 某赌场在掷骰子根据点数决定胜负时,暗中采取了如下作弊手段:在连续多次掷骰子的过程中,通常使用公平骰子A,偶尔混入一个灌铅骰子B。其状态转移函数如图所示。

已知:公平骰子的概率分布P(1)=1/6,P(2)=1/6,P(3)=1/6,P(4)=1/6,P(5)=1/6,P(6)=1/6

已知:灌铅骰子的概率分布P(1)=0,P(2)=1/8,P(3)=1/8,P(4)=3/16,P(5)=3/16,P(6)=3/8

一次连续掷骰子的过程模拟如下:

  时间 1 2 3 4 5 6 7
序列 骰子 A A A B A A A
序列 点数 3 3 4 5 1 6 2

查封赌场后,调查人员发现一些连续掷骰子的记录,其中又一个骰子掷出的点数记录如下:

124552646214614613613666166466163661636616361651561511514612356234......

对应上面的三个基本问题,如下:

  • 评估问题:点数纪录124552646214614613613666166466163661636616361651561511514612356234......问题 : 会出现这个点数纪录的概率有多大? 即求P(O|λ)!
  • 解码问题:点数纪录124552646214614613613666166466163661636616361651561511514612356234......问题 : 点数序列中的那些点数是用骰子B掷出来的? 即求 maxQ{ P(Q|O,λ) }
  • 学习问题: 点数纪录124552646214614613613666166466163661636616361651561511514612356234......问题 : 作弊骰子掷出各个点数的概率是怎么样的? 公平骰子掷出各个点数的概率又是什么样的? 赌场是何时更换骰子的? 

针对本例, HMM定义如下:

  • 隐状态集 S = {A,B}
  • 明字符集 V = {1,2,3,4,5,6}
  • 初始状态概率 π1 = 1; π2 = 0;
  • 隐状态转移概率 a11 = 0.9; a12=0.1; a21=0.8; a22=0.2;
  • 明字符生成概率: b11=b12-b13=b14=b15=b16=1/6   b21=0 b22=b23=1/8 b24=b25-3/16 b26=3/8

很明显,HMM将隐状态序列和观察序列联系了起来:

  • 隐状态序列:由离散隐状态组成的状态序列 Q=(q1,q2,q3,...,qt) 每一个qt∈S均是一个状态,由初始状态概率及状态转移概率(π,A)决定
  • 观察序列:由明字符组成,O=(o1,o2,o3,...,ot),每个ot∈V均是一个离散明字符,由状态序列及各状态的明字符生成概率(Q,B)决定

状态空间模型(离散)-隐马尔可夫模型推导及实例_第5张图片


对应上图,本案例中涉及到的三个基本问题为:

  • 评估问题

Q : 给定观察序列O和HMM模型 λ=(π, A, B)。 判断O是由λ产生出来的可能性有多大?

A : 计算骰子点数序列的确由“作弊”模型生成的可能性。

基本解法前向算法 - 定义前向变量 -> 动态规划算法 复杂度 O(N*N*T)

  • 解码问题

Q : 给定观察序列O和HMM λ=(π, A, B), 计算与序列O相对应的状态序列是什么?

A : 在骰子点数序列中,判断哪些点使用作弊骰子B掷出来的。

基本解法: Viterbi算法,采用动态规划算法,复杂度O(N*N*T)

  • 学习问题

Q : 给定一系列观察序列样本,确定能够产生出这些序列的模型 λ=(π, A, B) ?

A: 如何从大量的点数序列样本中学习得出“作弊模型”的参数。

学习问题:向前向后算法 - EM算法的一个特例,带隐变量的最大似然估计


3.1 评估问题基本解法:前向算法

定义前向变量: 在时间步t,得到t之前的所有隐状态向观测数据分布,且时间t对应的状态为Si 这一事件的概率:

a(t,i) = P(o1, o2, ..., ot, qt = Si | λ)

则a(a, i) = P(o1, q1 = Si | λ) = π(i)*b(i, o1)

    a(t, i) = P(o1, o2, ..., ot, qt = Si | λ)

   P(O|λ) = ∑a(t, i)


Algorithm:
1. 初始化 -  a(1, i) = π(i)*b(i, o1)
2. 递归   -  a(t+1, j) = { ∑a(t, i) * a(i,j) } * b(j, ot+1)
3. 终结   -  P(O|λ)=∑a(t,i) 


状态空间模型(离散)-隐马尔可夫模型推导及实例_第6张图片 HMM的网络结构
  • 实例:前向算法的应用
状态空间模型(离散)-隐马尔可夫模型推导及实例_第7张图片 HMM模型如下,尝试根据前向算法计算产生观测符号序列O={ABAB}的概率

初始概率矩阵π=(0,0,1),即开始处于状态1. 按照前向算法公式,我们以此递推解出a(t,i). 计算图如下:

状态空间模型(离散)-隐马尔可夫模型推导及实例_第8张图片

3.2 解码问题基本解法 - Viterbi算法

定义δ(t,i)为t时间步沿状态序列q1,q2,...,qt且qt=Si产生出o1,o2,...,ot的最大概率,即

Viterbi算法也是类似于前向算法的一种网格结构。


Algorithm:
目标:给定一个观察序列和HMM模型,如何选择“最优”的状态序列,以“最好地解释”观察序列

“最优”意味着概率最大:

Viterbi变量:

递归关系:

记忆变量:φ(i)记录概率最大路径上当前状态的前一个状态

Step 1 :初始化 

Step2:递归

状态空间模型(离散)-隐马尔可夫模型推导及实例_第9张图片

Step 3:终结

Step 4:路径回溯


  • 实例:Viterbi算法的应用
状态空间模型(离散)-隐马尔可夫模型推导及实例_第10张图片 HMM模型如下,尝试根据Viterbi算法计算产生观察符号序列O={ABAB}的最优状态序列

初始概率矩阵π=(0,0,1),即开始处于状态1. 按照Viterbi算法公式,我们以此递推出δ(t,j),φ(t,j),q(t):

状态空间模型(离散)-隐马尔可夫模型推导及实例_第11张图片 绿色箭头表示最可能的状态序列

3.3 学习问题

学习问题也称为训练问题,参数估计问题。

给定一些列观察序列样本,从中确定产生出这些序列的模型λ=(π,A,B),以满足某种最优化准则,是的观察序列的概率P(O|λ)最大。

  • 状态已知情况下,我们可以由最大似然估计来估计出HMM的参数:

状态空间模型(离散)-隐马尔可夫模型推导及实例_第12张图片

然而,由于HMM中的状态序列是观测不到的(隐变量),上面的最大似然估计方法明显是不行的。EM算法可用于含有隐变量的统计模型的最大似然估计。

https://blog.csdn.net/shenziheng1/article/details/86765391已经介绍了最大期望EM算法。EM算法是一个由交替进行的“期望E过程”和“极大似然估计M过程”两部分组成的迭代过程。EM算法的每一次迭代过程必定单调地增加训练数据的对数似然值,于是迭代过程渐进地收敛于一个局部最优值。

你可能感兴趣的:(状态空间模型(离散)-隐马尔可夫模型推导及实例)