一、隐马尔科夫模型
隐马尔科夫模型是一个特别有用的概念,在目标跟踪或滤波中广泛使用的卡尔曼滤波就是一个隐马尔科夫的应用,还有其他很有应用。马尔科夫(有时被称为可视马尔科夫,VMM)与隐马尔科夫(HMM)都是用来描述时序概率问题的,用当前及过去的信息来预测未来信息。
那么VMM和HMM有什么区别呢?VMM中的状态序列是可观测的,HMM中的状态序列是不可观测的,而可观测到的事件是一个状态序列的一个概率事件,即HMM是一个双重随机过程,其中的状态是隐藏的,所以称为隐马尔科夫。
1. 定义
隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的转态随机序列(称为状态序列),再由状态随机序列生成生成观测随机序列的过程(称为观测序列)。
隐马尔科夫模型有初始概率分布、状态转移概率分布以及观测概率分布确定。隐马尔科夫模型的定义如下:设Q={q1,q2,q3,…,qN} 是所有可能的状态的集合,其中N是最有可能的状态数,V={v1,v2,v3,…,vM}是所有可能的观测的集合,其中M是可能的观测数。
I是长度为T的状态序列
(
i
1
,
i
2
,
.
.
.
,
i
T
)
(i_1,i_2,...,i_T)
(i1,i2,...,iT),O是对应得观测序列
(
o
1
,
o
2
,
.
.
.
.
,
o
T
)
(o_1,o_2,....,o_T)
(o1,o2,....,oT)
设A是对应的状态转移矩阵:
A
=
[
a
i
j
]
N
×
N
A=[a_{ij}]_{N\times N}
A=[aij]N×N
其中,
a
i
j
=
P
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
,
i
=
1
,
.
.
.
,
N
,
j
=
1
,
.
.
.
,
N
a_{ij}=P(i_{t+1}=q_j|i_t=q_i),i=1,...,N,j=1,...,N
aij=P(it+1=qj∣it=qi),i=1,...,N,j=1,...,N
a
i
j
表
示
t
时
刻
状
态
q
i
转
到
t
+
1
时
刻
转
态
q
j
的
状
态
转
移
概
率
。
在
设
B
是
观
测
概
率
矩
阵
:
a_{ij}表示t时刻状态q_i转到t+1时刻转态q_j的状态转移概率。在设B是观测概率矩阵:
aij表示t时刻状态qi转到t+1时刻转态qj的状态转移概率。在设B是观测概率矩阵:
B
=
[
B
j
(
k
)
]
N
×
N
B=[B_j(k)]_{N\times N}
B=[Bj(k)]N×N
其中,
b
j
(
k
)
=
P
(
o
t
=
v
k
∣
i
t
=
q
j
)
,
k
=
1
,
.
.
.
,
M
,
j
=
1
,
.
.
.
,
N
b_j(k)=P(o_t=v_k|i_t=q_j),k=1,...,M,j=1,...,N
bj(k)=P(ot=vk∣it=qj),k=1,...,M,j=1,...,N
b
j
(
k
)
表
示
t
时
刻
状
态
q
j
的
条
件
下
生
成
观
测
v
k
的
概
率
。
在
设
π
是
初
始
状
态
概
率
向
量
:
b_j(k)表示t时刻状态q_j的条件下生成观测v_k的概率。在设π是初始状态概率向量:
bj(k)表示t时刻状态qj的条件下生成观测vk的概率。在设π是初始状态概率向量:
π
=
(
π
i
)
π=(π_i)
π=(πi)
其中,
π
i
=
P
(
i
l
=
q
i
)
,
i
=
1
,
.
.
.
,
N
π_i=P(i_l=q_i),i=1,...,N
πi=P(il=qi),i=1,...,N
π
i
表
示
初
始
时
刻
状
态
为
q
j
的
概
率
。
其
中
初
始
状
态
概
率
向
量
π
和
状
态
转
移
概
率
矩
阵
A
决
定
状
态
序
列
,
观
测
概
率
矩
阵
B
决
定
观
测
列
,
称
其
为
隐
马
尔
科
夫
模
型
3
要
素
。
因
此
马
尔
科
夫
模
型
空
三
元
符
号
:
π_i表示初始时刻状态为q_j的概率。其中初始状态概率向量π和状态转移概率矩阵A决定状态序列,观测概率矩阵B决定观测列,称其为隐马尔科夫模型3要素。因此马尔科夫模型空三元符号:
πi表示初始时刻状态为qj的概率。其中初始状态概率向量π和状态转移概率矩阵A决定状态序列,观测概率矩阵B决定观测列,称其为隐马尔科夫模型3要素。因此马尔科夫模型空三元符号:
λ
=
(
A
,
B
,
π
)
λ=(A,B,π)
λ=(A,B,π)
从定义知,隐马尔科夫模型做了两个假设:
- 其次马尔科夫假设 , 即隐藏的马尔科夫链在任意时刻的状态只与前一时刻的状态有关。
- 观测独立性假设。 即任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测即状态无关。
2.隐马尔科夫模型—卡尔曼滤波的应用
首先理解一下卡尔曼滤波:假设你有两个传感器,测的同一个信号。可是它们每次的读书都不太一样,怎么办?------取平均。
再假设你知道其中贵的那个传感器应该准一些,便宜的那个应该差一些。那有比取平均更好的办法吗?-----加权平均。
怎么加权?----假设两个传感器的误差都符合正态分布,假设你知道这两个正态分布的方差,用这两个方差值,你可以得到一个最优的权重。
接下来,重点:假设你只有一个传感器,但是你还有一个数学模型。模型可以帮你算出一个值,但也不准怎么办?
-----把模型算出来的值,和传感器测出的值,取加权平均。
最后,你的模型其实只是一个步长的,也就是说,知道x(k),我可以求x(k+1)。问题是x(k)是多少呢?-----x(k)就是你上一步卡尔曼滤波得到的、所谓加权平均之后的那个、对x在k时刻的最佳估计值。于是可以迭代了。
这就是卡尔曼滤波。