推导和证明状态空间模型State Space Model中的离散动态模型Discrete Dynamic Model隐马尔可夫模型Hidden Markov Model,HMM。
一个系统有N各状态,S1,S2,...,Sn,随着时间的推移,系统从某一个状态转移到另一个状态。设qt是时间为t时刻对应的状态,系统在t时刻处于状态Sj的概率取决于其在时间1, 2, 3, ... , t-1的状态。这个概率为:
如果系统在t时刻的状态只与其在时间t-1的状态相关,则该系统构成一个离散的一阶markov链(马尔科夫过程):
如果仅仅考虑独立于时间t的随机过程,,其中状态转移概率aij必须满足aij≥0,并且,则该随机过程称为markov model。
假定某地一段时间的气象可由一个三状态的markov model描述。S1=雨; S2=多云; S3=晴。并且我们已经知晓状态转移矩阵为:
如果第一天为晴天,那么我们根据Markov Model,可以推测在今后7天中天气为O=“晴晴雨雨晴云晴”的概率为:
在Markov Model中,每一个状态代表一个可观察的事件。然而在Hidden Markov Model中观察到的事件是状态的随机函数,因此HMM模型是双重随机过程,其中状态转移过程是隐蔽的,并且可观察的事件的随机过程是隐蔽的状态转换过程的随机函数。
HMM模型建立在三条重要的假设基础之上。对于一个随机事件,观察序列为O=O1,O2, ... , Ot,该事件对应的隐状态序列为Q=去q1,q2, ..., qt.
HMM 可以通过五元组进行描述λ=[N,M,A,B,π]。其中
观察序列产生步骤。给定HMM模型λ=[π,A,B],则观察序列O=O1,O2,...,Ot可以通过下面步骤产生:
令λ=[π,A,B]为给定HMM的参数, 令O=O1,O2,...,Ot为观察值序列,这里可以总结出关于HMM的三个基本问题:
已知:公平骰子的概率分布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......
对应上面的三个基本问题,如下:
针对本例, HMM定义如下:
很明显,HMM将隐状态序列和观察序列联系了起来:
对应上图,本案例中涉及到的三个基本问题为:
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算法的一个特例,带隐变量的最大似然估计
定义前向变量: 在时间步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)
初始概率矩阵π=(0,0,1),即开始处于状态1. 按照前向算法公式,我们以此递推解出a(t,i). 计算图如下:
定义δ(t,i)为t时间步沿状态序列q1,q2,...,qt且qt=Si产生出o1,o2,...,ot的最大概率,即
Viterbi算法也是类似于前向算法的一种网格结构。
Algorithm:
目标:给定一个观察序列和HMM模型,如何选择“最优”的状态序列,以“最好地解释”观察序列
记忆变量:φ(i)记录概率最大路径上当前状态的前一个状态
Step 1 :初始化
Step2:递归
Step 3:终结
Step 4:路径回溯
初始概率矩阵π=(0,0,1),即开始处于状态1. 按照Viterbi算法公式,我们以此递推出δ(t,j),φ(t,j),q(t):
学习问题也称为训练问题,参数估计问题。
给定一些列观察序列样本,从中确定产生出这些序列的模型λ=(π,A,B),以满足某种最优化准则,是的观察序列的概率P(O|λ)最大。
然而,由于HMM中的状态序列是观测不到的(隐变量),上面的最大似然估计方法明显是不行的。EM算法可用于含有隐变量的统计模型的最大似然估计。
https://blog.csdn.net/shenziheng1/article/details/86765391已经介绍了最大期望EM算法。EM算法是一个由交替进行的“期望E过程”和“极大似然估计M过程”两部分组成的迭代过程。EM算法的每一次迭代过程必定单调地增加训练数据的对数似然值,于是迭代过程渐进地收敛于一个局部最优值。