一:回顾
从HMM(隐马尔科夫)模型到MEMM(最大熵马尔科夫)模型
HMM是生成式模型,也就是基于联合概率建模,其中参数有
λ
=
(
π
,
A
,
B
)
\lambda=(\pi,A,B)
λ=(π,A,B)
两种前提假设:
1:齐次马尔科夫假设
2:观测独立假设
建模对象:
P
(
X
,
Y
∣
λ
)
=
∏
t
p
(
x
t
,
y
t
∣
λ
)
P(X,Y|\lambda)=\prod_t p(x_t,y_t|\lambda)
P(X,Y∣λ)=∏tp(xt,yt∣λ)
=
∏
t
p
(
y
t
∣
y
t
−
1
,
λ
)
p
(
x
t
∣
y
t
,
λ
)
=\prod_t p(y_t|y_{t-1},\lambda)p(x_t|y_{t},\lambda)
=∏tp(yt∣yt−1,λ)p(xt∣yt,λ)
MEMM是判别式模型,打破了观测独立假设,显得更新合理,建模对象:
P
(
Y
∣
X
,
λ
)
=
∏
t
p
(
y
t
∣
y
t
−
1
,
x
1
−
>
t
,
λ
)
P(Y|X,\lambda)=\prod_t p(y_t|y_{t-1},x_{1->t},\lambda)
P(Y∣X,λ)=∏tp(yt∣yt−1,x1−>t,λ)
从MEMM到CRF
MEMM存在的问题:label bias problem(标记偏差问题)
CRF的优势:
1:解决了标记偏差问题
2:从有向变为无向
3:打破了齐次马尔科夫性
条件随机场定义:
二:条件随机场(CRF)概率密度函数的参数形式:
无向图的因子分解公式:
P
(
X
∣
Y
)
=
∏
i
t
1
Z
ψ
i
(
X
C
i
)
P(X|Y)=\displaystyle \prod_i^t \frac{1}{Z}\psi_i(X_{C_i})
P(X∣Y)=i∏tZ1ψi(XCi)
这里
Z
是
归
一
化
因
子
,
ψ
i
是
势
函
数
,
C
i
表
示
第
i
个
最
大
团
Z是归一化因子,\psi_i是势函数,C_i表示第i个最大团
Z是归一化因子,ψi是势函数,Ci表示第i个最大团
上式势函数通常取指数函数,展开有
P
(
X
∣
Y
)
=
∏
i
t
1
Z
e
x
p
[
−
E
i
(
X
C
i
)
]
P(X|Y)=\displaystyle \prod_i^t \frac{1}{Z}exp[-E_i(X_{C_i})]
P(X∣Y)=i∏tZ1exp[−Ei(XCi)]
上式中的
E
i
(
X
C
i
)
E_i(X_{C_i})
Ei(XCi)叫做能量函数,令
−
E
i
(
X
C
i
)
=
F
i
(
X
C
i
)
-E_i(X_{C_i})=F_i(X_{C_i})
−Ei(XCi)=Fi(XCi)
原式等于
P
(
X
∣
Y
)
=
∏
i
t
1
Z
e
x
p
[
F
i
(
X
C
i
)
]
P(X|Y)=\displaystyle \prod_i^t \frac{1}{Z}exp[F_i(X_{C_i})]
P(X∣Y)=i∏tZ1exp[Fi(XCi)]
=
1
Z
e
x
p
∑
i
t
F
i
(
X
C
i
)
=\displaystyle\frac{1}{Z}exp \sum_i^t F_i(X_{C_i})
=Z1expi∑tFi(XCi)
由于是线性链,所以
X
C
i
可
以
表
示
成
为
y
t
−
1
,
y
t
,
x
1..
T
X_{C_i}可以表示成为y_{t-1},y_t,x_{1..T}
XCi可以表示成为yt−1,yt,x1..T
=
1
Z
e
x
p
∑
i
t
F
i
(
y
t
−
1
,
y
t
,
x
1..
T
)
=\displaystyle\frac{1}{Z}exp \sum_i^t F_i(y_{t-1},y_t,x_{1..T})
=Z1expi∑tFi(yt−1,yt,x1..T)
又因为每个线性链结构都是一样的,所以只用一个
F
F
F函数即可
=
1
Z
e
x
p
∑
i
t
F
(
y
t
−
1
,
y
t
,
x
T
)
=\displaystyle\frac{1}{Z}exp \sum_i^t F(y_{t-1},y_t,x_T)
=Z1expi∑tF(yt−1,yt,xT)
对于线性链,可以把
F
函
数
表
示
为
三
个
函
数
,
关
于
y
t
−
1
的
函
数
,
关
于
y
t
的
函
数
,
关
于
边
(
y
t
−
1
,
y
t
)
的
函
数
F函数表示为三个函数,关于y_{t-1}的函数,关于y_t的函数,关于边(y_{t-1},y_t)的函数
F函数表示为三个函数,关于yt−1的函数,关于yt的函数,关于边(yt−1,yt)的函数
F
(
y
t
−
1
,
y
t
,
x
T
)
=
Δ
(
y
t
−
1
,
x
T
)
+
Δ
(
y
t
,
x
T
)
+
Δ
(
y
t
−
1
,
y
t
,
x
T
)
F(y_{t-1},y_t,x_T)=\Delta(y_{t-1},x_T)+\Delta(y_{t},x_T)+\Delta(y_{t-1},y_{t},x_T)
F(yt−1,yt,xT)=Δ(yt−1,xT)+Δ(yt,xT)+Δ(yt−1,yt,xT)
其中前两项称作状态函数,后项称作转移函数
又因为
Δ
(
y
t
−
1
,
x
T
)
,
Δ
(
y
t
,
x
T
)
\Delta(y_{t-1},x_T),\Delta(y_{t},x_T)
Δ(yt−1,xT),Δ(yt,xT)函数是相同的,这里可以用一个来表示
令:
Δ
(
y
t
−
1
,
y
t
,
x
T
)
=
∑
i
k
λ
i
f
i
(
y
t
−
1
,
y
t
,
x
T
)
\Delta(y_{t-1},y_{t},x_T)=\sum_i^k \lambda_i f_i(y_{t-1},y_{t},x_T)
Δ(yt−1,yt,xT)=∑ikλifi(yt−1,yt,xT)
Δ
(
y
t
,
x
T
)
=
∑
i
l
η
i
g
i
(
y
t
,
x
T
)
\Delta(y_{t},x_T)=\sum_i^l \eta_i g_i(y_{t},x_T)
Δ(yt,xT)=∑ilηigi(yt,xT)
其中:
λ
i
,
η
i
是
参
数
,
f
i
,
g
i
是
特
征
函
数
\lambda_i,\eta_i是参数,f_i,g_i是特征函数
λi,ηi是参数,fi,gi是特征函数
此时原函数可以表示为:
P
(
X
∣
Y
)
=
1
Z
e
x
p
∑
i
k
F
(
y
t
−
1
,
y
t
,
x
T
)
P(X|Y)=\displaystyle\frac{1}{Z}exp \sum_i^k F(y_{t-1},y_t,x_T)
P(X∣Y)=Z1expi∑kF(yt−1,yt,xT)
=
1
Z
e
x
p
∑
i
t
[
∑
i
k
λ
i
f
i
(
y
t
−
1
,
y
t
,
x
T
)
+
∑
i
l
η
i
g
i
(
y
t
,
x
T
)
]
=\displaystyle\frac{1}{Z}exp \sum_i^t[\sum_i^k \lambda_i f_i(y_{t-1},y_{t},x_T)+\sum_i^l \eta_i g_i(y_{t},x_T)]
=Z1expi∑t[i∑kλifi(yt−1,yt,xT)+i∑lηigi(yt,xT)]
使用向量化表示参数,令:
此时原式可表示为:
=
1
Z
(
x
,
λ
,
η
)
e
x
p
∑
i
k
[
λ
T
f
(
y
t
−
1
,
y
t
,
x
T
)
+
η
T
g
(
y
t
,
x
T
)
]
=\displaystyle\frac{1}{Z(x,\lambda,\eta)}exp \sum_i^k[\lambda^T f(y_{t-1},y_{t},x_T)+ \eta^T g(y_{t},x_T)]
=Z(x,λ,η)1expi∑k[λTf(yt−1,yt,xT)+ηTg(yt,xT)]
令:
原式可进一步表示为:
=
1
Z
(
x
,
θ
)
e
x
p
∑
i
k
[
θ
T
H
(
y
t
−
1
,
y
t
,
x
T
)
]
=\displaystyle\frac{1}{Z(x,\theta)}exp \sum_i^k[\theta^T H(y_{t-1},y_{t},x_T)]
=Z(x,θ)1expi∑k[θTH(yt−1,yt,xT)]
三:CRF要解决的问题:
- 求边缘概率 p ( y t ∣ x ) p(y_t|x) p(yt∣x)
- 参数估计 θ = a r g m a x ∏ i = 1 N P ( y i ∣ x i ) \theta=argmax \displaystyle \prod_{i=1}^NP(y^i|x^i) θ=argmaxi=1∏NP(yi∣xi)
首先求边缘概率:
给定
p
(
Y
=
y
∣
X
=
x
)
求
p
(
y
t
=
i
∣
x
)
p(Y=y|X=x) 求 p(y_t=i|x)
p(Y=y∣X=x)求p(yt=i∣x)
应用无向图因式分解公式有:
P
(
Y
∣
X
)
=
∏
i
t
1
Z
ψ
i
(
y
t
−
1
,
y
t
,
x
T
)
P(Y|X)=\displaystyle \prod_i^t \frac{1}{Z}\psi_i(y_{t-1},y_{t},x_T)
P(Y∣X)=i∏tZ1ψi(yt−1,yt,xT)
所以:
p
(
y
t
=
i
∣
x
)
=
∑
y
1
T
∑
y
2
T
.
.
.
∑
y
t
−
1
T
∑
y
t
+
1
T
.
.
.
∑
y
T
T
∏
i
K
ψ
i
(
y
k
−
1
,
y
k
,
x
T
)
p(y_t=i|x)=\displaystyle \sum_{y_1}^T\sum_{y_2}^T... \sum_{y_{t-1}}^T\sum_{y_{t+1}}^T...\sum_{y_T}^T\prod_i^K\psi_i(y_{k-1},y_k,x_T)
p(yt=i∣x)=y1∑Ty2∑T...yt−1∑Tyt+1∑T...yT∑Ti∏Kψi(yk−1,yk,xT)
令:
Δ
左
=
∑
y
1...
t
−
1
T
ψ
1
(
y
0
,
y
1
,
x
T
)
ψ
2
(
y
1
,
y
2
,
x
T
)
.
.
.
ψ
t
−
1
(
y
t
−
2
,
y
t
−
1
,
x
T
)
ψ
t
(
y
t
−
1
,
y
t
,
x
T
)
\Delta 左=\sum_{y_{1...t-1}}^T \psi_1(y_0,y_1,x_T)\psi_2(y_1,y_2,x_T)... \psi_{t-1}(y_{t-2},y_{t-1},x_T)\psi_{t}(y_{t-1},y_t,x_T)
Δ左=∑y1...t−1Tψ1(y0,y1,xT)ψ2(y1,y2,xT)...ψt−1(yt−2,yt−1,xT)ψt(yt−1,yt,xT)
Δ 右 = ∑ y t + 1... T T ψ t + 1 ( y t , y t + 1 , x T ) . . . ψ T ( y T − 1 , y T , x T ) \Delta右=\sum_{y_{t+1...T}}^T\psi_{t+1}(y_t,y_{t+1},x_T)...\psi_T(y_{T-1},y_T,x_T) Δ右=∑yt+1...TTψt+1(yt,yt+1,xT)...ψT(yT−1,yT,xT)
所以有
p
(
y
t
=
i
∣
x
)
=
1
Z
Δ
左
Δ
右
p(y_t=i|x)=\displaystyle \frac{1}{Z}\Delta 左 \Delta右
p(yt=i∣x)=Z1Δ左Δ右
展开 Δ 左 的 求 和 符 号 有 \Delta 左的求和符号有 Δ左的求和符号有
Δ
左
=
∑
y
t
−
1
T
ψ
t
(
y
t
−
1
,
y
t
,
x
T
)
∑
y
t
−
2
T
ψ
t
−
1
(
y
t
−
2
,
y
t
−
1
,
x
T
)
.
.
.
∑
y
1
T
ψ
2
(
y
1
,
y
2
,
x
T
)
∑
y
0
T
ψ
1
(
y
0
,
y
1
,
x
T
)
\Delta 左=\displaystyle \sum_{y_{t-1}}^T\psi_{t}(y_{t-1},y_t,x_T) \sum_{y_{t-2}}^T\psi_{t-1}(y_{t-2},y_{t-1},x_T)... \sum_{y_1}^T\psi_2(y_1,y_2,x_T)\sum_{y_0}^T \psi_1(y_0,y_1,x_T)
Δ左=yt−1∑Tψt(yt−1,yt,xT)yt−2∑Tψt−1(yt−2,yt−1,xT)...y1∑Tψ2(y1,y2,xT)y0∑Tψ1(y0,y1,xT)
同理
Δ
右
=
∑
y
T
T
ψ
T
(
y
T
−
1
,
y
T
,
x
T
)
.
.
.
∑
y
t
T
ψ
t
+
1
(
y
t
,
y
t
+
1
,
x
T
)
\Delta 右=\displaystyle \sum_{y_T}^T\psi_T(y_{T-1},y_T,x_T)...\sum_{y_t}^T\psi_{t+1}(y_t,y_{t+1},x_T)
Δ右=yT∑TψT(yT−1,yT,xT)...yt∑Tψt+1(yt,yt+1,xT)
递推公式:
令
α
t
−
1
(
i
)
=
Δ
左
\alpha_{t-1}(i)=\Delta 左
αt−1(i)=Δ左
则:
α
t
(
j
)
=
∑
j
T
ψ
t
(
y
t
−
1
=
i
,
y
t
=
j
,
x
T
)
α
t
−
1
(
i
)
\alpha_t(j)=\displaystyle \sum_j^T\psi_t(y_{t-1}=i,y_t=j,x_T) \alpha_{t-1}(i)
αt(j)=j∑Tψt(yt−1=i,yt=j,xT)αt−1(i)
同理令:
β
t
−
1
(
i
)
=
Δ
右
\beta_{t-1}(i)=\Delta 右
βt−1(i)=Δ右
则:
β
t
(
j
)
=
∑
j
T
ψ
t
(
y
t
−
1
=
i
,
y
t
=
j
,
x
T
)
β
t
−
1
(
i
)
\beta_t(j)=\displaystyle \sum_j^T\psi_t(y_{t-1}=i,y_t=j,x_T) \beta_{t-1}(i)
βt(j)=j∑Tψt(yt−1=i,yt=j,xT)βt−1(i)
p ( y t = i ∣ x ) = 1 Z α t ( i ) β t ( i ) p(y_t=i|x)=\displaystyle \frac{1}{Z}\alpha_t(i) \beta_t(i) p(yt=i∣x)=Z1αt(i)βt(i)
求参数从略。。。。