咸鱼了一个多月,黑色五月过得异常难受,找实习好烦,心态一直调整不好。
然后。。突然就想起了隐马尔可夫,我每天的心理状态是别人无法观测到的,每一天的状态组在一起就是一个状态序列,而我的行为活动是其他人可见的,每一天的行为组合在一起就是观测序列,当知道我月初的各种状态的概率分布,也知道了我这个人每种状态转移的概率分布和在某种状态下做出某种行为活动的概率分布时,是不是就能通过我这一个月每天的行为活动组成的序列来判断我每天的状态呢。emmm,隐马尔可夫带你成为一个能看懂人心的“神棍”。
基本假设
首先为了计算简单,要提出两点假设:
第一、齐次马尔可夫性假设
假设隐藏的马尔可夫链在任意时刻
t
t
的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻
t
t
无关。
即
t=1,2,...,T
t
=
1
,
2
,
.
.
.
,
T
第二、观测独立性假设
假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关。
即
P(ot|iT,oT,iT−1,oT−1,...,it,ot,...,i1,o1)=P(ot|it)
P
(
o
t
|
i
T
,
o
T
,
i
T
−
1
,
o
T
−
1
,
.
.
.
,
i
t
,
o
t
,
.
.
.
,
i
1
,
o
1
)
=
P
(
o
t
|
i
t
)
这两个假设一个是状态转移的关系,另一个是状态生成观测的关系。
模型参数(A,B,π)
隐马尔可夫模型是一个关于时序的概率模型,它由初始状态概率向量 π π ,状态转移概率矩阵和观测概率分布 B B 来确定。模型用表示, λ=(A,B,π) λ = ( A , B , π ) 可以用来预测给定的观测序列对应的状态序列。
状态
用
it
i
t
表示
t
t
时刻的状态,是第一天的状态(也就是初始状态)。
用
q
q
表示所有可能的状态,集合表示为,
N
N
即有种状态。
P(it=qj)
P
(
i
t
=
q
j
)
表示第
t
t
天(时刻)的状态是
qj
q
j
的概率,
j
j
取
比如花丸的所有可能状态包括{烦躁,消极,平静,积极}
比
如
花
丸
的
所
有
可
能
状
态
包
括
{
烦
躁
,
消
极
,
平
静
,
积
极
}
观测
用
ot
o
t
表示
t
t
时刻的观测(行为活动)。
用表示所有可能的观测(行为活动),集合表示为
V={v1,v2,...,vM}
V
=
{
v
1
,
v
2
,
.
.
.
,
v
M
}
,
M
M
即有种观测。
P(ot=vs|it=qj)
P
(
o
t
=
v
s
|
i
t
=
q
j
)
表示在第
t
t
天(时刻)状态是
qj
q
j
的条件下,第
t
t
天(时刻)观测到的活动是
vs
v
s
的概率,
s
s
取
比如花丸的所有可能活动包括{玩游戏,写博客,看书,看电影,无所事事}
比
如
花
丸
的
所
有
可
能
活
动
包
括
{
玩
游
戏
,
写
博
客
,
看
书
,
看
电
影
,
无
所
事
事
}
状态转移概率矩阵 A A :
,即一个
N×N
N
×
N
的矩阵,
N
N
即有种状态。
其中
ajk=P(it+1=qk|it=qj)
a
j
k
=
P
(
i
t
+
1
=
q
k
|
i
t
=
q
j
)
,即在第
t
t
天(时刻)的状态是
qj
q
j
的条件下在第
t+1
t
+
1
天(
t+1
t
+
1
时刻)转移到状态
qk
q
k
的概率。
如下图的状态转移
我们可以发现每一行之和为1,这是从某一状态转移为其他所有可能状态的概率之和。
观测概率矩阵 B B :
,即一个
N×M
N
×
M
的矩阵,
N
N
即有种状态,
M
M
即有种观测。
其中
bj(s)=P(ot=vs|it=qj)
b
j
(
s
)
=
P
(
o
t
=
v
s
|
i
t
=
q
j
)
,即在第
t
t
天(时刻)处于状态
qj
q
j
的条件下生成观测
vs
v
s
的概率。
如下图状态生成观测,每种状态生成所有观测的概率之和为1(用同色的线表示在同一行)
初始状态概率向量 π π :
,
πi=P(i1=qj)
π
i
=
P
(
i
1
=
q
j
)
,
i1
i
1
表示初始状态。
初始状态分布:π1=P(i1=烦躁)=0.6,π2=P(i1=消极)=0.25
初
始
状
态
分
布
:
π
1
=
P
(
i
1
=
烦
躁
)
=
0.6
,
π
2
=
P
(
i
1
=
消
极
)
=
0.25
π3=P(i1=平静)=0.1,π4=P(i1=积极)=0.05
π
3
=
P
(
i
1
=
平
静
)
=
0.1
,
π
4
=
P
(
i
1
=
积
极
)
=
0.05
因此π=(0.6,0.25,0.1,0.05)
因
此
π
=
(
0.6
,
0.25
,
0.1
,
0.05
)
有了隐马尔可夫模型λ=(π,A,B)我们也可以生成一个观测序列。
有
了
隐
马
尔
可
夫
模
型
λ
=
(
π
,
A
,
B
)
我
们
也
可
以
生
成
一
个
观
测
序
列
。
输入是隐马尔可夫模型λ=(π,A,B)和观测序列的长度T,输出是
输
入
是
隐
马
尔
可
夫
模
型
λ
=
(
π
,
A
,
B
)
和
观
测
序
列
的
长
度
T
,
输
出
是
观测序列O=(o1,o2,...,oT)
观
测
序
列
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
三个基本问题
①概率计算问题
给定模型
λ=(π,A,B)
λ
=
(
π
,
A
,
B
)
和观测序列
O=(o1,o2,...,oT)
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
,计算在模型
λ
λ
条件下观测序列出现的概率
P(O|λ)
P
(
O
|
λ
)
。
前向−反向算法
前
向
−
反
向
算
法
②学习问题(训练问题)
已知观测序列
O=(o1,o2,...,oT)
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
,去估计模型
λ=(π,A,B)
λ
=
(
π
,
A
,
B
)
的参数,使得在该模型条件下,观测序列概率
P(O|λ)
P
(
O
|
λ
)
最大。
鲍姆−韦尔奇算法(EM过程)
鲍
姆
−
韦
尔
奇
算
法
(
E
M
过
程
)
③预测问题(解码问题)
已知模型
λ=(π,A,B)
λ
=
(
π
,
A
,
B
)
和观测序列
O=(o1,o2,...,oT)
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
,求给定观测序列条件下概率
P(I|O)
P
(
I
|
O
)
最大的状态序列
I=(i1,i2,...,iT)
I
=
(
i
1
,
i
2
,
.
.
.
,
i
T
)
。
维特比算法
维
特
比
算
法