文章目录
0. 概率图模型家族族谱
与族谱中几个模型的关系:
- 生成模型,主要是为了计算 P ( X , Y ) P(X,Y) P(X,Y)
- 判别模型,主要是为了计算
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)
1. 条件随机场的定义与形式
有了马尔可夫随机场的基本知识后,来看一看它的一种典型代表:条件随机场(CRF)。
1.1 定义
首先看三种链式模型:
在上图中,设
X
X
X与
Y
Y
Y是随机变量,其中
X
X
X是观测变量,
Y
Y
Y是目标变量(标记序列/状态序列)
其中:
(c)是我们之前提到的HMM模型。
(a)是今天的主角——CRF.中的X与Y有相同图结构的线性链条件随机场
(b)是(a)类型CRF的一个变种,也是一种条件随机场。
1.1.1 CRF随机场的定义:
设
X
\boldsymbol{X}
X和
Y
\boldsymbol{Y}
Y是随机变量,其中
P
(
Y
∣
X
)
P(\boldsymbol{Y|X})
P(Y∣X)是在给定
X
\boldsymbol{X}
X的条件下
Y
\boldsymbol{Y}
Y的分布,如果
Y
\boldsymbol{Y}
Y构成了一个马尔可夫随机场,即:
(1.1)
P
(
Y
v
∣
X
,
Y
w
,
w
≠
v
)
=
P
(
Y
v
∣
X
,
Y
w
,
w
∼
v
)
\begin{aligned} P(\boldsymbol{Y}_v|\boldsymbol{X},\boldsymbol{Y}_w,w \neq v)=P(\boldsymbol{Y}_v|\boldsymbol{X},\boldsymbol{Y}_w,w \sim v) \tag{1.1} \end{aligned}
P(Yv∣X,Yw,w̸=v)=P(Yv∣X,Yw,w∼v)(1.1)
1.1.2 线性链CRF的定义
1.1.2.1 第一种线性链CRF的定义
根据马尔可夫随机场-基本概念中的因子、MRF的概念,X与Y有相同图结构的线性链条件随机场的线性链条件随机场可以看作是:
1.1.2.2 线性链CRF的表达方式
1. 因子表示法
(1.2) P ( Y ∣ X ) = 1 Z ( X ) P ~ ( Y ∣ X ) P ~ ( Y ∣ X ) = ∏ t = 2 T ϕ ( y t − 1 , y t , x t ) Z ( X ) = ∑ Y P ~ ( Y ∣ X ) \begin{aligned} P(\boldsymbol{Y}|\boldsymbol{X})=&\frac{1}{Z(\boldsymbol{X})}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})\\ \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})=&\prod_{t=2}^{T}\phi(y_{t-1},y_t,x_t)\\ Z(\boldsymbol{X})=&\sum_{\boldsymbol{Y}}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) \tag{1.2} \end{aligned} P(Y∣X)=P (Y∣X)=Z(X)=Z(X)1P (Y∣X)t=2∏Tϕ(yt−1,yt,xt)Y∑P (Y∣X)(1.2)
2. 参数化形式
首先要明确俩个概念:
- 在这里,由于涉及到状态变量与观测变量,我们把因子定义为:
(1.3) ϕ ( Y t − 1 , Y t , X t ) = ϕ 1 ( Y t − 1 , Y t , X t ) ∗ ϕ 2 i ( Y t , X t ) \phi(Y_{t-1},Y_t,X_t)=\phi_1(Y_{t-1},Y_t,X_t)*\phi_2i(Y_t,X_t) \tag{1.3} ϕ(Yt−1,Yt,Xt)=ϕ1(Yt−1,Yt,Xt)∗ϕ2i(Yt,Xt)(1.3)
其中, ϕ 1 ( Y t − 1 , Y t , X t ) \phi_1(Y_{t-1},Y_t,X_t) ϕ1(Yt−1,Yt,Xt)表示转移的操作,相当于图中的边, ϕ 2 ( Y t , X t ) \phi_2(Y_t,X_t) ϕ2(Yt,Xt)表示状态的操作,相当于图中的点。 - 在马尔可夫随机场-基本概念中提到了一种很牛逼的表示法:对数表示法。
综上,我们把
P
~
(
Y
∣
X
)
\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})
P
(Y∣X)写成以下形式:
(1.4)
P
~
(
Y
∣
X
)
=
exp
(
∑
i
k
λ
i
k
f
i
−
1
,
i
i
k
(
y
i
−
1
,
y
i
,
x
)
+
∑
i
l
μ
l
f
i
−
1
,
i
i
l
(
y
i
,
x
)
)
\begin{aligned} \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) =&\exp(\sum_{ik}\lambda_{ik}f^{ik}_{i-1,i}(y_{i-1},y_i,x)+\sum_{il}\mu_lf^{il}_{i-1,i}(y_i,x))\\ \tag{1.4} \end{aligned}
P
(Y∣X)=exp(ik∑λikfi−1,iik(yi−1,yi,x)+il∑μlfi−1,iil(yi,x))(1.4)
注:李航老师的《统计学习方法中》把特征函数定义成了以下形式,其实意思是一样的。
- t k t_k tk为转移特征,对应 f i − 1 , i i k ( y i − 1 , y i , x ) f^{ik}_{i-1,i}(y_{i-1},y_i,x) fi−1,iik(yi−1,yi,x)。取值为0或1,依赖于前一时刻、当前时刻、输入变量。
- s l s_l sl为状态特征,对应 f i − 1 , i i l ( y i , x ) f^{il}_{i-1,i}(y_i,x) fi−1,iil(yi,x)。取值为0或1,依赖于当前时刻、输入变量。
- λ k \lambda_k λk是 t k t_k tk的权值。
- μ l \mu_l μl是 s l s_l sl的权值。
设
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)为线性链条件随机场,则在随机变量
X
X
X取值为
x
x
x的条件下,随机变量Y取值为
y
y
y的条件概率具有如下形式:
(1.5)
P
(
Y
∣
X
)
=
1
Z
(
X
)
P
~
(
Y
∣
X
)
P
~
(
Y
∣
X
)
=
exp
(
∑
i
k
λ
k
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
i
l
μ
l
s
l
(
y
i
,
x
,
i
)
)
Z
(
X
)
=
∑
Y
P
~
(
Y
∣
X
)
\begin{aligned} P(\boldsymbol{Y}|\boldsymbol{X})=&\frac{1}{Z(\boldsymbol{X})}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})\\ \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) =&\exp(\sum_{ik}\lambda_{k}t_k(y_{i-1},y_i,x,i)+\sum_{il}\mu_ls_l(y_i,x,i))\\ Z(\boldsymbol{X})=&\sum_{\boldsymbol{Y}}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) \tag{1.5} \end{aligned}
P(Y∣X)=P
(Y∣X)=Z(X)=Z(X)1P
(Y∣X)exp(ik∑λktk(yi−1,yi,x,i)+il∑μlsl(yi,x,i))Y∑P
(Y∣X)(1.5)
式中, t k t_k tk和 s l s_l sl是特征函数, λ k \lambda_k λk和 μ l \mu_l μl是对应的权值, Z ( x ) Z(x) Z(x)是规范化因子,求和是在所有可能的输出序列上进行的。
举个栗子:
解:
i i i | Y i − 1 Y_{i-1} Yi−1 | Y i Y_{i} Yi | t t t | λ \lambda λ | s s s | μ \mu μ |
---|---|---|---|---|---|---|
1 | Y 1 = 1 Y_{1}=1 Y1=1 | 0 | s 1 s_1 s1 | 1 | ||
2 | Y 1 = 1 Y_{1}=1 Y1=1 | Y 2 = 2 Y_{2}=2 Y2=2 | t 1 t_1 t1 | 1 | s 2 s_2 s2 | 0.5 |
3 | Y 2 = 2 Y_{2}=2 Y2=2 | Y 3 = 2 Y_{3}=2 Y3=2 | t 5 t_5 t5 | 0.2 | s 4 s_4 s4 | 0.5 |
3. 简化形式
这种表示法没有什么难以理解的,通俗的说就是做了一个列表的拼接。
假设有
K
1
K_1
K1个转移特征,
K
2
K_2
K2个状态特征,总的特征记为
K
K
K,则有
K
=
K
1
+
K
2
K=K_1+K_2
K=K1+K2。
令
(1.6)
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
=
{
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
k
=
1
,
2
,
.
.
.
,
K
1
s
l
(
s
i
,
x
,
i
)
l
=
K
1
+
l
;
l
=
1
,
2
,
.
.
.
,
K
2
f_k(y_{i-1},y_i,x,i)= \left\{\begin{matrix} t_k(y_{i-1},y_i,x,i) & k=1,2,...,K_1 \\ s_l(s_i,x,i) & l=K_1+l; l=1,2,...,K_2 \end{matrix}\right. \tag{1.6}
fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i)sl(si,x,i)k=1,2,...,K1l=K1+l;l=1,2,...,K2(1.6)
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
f_k(y_{i-1},y_i,x,i)
fk(yi−1,yi,x,i)的理解:
state | f 1 ( y i − 1 , y i , x , i ) f_1(y_{i-1},y_i,x,i) f1(yi−1,yi,x,i) | … | f K 1 ( y i − 1 , y i , x , i ) f_{K_1}(y_{i-1},y_i,x,i) fK1(yi−1,yi,x,i) | f K 1 + 1 ( y i − 1 , y i , x , i ) f_{K_1+1}(y_{i-1},y_i,x,i) fK1+1(yi−1,yi,x,i) | … | f K ( y i − 1 , y i , x , i ) f_{K}(y_{i-1},y_i,x,i) fK(yi−1,yi,x,i) |
---|---|---|---|---|---|---|
t 1 ( y i − 1 , y i , x , i ) t_1(y_{i-1},y_i,x,i) t1(yi−1,yi,x,i) | … | t K 1 ( y i − 1 , y i , x , i ) t_{K_1}(y_{i-1},y_i,x,i) tK1(yi−1,yi,x,i) | s 1 ( y i , x , i ) s_1(y_i,x,i) s1(yi,x,i) | … | s l ( y i , x , i ) s_l(y_i,x,i) sl(yi,x,i) | |
i=1 | ||||||
i=2 | ||||||
… | ||||||
i=n |
所以,有
n
n
n个状态的线性链CRF可以表示为:
(1.7)
f
(
x
,
y
)
=
∑
i
=
1
n
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
,
k
=
1
,
2
,
.
.
.
,
K
\begin{aligned} f(x,y)=\sum_{i=1}^{n}f_k(y_{i-1},y_i,x,i) , k=1,2,...,K \tag{1.7} \end{aligned}
f(x,y)=i=1∑nfk(yi−1,yi,x,i),k=1,2,...,K(1.7)
同样的,将转移特征与状态特征的权重也做上述类似处理有:
(1.8)
w
k
=
{
λ
k
k
=
1
,
2
,
.
.
.
.
,
K
1
μ
l
l
=
K
1
+
l
;
l
=
1
,
2
,
.
.
.
,
K
2
w_k= \left\{\begin{matrix} \lambda_k & k=1,2,....,K_1\\ \mu_l & l=K_1+l; l=1,2,...,K_2 \end{matrix}\right. \tag{1.8}
wk={λkμlk=1,2,....,K1l=K1+l;l=1,2,...,K2(1.8)
w
k
w_k
wk的理解:
w 1 w_1 w1 | … | w k w_k wk | w k + 1 w_{k+1} wk+1 | … | w K w_K wK |
---|---|---|---|---|---|
λ 1 \lambda_1 λ1 | … | λ K 1 \lambda_{K_1} λK1 | μ 1 \mu_1 μ1 | … | μ l \mu_l μl |
综上所述:
(1.9)
P
(
Y
∣
X
)
=
1
Z
(
X
)
P
~
(
Y
∣
X
)
P
~
(
Y
∣
X
)
=
exp
(
∑
k
=
1
K
w
k
f
k
(
y
,
x
)
)
Z
(
X
)
=
∑
Y
P
~
(
Y
∣
X
)
\begin{aligned} P(\boldsymbol{Y}|\boldsymbol{X})=&\frac{1}{Z(\boldsymbol{X})}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})\\ \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})=&\exp(\sum_{k=1}^Kw_kf_k(y,x))\\ Z(\boldsymbol{X})=&\sum_{\boldsymbol{Y}}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) \tag{1.9} \end{aligned}
P(Y∣X)=P
(Y∣X)=Z(X)=Z(X)1P
(Y∣X)exp(k=1∑Kwkfk(y,x))Y∑P
(Y∣X)(1.9)
公式(1.8)中,
w
w
w表示权值向量:
w
=
(
w
1
,
w
2
,
.
.
.
,
w
K
)
T
\boldsymbol{w}=(w_1,w_2,...,w_K)^T
w=(w1,w2,...,wK)T
公式(1.8)中,
F
(
y
,
x
)
F(y,x)
F(y,x)表示全局特征向量:
F
(
y
,
x
)
=
(
f
1
(
y
,
x
)
,
f
x
(
y
,
x
)
,
.
.
,
f
k
(
y
,
x
)
)
T
\boldsymbol{F}(y,x)=(f_1(y,x),f_x(y,x),..,f_k(y,x))^T
F(y,x)=(f1(y,x),fx(y,x),..,fk(y,x))T
所以,条件随机场写成
w
\boldsymbol{w}
w和
F
(
y
,
x
)
\boldsymbol{F}(y,x)
F(y,x)的內积的形式有:
(1.10)
P
w
(
Y
∣
X
)
=
1
Z
(
X
)
P
~
(
Y
∣
X
)
P
~
(
Y
∣
X
)
=
exp
(
w
F
(
y
,
x
)
)
Z
(
X
)
=
∑
Y
P
~
(
Y
∣
X
)
\begin{aligned} P_w(\boldsymbol{Y}|\boldsymbol{X})=&\frac{1}{Z(\boldsymbol{X})}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})\\ \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})=&\exp(\boldsymbol{w}\boldsymbol{F}(y,x))\\ Z(\boldsymbol{X})=&\sum_{\boldsymbol{Y}}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) \tag{1.10} \end{aligned}
Pw(Y∣X)=P
(Y∣X)=Z(X)=Z(X)1P
(Y∣X)exp(wF(y,x))Y∑P
(Y∣X)(1.10)
4. 矩阵形式
在理解矩阵形式之前,需要换一个角度去思考:
- 在简化形式中,把特征表达为向量的形式。
- 在矩阵形式中,把状态表达为矩阵的形式。
同样的,回到CRF的定义:
(1.5)
P
(
Y
∣
X
)
=
1
Z
(
X
)
P
~
(
Y
∣
X
)
P
~
(
Y
∣
X
)
=
exp
(
∑
i
k
λ
k
t
k
(
y
i
−
1
,
y
i
,
x
,
i
)
+
∑
i
l
μ
l
s
l
(
y
i
,
x
,
i
)
)
Z
(
X
)
=
∑
Y
P
~
(
Y
∣
X
)
\begin{aligned} P(\boldsymbol{Y}|\boldsymbol{X})=&\frac{1}{Z(\boldsymbol{X})}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})\\ \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) =&\exp(\sum_{ik}\lambda_{k}t_k(y_{i-1},y_i,x,i)+\sum_{il}\mu_ls_l(y_i,x,i))\\ Z(\boldsymbol{X})=&\sum_{\boldsymbol{Y}}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) \tag{1.5} \end{aligned}
P(Y∣X)=P
(Y∣X)=Z(X)=Z(X)1P
(Y∣X)exp(ik∑λktk(yi−1,yi,x,i)+il∑μlsl(yi,x,i))Y∑P
(Y∣X)(1.5)
对于
P
~
(
Y
∣
X
)
\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})
P
(Y∣X)来说,如果从每个状态转移的角度去看,会发现存在这样一个问题,那就是开始状态和结束状态二者相对于中间状态都少了一个来源和去处。因此,引入特殊的起点和终点状态标记
y
0
=
s
t
a
r
t
y_0=start
y0=start,
y
1
=
s
t
o
p
y_1=stop
y1=stop。
那么,就可以列举出 n + 1 n+1 n+1个转移矩阵。其中,每个转移状态所“携带的概率” 应该为所有特征函数在该状态上所有取值的和,也就是转移矩阵,记为 W i ( y i − 1 , y i ∣ x ) W_i(y_{i-1},y_i|x) Wi(yi−1,yi∣x),其取对数的结果记为 M i M_i Mi。
(1.11)
W
i
(
y
i
−
1
,
y
i
∣
x
)
=
∑
k
=
1
K
w
k
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
W_i(y_{i-1},y_i|x)=\sum_{k=1}^Kw_kf_k(y_{i-1},y_i,x,i) \tag{1.11}
Wi(yi−1,yi∣x)=k=1∑Kwkfk(yi−1,yi,x,i)(1.11)
所以,另
M
i
(
y
i
−
1
,
y
i
∣
x
)
M_i(y_{i-1},y_i|x)
Mi(yi−1,yi∣x)为:
(1.12)
M
i
(
y
i
−
1
,
y
i
∣
x
)
=
exp
(
∑
k
=
1
K
w
k
f
k
(
y
i
−
1
,
y
i
,
x
,
i
)
)
M_i(y_{i-1},y_i|x)=\exp(\sum_{k=1}^Kw_kf_k(y_{i-1},y_i,x,i)) \tag{1.12}
Mi(yi−1,yi∣x)=exp(k=1∑Kwkfk(yi−1,yi,x,i))(1.12)
则矩阵
M
i
M_i
Mi为:
(1.13)
M
i
(
x
)
=
[
M
i
(
y
i
−
1
,
y
i
∣
x
)
]
M_i(x)=[M_i(y_{i-1},y_i|x)] \tag{1.13}
Mi(x)=[Mi(yi−1,yi∣x)](1.13)
于是有:
(1.5)
P
(
Y
∣
X
)
=
1
Z
(
X
)
P
~
(
Y
∣
X
)
P
~
(
Y
∣
X
)
=
∏
i
=
1
n
+
1
M
i
(
y
i
−
1
,
y
i
∣
x
)
Z
(
X
)
=
(
M
1
(
x
)
M
2
(
x
)
.
.
.
M
n
+
1
(
x
)
)
\begin{aligned} P(\boldsymbol{Y}|\boldsymbol{X})=&\frac{1}{Z(\boldsymbol{X})}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})\\ \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) =&\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x)\\ Z(\boldsymbol{X})=&(M_1(x)M_2(x)...M_{n+1}(x)) \tag{1.5} \end{aligned}
P(Y∣X)=P
(Y∣X)=Z(X)=Z(X)1P
(Y∣X)i=1∏n+1Mi(yi−1,yi∣x)(M1(x)M2(x)...Mn+1(x))(1.5)
举个栗子:
解答:
对于状态
i
1
,
i
2
,
i
3
i_1,i_2,i_3
i1,i2,i3,
y
1
,
y
2
,
y
3
y_1,y_2,y_3
y1,y2,y3的取值均可以为
1
,
2
1, 2
1,2。
记由状态 s t a r t start start到状态 i 1 i_1 i1中, y 1 = 1 , y 1 = 2 y_1=1, y_1=2 y1=1,y1=2的概率分别为 a 01 , a 02 a_{01},a_{02} a01,a02,以此类推,于是有:
解疑:为什么矩阵 M i M_i Mi的连乘为 Z ( X ) Z(\boldsymbol{X}) Z(X)?
矩阵 M i M_i Mi其实是各个状态转移概率所构成的矩阵,在矩阵的连乘过程中,实际上完成了对所有可能的输出序列上的求和操作。
这也是上述例题第1行第1列的元素为所有路径的非规范化概率之和的原因。
1.1.2.2 第二种线性链CRF的定义(X、Y具有相同结构)
拥有
T
−
1
T-1
T−1条
Y
t
−
Y
t
+
1
Y_t-Y_{t+1}
Yt−Yt+1条边和
T
T
T条
Y
t
−
X
t
Y_t-X_{t}
Yt−Xt的一个条件随机场,该网络的分布表示为:
P
(
Y
∣
X
)
=
1
Z
(
X
)
P
~
(
Y
∣
X
)
P
~
(
Y
∣
X
)
=
∏
t
=
1
T
−
1
ϕ
(
Y
t
,
Y
t
+
1
)
∏
t
=
1
T
ϕ
(
Y
t
,
X
t
)
Z
(
X
)
=
∑
Y
P
~
(
Y
∣
X
)
\begin{aligned} P(\boldsymbol{Y}|\boldsymbol{X})=&\frac{1}{Z(\boldsymbol{X})}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})\\ \widetilde{P}(\boldsymbol{Y}|\boldsymbol{X})=&\prod_{t=1}^{T-1}\phi(Y_t,Y_{t+1})\prod_{t=1}^{T}\phi(Y_t,X_t)\\ Z(\boldsymbol{X})=&\sum_{\boldsymbol{Y}}\widetilde{P}(\boldsymbol{Y}|\boldsymbol{X}) \end{aligned}
P(Y∣X)=P
(Y∣X)=Z(X)=Z(X)1P
(Y∣X)t=1∏T−1ϕ(Yt,Yt+1)t=1∏Tϕ(Yt,Xt)Y∑P
(Y∣X)
2. 参考文献
- 【机器学习】【条件随机场CRF-1】CRF的矩阵形式表示的示例讲解 + Python实现
- 《统计学习方法》
- 《西瓜书》