文章目录一览
马尔可夫模型
马尔可夫模型是用来描述状态之间随时间变化的模型。
随机过程:假设随机变量
X
X
X(可以是连续变量或离散变量)在时刻
t
t
t时的状态是
X
t
X_t
Xt,
X
X
X的取值范围是状态空间
S
S
S,时刻
t
=
1
,
2
,
…
t=1,2,\ldots
t=1,2,…。则随机变量
X
X
X构成的序列
{
X
1
,
X
2
,
…
,
X
n
}
\{X_1,X_2,\ldots,X_n\}
{X1,X2,…,Xn}则可以称为随机过程。我们可以使用概率的乘积来表示观测到的这个随机过程的联合概率分布:
p
(
X
1
,
X
2
,
…
,
X
n
)
=
p
(
X
1
)
∏
i
=
2
n
p
(
X
i
∣
X
1
,
…
,
X
i
−
1
)
p(X_1,X_2,\ldots,X_n)=p(X_1)\prod_{i = 2}^{n}p(X_i|X_{1},\ldots,X_{i-1})
p(X1,X2,…,Xn)=p(X1)i=2∏np(Xi∣X1,…,Xi−1)
从这个式子看起来,随机过程的概率描述非常的复杂,每个时刻的状态依赖于所有以前的状态,计算量会很大。所以我们可以尝试用先验假设对其进行简化,使得该联合概率分布更容易计算。
如果是条件独立性假设,也就是各个时刻的状态之间相互独立,则会得到:
p
(
X
1
,
X
2
,
…
,
X
n
)
=
p
(
X
1
)
p
(
X
2
)
…
p
(
X
n
)
p(X_1,X_2,\ldots,X_n)=p(X_1)p(X_2)\ldots p(X_n)
p(X1,X2,…,Xn)=p(X1)p(X2)…p(Xn)
如果是齐次马尔可夫假设,也就是每个时刻的状态只会依赖于上一个时刻的状态,则会得到:
p
(
X
t
+
1
∣
X
t
,
…
,
X
0
)
=
p
(
X
t
+
1
∣
X
t
)
p(X_{t+1}|X_t,\ldots,X_0)=p(X_{t+1}|X_t)
p(Xt+1∣Xt,…,X0)=p(Xt+1∣Xt)。
这就得到了一阶马尔可夫链,类似,如果每个时刻的状态只会依赖前n个时刻的状态,则会得到n阶马尔可夫链。
一阶马尔可夫链可以用
S
S
S和
A
A
A来描述,其中
S
S
S是状态空间,
A
A
A是状态转移概率矩阵,设初始状态是
π
\pi
π,经过n次状态转移后,到达各个状态的概率为
π
A
n
\pi A^n
πAn,随着时间的推移,最终马尔可夫链会收敛到一个稳定概率分布,且这个稳定概率分布和初始状态无关。
下面将介绍两种经典的概率图模型——HMM和CRF。HMM,全称隐马尔科夫模型,是动态贝叶斯网络的分支,是有向图;CRF,全称马尔科夫随机场,是马尔科夫网络的分支,是无向图。如果想了解概率图,建议先去看看贝叶斯网络(有向图)以及马尔科夫网络(无向图)这两种概率图的基础介绍,这里仅介绍这两个常用的模型,后续有时间会继续补充。
介绍两个概率图模型后,再对两者进行对比。
HMM
从隐马尔可夫的名字可以看出,该模型中存在某种隐藏的组件。
具体地说,HMM是一个关于时序的概率模型,包括一个隐藏的马尔可夫链随机生成的不可观测的状态随机序列,以及一个由状态生成观测的过程。最终会形成一个状态序列和观测序列。该模型属于典型的生成模型。
什么时候可能会用到HMM
这个问题在参考文献[4]中给出了解释:当需要建模的对象是序列时,比如一段文字、一段时间序列等等;且当该建模问题中存在两种变量:一种可以观测到,一种不可以观测到。
就以输出法为例,我们心里面想的话就是一段隐藏序列,具体的说应该是隐藏的状态序列,而具体的打印在文档中的一系列字符就是观测序列。每个时刻的观测值(每个时刻用输入法打出的字)的产生以当前时刻遍历到的内心隐藏序列的当前字符为依据。
相关定义
- 所有状态值可能的取值构成的集合: Q = { q 1 , q 2 , … , q N } Q=\{q_1,q_2,\ldots,q_N\} Q={q1,q2,…,qN};
- 所有观测值可能的取值构成的集合: V = { v 1 , v 2 , … , v M } V=\{v_1,v_2,\ldots,v_M\} V={v1,v2,…,vM};
- 长度为 T T T的状态序列: I = { i 1 , i 2 , … , i T } I=\{i_1,i_2,\ldots,i_T\} I={i1,i2,…,iT};
- I I I对应的长度为 T T T的观测序列: O = { o 1 , o 2 , … , o T } O=\{o_1,o_2,\ldots,o_T\} O={o1,o2,…,oT};
- 状态转移概率矩阵: 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 ) a_{ij}=P(i_{t+1}=q_j|i_{t}=q_i) aij=P(it+1=qj∣it=qi),也就是从状态 q i q_i qi转移到 q j q_j qj的概率,这个概率不会随时间而变化。
- 观测概率矩阵: B = [ b j ( k ) ] N × M B=[b_{j}(k)]_{N\times M} B=[bj(k)]N×M,其中 b j ( k ) = P ( o t = v k ∣ i t = q j ) b_{j}(k)=P(o_t=v_k|i_t=q_j) bj(k)=P(ot=vk∣it=qj),也就从状态 q j q_j qj生成观测 v k v_k vk的概率,这个概率也不会随时间而变化。
- 初始状态概率向量: π = ( π 1 , π 2 , … , π N ) \pi=(\pi_1,\pi_2,\ldots,\pi_N) π=(π1,π2,…,πN),其中 π i \pi_i πi表示初始时状态为 q i q_i qi的概率,即 π i = P ( i 1 = q i ) \pi_i=P(i_1=q_i) πi=P(i1=qi)。
隐马尔可夫模型由初始状态向量
π
\pi
π、状态转移概率矩阵
A
A
A和观测概率矩阵
B
B
B构成,可以表示成:
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)
由前面的叙述可知,整个模型包含两个过程:一是生成隐藏状态序列,二是根据隐藏状态生成当前时刻的观测值。这两个过程都可以看成是随机过程,在没有其他任何假设的前提下,
t
t
t时刻的隐藏状态将依赖于在
t
t
t时刻之前的所有时刻的隐藏状态和观测值,
t
t
t时刻的观测值将依赖于所有其他时刻的隐藏状态和观测值以及
t
t
t时刻的隐藏状态。说起来又多又复杂……因而为了简化,HMM实际上做了两种假设:
- 齐次马尔可夫假设:也就是隐藏状态序列是一阶马尔可夫链。
P ( i t ∣ i t − 1 , o t − 1 , … , i 1 , o 1 ) = P ( i t ∣ i t − 1 ) , t = 1 , 2 , … , T P(i_t|i_{t-1},o_{t-1},\ldots,i_1,o_1)=P(i_t|i_{t-1}),\, t=1,2,\ldots,T P(it∣it−1,ot−1,…,i1,o1)=P(it∣it−1),t=1,2,…,T - 观测独立性假设:当前时刻的观测值只依赖于当前时刻的隐藏状态。
P ( o t ∣ i T , o T , … , i t + 1 , o t + 1 , i t , i t − 1 , o t − 1 , … , i 1 , o 1 ) = P ( o t ∣ i t ) P(o_t|i_{T},o_{T},\ldots,i_{t+1},o_{t+1},i_{t},i_{t-1},o_{t-1},\ldots,i_1,o_1)=P(o_t|i_{t}) P(ot∣iT,oT,…,it+1,ot+1,it,it−1,ot−1,…,i1,o1)=P(ot∣it)
举例
李航的统计学习方法中提供了一个方便理解的例子:盒子和球模型。这里简要的讲一下,如果不想看可以直接跳过。
上面是提供的已知信息和抽球规则。
假设观测了5次,那么将会产生长度为5的隐藏状态序列和观测序列,其中隐藏状态序列就是我们看不到的盒子序列,而观测序列就是我们看到的球的颜色序列。
现在我们可以把这一整个问题用HMM来抽象描述:
- 所有状态值可能的取值构成的集合: Q = { 盒 子 1 , 盒 子 2 , 盒 子 3 , 盒 子 4 } Q=\{盒子1,盒子2,盒子3,盒子4\} Q={盒子1,盒子2,盒子3,盒子4};
- 所有观测值可能的取值构成的集合: V = { 红 , 白 } V=\{红,白\} V={红,白};
- 长度为 T T T的状态序列: I = { i 1 , i 2 , … , i T } I=\{i_1,i_2,\ldots,i_T\} I={i1,i2,…,iT};
- I I I对应的长度为 T T T的观测序列: O = { o 1 , o 2 , … , o T } O=\{o_1,o_2,\ldots,o_T\} O={o1,o2,…,oT};
- 状态转移概率矩阵: 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 ) a_{ij}=P(i_{t+1}=q_j|i_{t}=q_i) aij=P(it+1=qj∣it=qi),也就是从状态 q i q_i qi转移到 q j q_j qj的概率,这个概率不会随时间而变化,这里 A = [ 0 1 0 0 0.4 0 0.6 0 0 0.4 0 0.6 0 0 0.5 0.5 ] A=\left[\begin{array}{cccc} 0 & 1 & 0 & 0 \\ 0.4 & 0 & 0.6 & 0 \\ 0 & 0.4 & 0 & 0.6 \\ 0 & 0 & 0.5 & 0.5 \end{array}\right] A=⎣⎢⎢⎡00.400100.4000.600.5000.60.5⎦⎥⎥⎤。
- 观测概率矩阵: B = [ b j ( k ) ] N × M B=[b_{j}(k)]_{N\times M} B=[bj(k)]N×M,其中 b j ( k ) = P ( o t = v k ∣ i t = q j ) b_{j}(k)=P(o_t=v_k|i_t=q_j) bj(k)=P(ot=vk∣it=qj),也就从状态 q j q_j qj生成观测 v k v_k vk的概率,这个概率也不会随时间而变化,这里 B = [ 0.5 0.5 0.3 0.7 0.6 0.4 0.8 0.2 ] B=\left[\begin{array}{cc} 0.5 & 0.5 \\ 0.3 & 0.7\\ 0.6 & 0.4\\ 0.8 & 0.2 \end{array}\right] B=⎣⎢⎢⎡0.50.30.60.80.50.70.40.2⎦⎥⎥⎤。
- 初始状态概率向量: π = ( 0.25 , 0.25 , 0.25 , . 25 ) \pi=(0.25,0.25,0.25,.25) π=(0.25,0.25,0.25,.25),因为题目说明了开始时等概率地随机从四个盒子中抽取一个。
这样,盒子与球的问题就直接被抽象成HMM问题啦。
观测序列的生成
给定一个HMM模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π),现在描述如何产生观测序列
O
=
(
o
1
,
o
2
,
…
,
o
T
)
O=(o_1,o_2,\ldots,o_T)
O=(o1,o2,…,oT)。从上面的分析就可以看出,过程很简单,所以直接放图:
为什么HMM是生成模型
HMM是对隐藏状态 P ( x ) P(x) P(x)进行建模,然后对 P ( y ∣ x ) P(y|x) P(y∣x)(给定隐藏状态下,观测值)进行建模,所以可以认为其拟合了 P ( x , y ) P(x,y) P(x,y),所以是生成模型。
HMM的3个基本问题
待更
MRF
马尔可夫随机场(Markov Random Field),又称概率无向图。
什么是随机场
参考文献[5],随机场是由若干个位置组成的整体,当给每一个位置按照某种分布随机赋予一个值后,其全体就叫随机场。
MRF是随机场的一个特例,它假设随机场中每一个位置的赋值仅仅和它相邻的位置的赋值有关,和其他不相邻的位置的赋值无关。
CRF(条件随机场)是给定随机变量
X
X
X的条件下,随机变量
Y
Y
Y的马尔科夫随机场。
主要是本人在初学时对这几个概念有点糊涂,所以这里将这几个概念放在一起比较。
概率无向图(MRF)表示的随机变量之间存在的三个性质
- 局部马尔可夫性:设无向图
G
G
G,
v
v
v是该图中的任意一个节点,其表示的随机变量为
Y
v
Y_v
Yv,
W
W
W是与
v
v
v有边连接的所有节点,
O
O
O是
v
v
v、
W
W
W之外的其他节点。
P ( Y v ∣ Y W ) = P ( Y v ∣ Y W , Y O ) P(Y_v|Y_W)=P(Y_v|Y_W,Y_O) P(Yv∣YW)=P(Yv∣YW,YO)可以理解成,节点只会依赖与其相邻的节点。 - 成对马尔可夫性:设
u
u
u与
v
v
v没有边相连,
O
O
O是除去
u
、
v
u、v
u、v以外的其他节点构成的节点集。
P ( Y u , Y v ∣ Y O ) = P ( Y u ∣ Y O ) P ( Y v ∣ Y O ) P(Y_u,Y_v|Y_O)=P(Y_u|Y_O)P(Y_v|Y_O) P(Yu,Yv∣YO)=P(Yu∣YO)P(Yv∣YO)可以理解成,当两个节点之间没有边时,在给定了其他所有节点的条件下,这两个节点之间是独立的。 - 全局马尔可夫性:设集合
A
A
A、
B
B
B被集合
C
C
C分开,即这两个集合之间的所有可能的路径都会经过C,那么:
P ( Y A , Y B ∣ Y C ) = P ( Y A ∣ Y C ) P ( Y B ∣ Y C ) P(Y_A,Y_B|Y_C)=P(Y_A|Y_C)P(Y_B|Y_C) P(YA,YB∣YC)=P(YA∣YC)P(YB∣YC)也就是说,给定一个集合C,如果有两个集合可以由该集合完全阻塞,那么这两个集合关于C是条件独立的。
概率无向图(MFC)的因子分解
这里将会介绍一个团的概念,《统计学习方法》中给出定义:一个无向图G中任何两个节点均有边连接的节点子集称为团。也就是说团是一个无向图的子图,该子图是一个完全图。因而最大团的概念也非常清楚,在最大团的基础上,不能再新添加进任何节点(因为新加任何的节点都会使得该子图不再是团)。
因子分解将整个概率无向图表示成若干个联合概率的乘积形式,具体地,是将MFC的随机变量的联合概率分布表示成MFC的最大团上的函数值的乘积形式。
设
C
C
C是图
G
G
G的最大团,
Y
C
Y_C
YC是
C
C
C中所有节点对应的随机变量,
ψ
C
\psi_C
ψC是团上的函数,这里定义:
P
(
Y
)
=
1
Z
∏
C
ψ
C
(
Y
C
)
P(Y)=\frac{1}{{Z}}\prod_C\psi_C(Y_C)
P(Y)=Z1C∏ψC(YC)其中
Z
Z
Z是规范化因子,
Z
=
∑
Y
∏
C
ψ
C
(
Y
C
)
Z=\sum_Y\prod_C\psi_C(Y_C)
Z=∑Y∏CψC(YC),其中
ψ
(
⋅
)
\psi(·)
ψ(⋅)称为势函数,常见形式为指数函数:
ψ
c
(
Y
c
)
=
e
x
p
{
−
E
(
Y
c
)
}
\psi_c(Y_c)=exp\{-E(Y_c)\}
ψc(Yc)=exp{−E(Yc)}。
这里有一个疑问,感觉这个形式和Gibbs分布的形式好像啊……后来查了一下,这个因子分解好像就是Gibbs分布。
任何一个概率图无向图的联合概率分布都可以表示成因子分解的形式,即都可以表示成最大团们上面的势函数的乘积形式(这也叫Hammersley Clifford定理)。
CRF(条件随机场)
设
X
X
X与
Y
Y
Y是随机变量,
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)是给定
X
X
X时
Y
Y
Y的条件概率分布,若随机变量
Y
Y
Y构成的是一个马尔可夫随机场,则称条件概率分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)是条件随机场。回忆前面提到的马尔可夫随机场的定义(节点只依赖于其相连的节点),可以得到概率描述:
P
(
Y
v
∣
X
,
Y
w
,
w
≠
v
)
=
P
(
Y
v
∣
X
,
Y
w
,
w
∼
v
)
P(Y_v|X,Y_w,w\neq v)=P(Y_v|X,Y_w,w\sim v)
P(Yv∣X,Yw,w=v)=P(Yv∣X,Yw,w∼v)
w
∼
v
w\sim v
w∼v表示两个节点之间有边相连,这个数学描述可以解释成:在给定
X
X
X的条件下,
Y
Y
Y满足马尔可夫随机场。在CRF中,只会有两种变量:X和Y。
什么时候可能会用到CRF
仍然以句子为例,对于一个sentence,现在我要做的工作是对其进行词性标注,假设是"I am a student",虽然我的英语很渣,但还是会知道,及物动词后面一般跟名词,不及物动词后面一般跟介词,因而就有了相邻词性之间的依赖关系。单词便可以抽象成 X X X,其对应的词性可以抽象成 Y Y Y,那么整个问题便可以用CRF来建模。
线性链条件随机场(Linear-CRF)
线性链表示的两个随机序列
X
=
(
X
1
,
X
2
,
…
,
X
n
)
X=(X_1,X_2,\ldots,X_n)
X=(X1,X2,…,Xn)、
Y
=
(
Y
1
,
Y
2
,
…
,
Y
n
)
Y=(Y_1,Y_2,\ldots,Y_n)
Y=(Y1,Y2,…,Yn),且
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)构成条件随机场,则这个条件随机场又可以叫线性链条件随机场。
《统计学习方法》中给出了两个示例图:
用公式来表示,即:
P
(
Y
v
∣
X
,
Y
1
,
Y
2
,
…
,
Y
v
−
1
,
Y
v
+
1
,
Y
n
)
=
P
(
Y
v
∣
X
,
Y
v
−
1
,
Y
v
+
1
)
P(Y_v|X,Y_1,Y_2,\ldots,Y_{v-1},Y_{v+1},Y_n)=P(Y_v|X,Y_{v-1},Y_{v+1})
P(Yv∣X,Y1,Y2,…,Yv−1,Yv+1,Yn)=P(Yv∣X,Yv−1,Yv+1)
相关定义和参数化形式
本部分给出线性链条件随机场的参数形式。这一部分我一开始非常迷惑,接下来我会按照我本人能理解的顺序来介绍如何最终得到线性链条件随机场的参数形式。
由上一节的描述可知,linear-CRF中包含两个随机变量,
Y
v
Y_v
Yv依赖于其前后的两个节点
Y
v
−
1
Y_{v-1}
Yv−1和
Y
v
+
1
Y_{v+1}
Yv+1以及
X
X
X,由于
Y
Y
Y在
X
X
X的条件下是MRF,根据MRF的因子分解有:(不想弄等号对齐了,将就着看……)
P
(
Y
∣
X
)
=
1
Z
∏
c
ψ
c
(
Y
C
∣
X
)
=
1
Z
∏
c
e
x
p
(
∑
k
λ
k
f
k
(
Y
c
,
X
)
=
1
Z
∏
i
e
x
p
(
∑
k
λ
k
f
k
(
Y
i
−
1
,
Y
i
X
,
i
)
=
1
Z
e
x
p
(
∑
i
∑
k
λ
k
f
k
(
Y
i
−
1
,
Y
i
X
,
i
)
P(Y|X)=\frac{1}{Z}\prod_c \psi_c(Y_C|X)\\ =\frac{1}{Z}\prod_c exp(\sum_k\lambda_kf_k(Y_c,X)\\ =\frac{1}{Z}\prod_i exp(\sum_k\lambda_kf_k(Y_{i-1},Y_{i}X,i)\\ =\frac{1}{Z}exp(\sum_i\sum_k\lambda_kf_k(Y_{i-1},Y_{i}X,i)\\
P(Y∣X)=Z1c∏ψc(YC∣X)=Z1c∏exp(k∑λkfk(Yc,X)=Z1i∏exp(k∑λkfk(Yi−1,YiX,i)=Z1exp(i∑k∑λkfk(Yi−1,YiX,i)
说一下这些式子是怎么一步步推导的:
- 假设linear-CRF上有C个最大团,那么在 X X X的条件下, Y Y Y的概率分布可以表示成所有团上的势函数的乘积的形式;
- 然后定义一组特征函数,假设有 K K K个,第 k k k个势函数 f k f_k fk的权值为 λ k \lambda_k λk,用这 K K K个特征函数去表示势函数 ψ ( ⋅ ) \psi(·) ψ(⋅);
- 由于每个最大团仅由节点和节点邻居节点之一构成,因而 Y c Y_c Yc可直接写成节点的左节点和节点自身;
- 最后一步是将连乘号拿到指数里变成加号。
关于特征函数的设计:
这里定义了两种特征函数,分别为节点特征函数
s
l
s_l
sl和局部特征函数
t
k
t_k
tk,这两种函数相应的系数分别被表示为
λ
k
\lambda_k
λk和
μ
l
\mu_l
μl,将上式改写,可以得到书中对线性链条件随机场的参数形式:
简化形式
简化形式也很简单,节点特征函数
s
l
s_l
sl和局部特征函数
t
k
t_k
tk统计表示成
f
k
f_k
fk,权值统一表示成
w
k
w_k
wk,假设特征函数
f
k
f_k
fk提取第
k
k
k个特征,则
f
k
(
x
,
y
)
=
∑
i
(
f
(
y
i
,
y
i
+
1
,
x
)
)
f_k(x,y)=\sum_ i(f(y_i,y_{i+1},x))
fk(x,y)=∑i(f(yi,yi+1,x))。用
F
F
F表示
K
K
K个特征的集合,用
w
w
w表示所有特征的权值,简化形式可以表示成
矩阵形式
略。
CRF的3个基本问题
待更。
参考列表
1.https://www.cnblogs.com/gemstone/archive/2012/09/05/2671577.html
2.李航《统计学习方法》
3.https://zhuanlan.zhihu.com/p/33397147
4.https://zhuanlan.zhihu.com/p/29938926
5.https://zhuanlan.zhihu.com/p/259660645
6.https://zhuanlan.zhihu.com/p/29989121